用VC开发一个模拟键盘按键信息的软件

是这样的,只要我打开软件,就会发送一个按键上的信息,比如我按下键盘上的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 表示模拟放开鼠标中键。

 

 

sitemap