C 模擬滑鼠移動與點選

2022-05-06 09:54:10 字數 2595 閱讀 9383

我們需要用到的mouse_event函式,位於user32.dll這個庫檔案裡面,所以我們要先宣告引用。

[system.runtime.interopservices.dllimport("user32")] 

private static extern int mouse_event(int dwflags, int dx, int dy, int cbuttons, int dwextrainfo);

//移動滑鼠

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;

dwflags:標誌位集,指定點選按鈕和滑鼠動作的多種情況。此引數裡的各位可以是下列值的任何合理組合:

dx:指定滑鼠沿x軸的絕對位置或者從上次滑鼠事件產生以來移動的數量,依賴於mouseeventf_absolute的設定。給出的絕對資料作為滑鼠的實際x座標;給出的相對資料作為移動的mickeys數。乙個mickey表示滑鼠移動的數量,表明滑鼠已經移動。

dy:指定滑鼠沿y軸的絕對位置或者從上次滑鼠事件產生以來移動的數量,依賴於mouseeventf_absolute的設定。給出的絕對資料作為滑鼠的實際y座標,給出的相對資料作為移動的mickeys數。

dwdata:如果dwflags為mouseeventf_wheel,則dwdata指定滑鼠輪移動的數量。正值表明滑鼠輪向前轉動,即遠離使用者的方向;負值表明滑鼠輪向後轉動,即朝向使用者。乙個輪擊定義為wheel_delta,即120。

如果dwflagss不是mouseeventf_wheel,則dwdata應為零。

dwextralnfo:指定與滑鼠事件相關的附加32位值。應用程式呼叫函式getmessageextrainfo來獲得此附加資訊。

返回值:無。

程式中我們直接呼叫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 鍵的虛擬鍵值:

模擬滑鼠點選事件

今天上12306購票,可被氣得不輕,首先登陸人數受到了限制,其次買到票還有個排隊等待神馬的,先不說裡頭有沒有貓膩,電腦直接操作的,需要等待30分鐘以上嗎?神馬查詢語言要執行30分鐘才能得到個結果出來?贊同網上的言論 相比較而言,之前的搶票更能接受一些 上面是tackbar,用於隨時調整點選的時間間隔...

MFC模擬滑鼠點選

mfc 工程 把以下 放到你想要響應的函式裡面就行 cpoint pt getcursorpos pt 獲取滑鼠在螢幕的當前位置 setcursorpos 100,200 移動到某點座標 mouse event mouseeventf rightdown,0,0,0,0 點下右鍵 mouse eve...

MFC模擬滑鼠點選

mfc 工程 把以下 放到你想要響應的函式裡面就行 cpoint pt getcursorpos pt 獲取滑鼠在螢幕的當前位置 setcursorpos 100,200 移動到某點座標 mouse event mouseeventf rightdown,0,0,0,0 點下右鍵 mouse eve...