模擬鍵盤我們用Keybd_event這個api函數,模擬鼠標按鍵用mouse_event函數.
Keybd_event函數能觸發一個按鍵事件,也就是會產生一個WM_KEYDOWN或WM_KEYUP消息,一般用這兩個消息來模擬一
次按鍵(按鍵的過程是:按下,然后彈起),但是沒有直接用這個函數方便。
Keybd_event共有四個參數:
第一個為按鍵的虛擬鍵值,如回車鍵為vk_return, tab鍵為vk_tab;
第二個參數為掃描碼,一般不用設置,用0代替就行;
第三個參數為選項標志,如果為keydown則置0即可,如果為keyup則設成“KEYEVENTF_KEYUP”;
第四個參數一般也是置0即可。
例如用以下代碼即可實現模擬按下i鍵,其中的$49表示i鍵的虛擬鍵值:
keybd_event($49,0,0,0);
keybd_event($49,0,KEYEVENTF_KEYUP,0);
mouse_event最好配合setcursorpos(x,y)函數一起使用,先定位鼠標,再產生鼠標事件.
mouse_event有五個參數:
第一個為選項標志,為MOUSEEVENTF_LEFTDOWN時表示左鍵按下,為MOUSEEVENTF_LEFTUP表示左鍵松開,向系統發送相應消息;
第二三個參數分別表示x,y相對位置,一般可設為0,0;
第四五個參數並不重要,一般也可設為0,0。
mouse_event的示例代碼:
setcursorpos(20,132);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0); ...
上面的代碼表示鼠標的雙擊,若要表示單擊,用兩個mouse_event即可(一次放下,一次松開)。
注意
不管是模擬鍵盤還是鼠標事件,都要注意還原,即按完鍵要松開,一個keydown對應一個keyup;鼠標單擊 完也要松開, 不然可能影響程序的功能。
例子1:模擬按下'A'鍵
keybd_event(65,0,0,0);
keybd_event(65,0,KEYEVENTF_KEYUP,0);
例子2:模擬按下'ALT+F4'鍵
keybd_event(18,0,0,0);
keybd_event(115,0,0,0);
keybd_event(115,0,KEYEVENTF_KEYUP,0);
keybd_event(18,0,KEYEVENTF_KEYUP,0);
sendmessage模擬鼠標點擊==============================================================
模擬鼠標點擊 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// var ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// procedure TForm1.Button2MouseDown(Sender: TObject; Button: TMouseButton;
◇[DELPHI]發送虛擬鍵值ctrl V |