用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 表示模拟放开鼠标中键。