Windows c ++模拟点击管理员

时间:2017-03-27 20:09:09

标签: c++ click simulate

我在Qt5 Windows 10中有一个程序,我在其中模拟点击(通过特殊设备帮助残疾朋友)。我使用SendInput。问题是,当我模拟单击按下Windows虚拟键盘(osk.exe)上的某个键时,它不起作用。事实上,它只有在我以管理员身份运行程序时才有效。但是,即使程序没有以管理员身份运行,我也希望它能够正常工作。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

Qt拥有您模拟输入所需的一切,因此您无需使用SendInput

首先,创建一个QMouseEvent,然后调用QCoreApplication::postEvent

实现取决于您想要模拟的内容,但您的代码看起来像这样:

// Pos is the position of the click
QMouseEvent *me = new QMouseEvent(QEvent::MouseButtonPress, pos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);

QCoreApplication::postEvent(reciever, me); // Where reciever is a QObject handling the event

编辑:另一个值得尝试的代码:

#include <windows.h>

QApplication::desktop()->cursor().setPos(globalX,globalY);
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 1, 1, 0, 0);