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