【问题标题】:Windows c++ simulate click adminwindows c++模拟点击admin
【发布时间】:2017-03-27 20:09:09
【问题描述】:

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

有什么建议吗?

【问题讨论】:

  • 为什么绝对需要它在受限权限下运行?
  • 看起来你必须是管理员才能运行它,所以除了以管理员权限运行它之外可能没有其他解决方案。
  • @Ceros 因为我希望其他没有计算机管理员权限的人使用该程序。
  • 一定要使用 SendInput 吗?
  • @picklechips 不,我可以通过 Qt 使用任何在 Windows 上工作的东西

标签: c++ click simulate


【解决方案1】:

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

编辑:另一个值得尝试的 sn-p:

#include <windows.h>

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

【讨论】:

  • 我会试试的。你认为即使程序没有以管理员身份运行它也会起作用?
  • 据我所知,这不需要管理员权限。
  • 我刚刚意识到这可能行不通,因为 Windows 虚拟键盘是一个外部应用程序。不过值得一试。
  • 谢谢。管理员权限不是使用 SendInput,而是能够单击 Windows 虚拟键盘 (osk.exe)。无论如何,我会尝试并回复你。谢谢
  • 是的,我想我已经尝试过 QMouseEvents,但我只能在 Qt 窗口中单击,而在其他窗口中则不能。
猜你喜欢
  • 1970-01-01
  • 2016-05-10
  • 1970-01-01
  • 2012-07-26
  • 1970-01-01
  • 2021-01-04
  • 2018-01-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多