滑鼠移動/點選事件
阿新 • • 發佈:2019-01-31
這個函式在user32.dll這個庫檔案裡面。我們可以在C:\WINDOWS\system32(XP系統)這個目錄下找到這個檔案,他是系統自帶的。 我們以C#直接呼叫這個檔案中的API為例子來說下怎麼進行滑鼠操作,首先在我們C#中宣告引用,如果是一個基於From的程式,這個宣告的位置寫在你的From class就可以了
[System.Runtime.InteropServices.DllImport("user32")]private static extern int mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
引數 意義
dwFlags Long,下表中標誌之一或它們的組合
dx,dy Long,根據MOUSEEVENTF_ABSOLUTE標誌,指定x,y方向的絕對位置或相對位置
cButtons Long,沒有使用
dwExtraInfo Long,沒有使用
dwFlags常數 意義
const int MOUSEEVENTF_MOVE = 0x0001; 移動滑鼠
const int MOUSEEVENTF_LEFTDOWN = 0x0002; 模擬滑鼠左鍵按下
const int MOUSEEVENTF_LEFTUP = 0x0004; 模擬滑鼠左鍵擡起
const int MOUSEEVENTF_RIGHTDOWN = 0x0008; 模擬滑鼠右鍵按下
const int MOUSEEVENTF_RIGHTUP = 0x0010; 模擬滑鼠右鍵擡起
const int MOUSEEVENTF_MIDDLEDOWN = 0x0020; 模擬滑鼠中鍵按下
const int MOUSEEVENTF_MIDDLEUP = 0x0040; 模擬滑鼠中鍵擡起
const int MOUSEEVENTF_ABSOLUTE = 0x8000; 標示是否採用絕對座標
程式中我們直接呼叫mouse_event函式就可以了
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 500, 500, 0, 0);
1、這裡是滑鼠左鍵按下和鬆開兩個事件的組合即一次單擊:
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 )
2、模擬滑鼠右鍵單擊事件:
mouse_event (MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0 )
3、兩次連續的滑鼠左鍵單擊事件 構成一次滑鼠雙擊事件:
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 )
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 )
4、使用絕對座標
MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 500, 500, 0, 0
需要說明的是,如果沒有使用MOUSEEVENTF_ABSOLUTE,函式預設的是相對於滑鼠當前位置的點,如果dx,和dy,用0,0表示,這函式認為是當前滑鼠所在的點。5、直接設定絕對座標並單擊
mouse_event(MOUSEEVENTF_LEFTDOWN, X * 65536 / 1024, Y * 65536 / 768, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, X * 65536 / 1024, Y * 65536 / 768, 0, 0);
其中X,Y分別是你要點選的點的橫座標和縱座標
而鍵盤模擬用 Keybd_event()
Keybd_event能觸發一個按鍵事 件,也就是說回產生一個WM_KEYDOWN或WM_KEYUP訊息。當然也可以用產生這兩個訊息來模擬按鍵,但是沒有直接用這個函式方便。 Keybd_event共有四個引數,第一個為按鍵的虛擬鍵值,如回車鍵為vk_return, tab鍵為vk_tab。第二個引數為掃描碼,一般不用 設定,用0代替就行。第三個引數為選項標誌,如果為keydown則置0即可,如果為keyup則設成“KEYEVENTF_KEYUP”,第四個引數一 般也是置0即可。用如下程式碼即可實現模擬按下i鍵,其中的 49 表示 i 鍵的虛擬鍵值: