Я написал программу Qt, которая отправляет события мыши на Windows с помощью SendEvent. Вот код, который я нашел, который отлично работает. Эти события go до «Верхнего окна» на экране в самый раз. Теперь мне нужно переместить эту программу в Linux.
Насколько я понимаю, Qt App функционирует как QCoreApplication :: postEvent go событие только текущего приложения l oop, так что это не решит моя проблема. Мне нужно отправить событие в верхнее окно на экране в то время. Вот что я использую на Windows.
Также было бы полезно получить указатели на то, как обусловить код для Windows / Linux.
Спасибо.
void MainWindow::mouseClick()
{
INPUT Inputs[3];
Inputs[0] = {}; // probably a better way to zero out this array
Inputs[1] = {};
Inputs[2] = {};
Inputs[0].type = INPUT_MOUSE;
// I'm not clear on coords that this uses, but 500 is not very far,
// so use 2000. Clearly it's not pixels.
Inputs[0].mi.dx = 2000; // desired X coordinate
Inputs[0].mi.dy = 2000; // desired Y coordinate
Inputs[0].mi.dwFlags = MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE;
Inputs[1].type = INPUT_MOUSE;
Inputs[1].mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
Inputs[2].type = INPUT_MOUSE;
Inputs[2].mi.dwFlags = MOUSEEVENTF_LEFTUP;
SendInput(3, Inputs, sizeof(INPUT));
}