程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> 用應用程序模擬鍵盤和鼠標按鍵

用應用程序模擬鍵盤和鼠標按鍵

編輯:關於VC++

本文配套源碼

在Windows大行其道的今天,windows界面程序受到廣大用戶的歡迎。對這些程序的操作不外乎兩種,鍵盤輸入控制和鼠標輸入控制。有時,對於繁雜的,或重復性的輸入操作,我們能否通過編制程序來代替手工輸入,而用程序來模擬鍵盤及鼠標的輸入呢?答案是肯定的。這裡主要是通過兩個Windows API函數來實現的。下面以VC++為例來介紹一下如何實現這兩個功能。

模擬鍵盤我們用Keybd_event這個api函數,模擬鼠標按鍵用mouse_event函數。在VC裡調用api函數是 既簡單又方便不過的事了。

首先介紹一下Keybd_event函數。Keybd_event能觸發一個按鍵事件,也就是說回產生一個WM_KEYDOWN 或WM_KEYUP消息。當然也可以用產生這兩個消息來模擬按鍵,但是沒有直接用這個函數方便。Keybd_event共有四個參數,第一個為按鍵的虛擬鍵值,如回車鍵為vk_return,tab鍵為vk_tab。第二個參數為掃描碼,一般不用設置,用0代替就行第三個參數為選項標志,如果為keydown則置0即可,如果為keyup則設成“KEYEVENTF_KEYUP”,第四個參數一般也是置0即可。用如下代碼即可實現模擬按下鍵,其中的XX表示XX鍵的虛擬鍵值,在這裡也就是各鍵對應的鍵碼,如''A''=65

keybd_event(65,0,0,0);

keybd_event(65,0,KEYEVENTF_KEYUP,0); ...

mouse_event最好配合SetCursorPos(x,y)函數一起使用,與Keybd_event類似,mouse_event有五個參數,第一個為選項標志,為MOUSEEVENTF_LEFTDOWN時表示左鍵按下為MOUSEEVENTF_LEFTUP表示左鍵松開 ,向系統發送相應消息。第二三個參數分別表示x,y

相對位置,一般可設為0,0,第四五個參數並不重要,一般也可設為0,0。若要得到Keybd_event和 mouse_event函數的更詳細的用法,可以查閱msdn或delphi幫助。

下面是關於mouse_event的示例代碼:

POINT lpPoint;

GetCursorPos(&lpPoint);

SetCursorPos(lpPoint.x, lpPoint.y);

mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);

mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);

上面的代碼表示鼠標的雙擊,若要表示單擊,用兩個mouse_event即可(一次放下,一次松開)。

注意,不管是模擬鍵盤還是鼠標事件,都要注意還原,即按完鍵要松開,一個keydown對應一個keyup ;鼠標單擊完也要松開,不然可能影響程序的功能。

好了,希望本文能讓你對模擬鍵盤和鼠標按鍵有個初步的了解,如果想更深入的了解可以查閱msdn在 線幫助,並多多動手實踐,也許會對你有很大的幫助。

  1. 上一頁:
  2. 下一頁:
欄目導航
Copyright © 程式師世界 All Rights Reserved