在Windows大行其道的今天windows界面程序受到廣大用戶的歡迎對這些程序的操作不外乎兩種鍵盤輸入控制和鼠標輸入控制有時對於繁雜的或重復性的操作我們能否通過編制程序來代替手工輸入而用程序來模擬鍵盤及鼠標的輸入呢?答案是肯定的這主要是通過兩個API 函數來實現的
下面以Delphi為例來介紹一下如何實現這兩個功能模擬鍵盤我們用Keybd_event這個api函數模擬鼠標按鍵用mouse_event函數大家不用擔心在delphi裡調用api函數是很方便的事
先介紹一下Keybd_event函數Keybd_event能觸發一個按鍵事件也就是說回產生一個WM_KEYDOWN或WM_KEYUP消息當然也可以用產生這兩個消息來模擬按鍵但是沒有直接用這個函數方便Keybd_event共有四個參數第一個為按鍵的虛擬鍵值如回車鍵為vk_return tab鍵為vk_tab第二個參數為掃描碼一般不用設置用代替就行第三個參數為選項標志如果為keydown則置即可如果為keyup則設成KEYEVENTF_KEYUP第四個參數一般也是置即可用如下代碼即可實現模擬按下i鍵其中的$表示i鍵的虛擬鍵值
keybd_event($);
keybd_event($KEYEVENTF_KEYUP);
mouse_event最好配合setcursorpos(xy)函數一起使用與Keybd_event類似mouse_event有五個參數第一個為選項標志為MOUSEEVENTF_LEFTDOWN時表示左鍵按下為MOUSEEVENTF_LEFTUP表示左鍵松開向系統發送相應消息第二三個參數分別表示xy相對位置一般可設為第四五個參數並不重要一般也可設為若要得到Keybd_event和mouse_event函數的更詳細的用法可以查閱msdn或delphi幫助下面是關於mouse_event的示例代碼
setcursorpos();
mouse_event(MOUSEEVENTF_LEFTDOWN);
mouse_event(MOUSEEVENTF_LEFTUP);
mouse_event(MOUSEEVENTF_LEFTDOWN);
mouse_event(MOUSEEVENTF_LEFTUP);
上面的代碼表示鼠標的雙擊若要表示單擊用兩個mouse_event即可(一次放下一次松開)
注意不管是模擬鍵盤還是鼠標事件都要注意還原即按完鍵要松開一個keydown對應一個keyup鼠標單擊 完也要松開 不然可能影響程序的功能
好了希望本文能讓你對模擬鍵盤和鼠標按鍵有個初步的了解如果想更深入的了解其中的奧妙可以查閱詳實的msdn在線幫助並多多動手實踐
From:http://tw.wingwit.com/Article/program/Delphi/201311/25076.html