【发布时间】:2012-09-04 00:00:04
【问题描述】:
我们如何在不移动鼠标的情况下使鼠标点击事件发生在某个位置(我的意思是让计算机认为一个位置是用鼠标点击的)用 C++
【问题讨论】:
标签: c++ visual-c++
我们如何在不移动鼠标的情况下使鼠标点击事件发生在某个位置(我的意思是让计算机认为一个位置是用鼠标点击的)用 C++
【问题讨论】:
标签: c++ visual-c++
Windows API 中的SendInput 函数将帮助您入门。方法的定义、输入参数和返回值请看以下链接:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms646310(v=vs.85).aspx
您可以点击页面中的链接了解更多关于函数中使用的结构和数据类型。
更新:
你可以从这样的开始
#include<Windows.h>
int main()
{
INPUT input;
input.type=INPUT_MOUSE;
input.mi.dx=0;
input.mi.dy=0;
input.mi.dwFlags=(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MOVE|MOUSEEVENTF_RIGHTDOWN|MOUSEEVENTF_RIGHTUP);
input.mi.mouseData=0;
input.mi.dwExtraInfo=NULL;
input.mi.time=0;
SendInput(1,&input,sizeof(INPUT));
return 0;
}
这将自动将您的鼠标移动到屏幕的左上角并单击鼠标右键。现在,如果您的意思是在不移动鼠标的情况下单击屏幕上的某个位置,我认为使用 SendInput() 是不可能的。您无需担心移动鼠标,因为您的程序会自行完成。这就是“MOUSEEVENTF_MOVE”标志告诉程序要做的事情。如果不使用标志,则单击将在鼠标的当前位置进行。
【讨论】:
mouse_event() 方法已弃用。你应该避免使用它。您是否按照 INPUT 结构和 MOUSEINPUT 结构的链接进行操作?恐怕您将不得不在我发布链接的页面上进行挖掘和阅读。尝试,你会成功:)
您可以使用SendInput() function 来模拟鼠标点击和键盘敲击:
SendInput 函数在 INPUT 结构中插入事件 串行进入键盘或鼠标输入流。这些事件不 穿插插入其他键盘或鼠标输入事件 由用户(使用键盘或鼠标)或调用 keybd_event, mouse_event,或对 SendInput 的其他调用。
您也可以使用SendMessage() 或PostMessage() 发送按键消息,例如
SendMessage(hWnd, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(mousePosX, mousePosY));
,但它不太可靠。请注意,通过这种方式,您可能还需要稍后发送WM_LBUTTONUP,具体取决于您在应用程序中处理事件的方式。
同时检查this问题,接受的答案非常详细。
【讨论】: