发送鼠标单击消息
Send mouse Click message
如何用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"标志告诉程序要做的事情。如果不使用该标志,则单击将发生在鼠标的当前位置。
您可以使用SendInput()
函数来模拟鼠标点击和键盘敲击:
SendInput函数在INPUT结构中插入事件串行地输入到键盘或鼠标输入流中。这些事件不是插入其他键盘或鼠标输入事件通过用户(使用键盘或鼠标)或通过对keybd_event的调用,mouse_event或对SendInput的其他调用。
您也可以使用SendMessage()
或PostMessage()
发送按键信息,例如
SendMessage(hWnd, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(mousePosX, mousePosY));
,但可靠性较差。请注意,通过这种方式,您可能还需要稍后发送WM_LBUTTONUP
,具体取决于您在应用程序中处理事件的方式。
还要检查这个问题,公认的答案非常详细。
相关文章:
- QTreeView幻灯片多选后无法使用单击选择
- WinAPI 在单击第一个对话框上的按钮控件并销毁第一个对话框后创建第二个对话框
- QML TableView 使用 QtQuick.Controls 2 单击行
- ImGui 在单击按钮后冻结
- 有没有办法区分Qt小部件是通过鼠标单击还是通过按表键获得焦点?
- 我想使用此代码单击某个特定窗口,但它无法正常工作
- 如何在QSplashScreen中禁用鼠标单击
- 单击一个按钮后创建一个按钮
- C++鼠标单击时的屏幕截图不起作用
- 我的主窗口在创建时或单击更新区域时是否会收到编辑控件?
- 标签检测鼠标单击 c++
- 如何将我的程序添加到文件和文件夹的macOS右键单击菜单?
- 使用 SFML 在矩形的矢量中查找鼠标单击量
- 当我在CSplitterWnd中单击行分隔符时发送的消息
- 发送鼠标单击消息
- 单击"菜单"时显示消息框未显示在屏幕上
- WM_单击文本框时退出正在发送的消息
- 如果单击“确定”或按enter键,Visual C++消息框的行为会有所不同
- MFC-接收按钮单击消息失败
- 我想在qt中单击(左或右)小部件时显示一条消息