是這樣的,只要我打開軟件,就會發送一個按鍵上的信息,比如我按下鍵盤上的K鍵 ,那么打開這個軟件,就會不斷的按下K,就是軟件模擬按下按鍵。
vc模擬鍵盤輸入
keybd_event(VK_LWIN, 0, 0 ,0);
keybd_event('M', 0, 0 ,0);
keybd_event('M', 0, KEYEVENTF_KEYUP ,0);
keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP,0);
方法1:
HWND hwnd=::FindWindow(0,"文檔1"); //假設你要找的窗口標題為“文檔1”
CWnd::FromHandle(hwnd)->SetForegroundWindow();
::PostMessage(hwnd,WM_KEYDOWN, VK_ESCAPE, 0L); //發送ESC按下的鍵盤消息
方法2:這里以向記事本程序發送Ctrl+s按鍵消息為例:
CWnd *pWnd = FindWindow("Notepad", NULL);
if (pWnd->GetSafeHwnd())
{
pWnd->ShowWindow(SW_NORMAL);
pWnd->SetForegroundWindow();
keybd_event(VK_CONTROL, 0, 0, 0);
keybd_event('S', 0, 0, 0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
keybd_event('S', 0, KEYEVENTF_KEYUP, 0);
} 對于其他程序,關鍵就是要找到就收消息的窗口句柄。
::mouse_event(1) 模擬鼠標動作API函數mouse_event,它可以實現模擬鼠標按下和放開等動作。
VOID mouse_event(
DWORD dwFlags, // 鼠標動作標識。
DWORD dx, // 鼠標水平方向位置。
DWORD dy, // 鼠標垂直方向位置。
DWORD dwData, // 鼠標輪子轉動的數量。
DWORD dwExtraInfo // 一個關聯鼠標動作輔加信息。
);
其中,dwFlags表示了各種各樣的鼠標動作和點擊活動,它的常用取值如下:
MOUSEEVENTF_MOVE 表示模擬鼠標移動事件。
MOUSEEVENTF_LEFTDOWN 表示模擬按下鼠標左鍵。
MOUSEEVENTF_LEFTUP 表示模擬放開鼠標左鍵。
MOUSEEVENTF_RIGHTDOWN 表示模擬按下鼠標右鍵。
MOUSEEVENTF_RIGHTUP 表示模擬放開鼠標右鍵。
MOUSEEVENTF_MIDDLEDOWN 表示模擬按下鼠標中鍵。
MOUSEEVENTF_MIDDLEUP 表示模擬放開鼠標中鍵。
|