У меня есть программа в Qt5 Windows 10, где я имитирую клики (чтобы помочь другу с инвалидностью с помощью специального устройства). Я использую SendInput. Проблема в том, что когда я имитирую щелчок, чтобы нажать клавишу на виртуальной клавиатуре Windows (osk.exe), она не работает. На самом деле, это работает, но только если я запускаю программу от имени администратора. Тем не менее, я хотел бы, чтобы он работал, даже если программа не запущена с правами администратора.
Какие-либо предложения ?
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);
Других решений пока нет …