匯東網


模拟鼠标键盘消息

[編輯] [转简体]
|
作者:huidong | 分類:【編程】Win32
[ 9 瀏覽 0 評論 0 贊 0 踩 ]

概要
控制鼠标位置,模拟鼠标按下、松开(点击),模拟键盘按下

正文

鼠标

函数:mouse_event();

函数原型:mouse_event(DWORD dwFlag,DWORD dx, DWORD dy, DWORD dwData, ULONG_PTR dwExtraInfo );


//把鼠标移动到坐标为50,130的位置
SetCursorPos(50,130);
//按下鼠标,并释放
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);


  • MOUSEEVENTF_MOVE:表明发生移动。

  • MOUSEEVENTF_LEFTDOWN:表明接按下鼠标左键。

  • MOUSEEVENTF_LEFTUP:表明松开鼠标左键。

  • MOUSEEVENTF_RIGHTDOWN:表明按下鼠标右键。

  • MOUSEEVENTF_RIGHTUP:表明松开鼠标右键。

  • MOUSEEVENTF_MIDDLEDOWN:表明按下鼠标中键。

  • MOUSEEVENTF_MIDDLEUP:表明松开鼠标中键。

  • MOUSEEVENTF_WHEEL:在Windows NT中如果鼠标有一个轮,表明鼠标轮被移动。移动的数量由dwData给出。


原文 https://www.cplusplus.me/1366.html


封装:

// 鼠标点击某一位置
void ClickAt(int x, int y)
{
    SetCursorPos(x, y);
    mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
    mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
}


键盘

keybd_event函数模拟WM_KEYUP或WM_KEYDOWN消息。


例子1:模拟按下'A'键

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

 

例子2:模拟按下'ALT+F4'键

keybd_event(18,0,0,0);
keybd_event(115,0,0,0);
keybd_event(115,0,KEYEVENTF_KEYUP,0);
keybd_event(18,0,KEYEVENTF_KEYUP,0);


键值表 https://docs.microsoft.com/zh-cn/windows/win32/inputdev/virtual-key-codes?redirectedfrom=MSDN

原文 https://www.cnblogs.com/shenbing/p/5964675.html



[ 0] [ 0]


 評論區  0 條評論

+ 添加評論