[C++ нужен совет] Нажимать на клавивтуру програмно

capxaH

А для полного щастья еще и управление мышью.
Посоветуйте библиотеку на с++. Желательно кроссплатформенную.
Беглый поиск привет к QEvent. но непонятно как соощение чужой программе послать.
( То есть хочу например в браузер мышкой тыкнуть, адрес написать и нажать Enter. И все это програмно)
А теперь самое интересное. Есть подозрение что все эти команды умеет выполнять стандартный голубозубый драйвер. Если кто знает как через него все это сделать было б просто чудесно.

tima56

Я знаю. Правда не через голубозубый, и не кроссплатформенно %). В ПМ.

Devid

Если знаешь координаты поля ввода на экране - вызываешь соответсвующую виндовую функцию, которая кликает в эту точку.
Если знаешь hwnd поля ввода - посылаешь ему нужный WM_.
Очевидно, это для винды.

capxaH

Видимо кроссплатформенность здесь слишком жесткое требование. Пускай будет винда
А можно пример кода( ну или где почитать? )
Как например определить на какое окно я ткнул мышкой?
Дело в том что еще древние телефоны SE такое умели. Никакой дополнительный софт на компе не требуя.

stm6692945

я в яве знаю как сделать

Devid

WindowFromPoint даст тебе hwnd окна. Потом посылаешь ему нужное оконное сообщение о клике мышкой или нажатии клавиши.

capxaH

Под винду без голубогозуба оказалось все совсем просто.
если кому еще интересно

#include <windows.h>

int main(int argc, char* argv[])
{
const int command_count = 4;
INPUT inp[command_count];
memset(inp, 0, sizeof(inp;

inp[0].type = INPUT_KEYBOARD;
inp[0].ki.wVk = VK_VOLUME_MUTE; // выключаем на всякий случай звук

inp[1].type = INPUT_MOUSE;
inp[1].mi.dwFlags = MOUSEEVENTF_LEFTDOWN; // нажатие левой кнопки
inp[2].type = INPUT_MOUSE;
inp[2].mi.dwFlags = MOUSEEVENTF_LEFTUP; // отпускание левой кнопки

inp[3].type = INPUT_KEYBOARD;
inp[3].ki.wVk = 0x46; // пишем букву f
int res = SendInput(command_count, inp, sizeof(INPUT;
return 0;
}

SPARTAK3959

Главное не думай, что будет с приложениями, использующими DirectInput и тому подобные вещи.

elenangel

обычно программы такого рода пишут чтобы приделать какой-либо костыль к конкретной известной программе. так что универсальность скорее всего не нужна.
Оставить комментарий
Имя или ник:
Комментарий: