Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Visual C++ / MFC / WTL > Нажать на кнопку в приложении


Автор: MaIron 26.09.17, 14:58
Тема стара, но подниму её снова.

Задача такая, есть несколько приложений работающих в фоновом режиме, приложения сами на MFC - обычный диалог, но с динамическим содержимым, вывод биржевых графиков от сторонних разработчиков.
Нужно одновременно в каждом перемещать мышь и нажимать на кнопки. Ключевое слово одновременно.

Есть классический пример не работает вообще.
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
        PostMessage(hWnd, WM_MOUSEMOVE, 0, MAKELPARAM(x, y));
        PostMessage(hWnd, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(x, y));
        PostMessage(hWnd, WM_LBUTTONUP, MK_LBUTTON, MAKELPARAM(x, y));

В PreTranslateMessage сообщения приходят, отлавливаются, но само содержимое не реагирует на них.

Второй вариант:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    INPUT input;
    input.type = INPUT_MOUSE;
    input.mi.dx = 10;
    input.mi.dy = 10;
    input.mi.dwFlags =( MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MOVE|MOUSEEVENTF_LEFTDOWN|MOUSEEVENTF_LEFTUP);
    input.mi.mouseData = 0;
    input.mi.dwExtraInfo=NULL;
    input.mi.time=10;
    SendInput(1, &input, sizeof(INPUT));

Работает, но это по сути просто отправка команд перемещения устройства на блок обработки ввода операционной системы.
Запустить это сразу для двух приложений невозможно.

Вопрос, возможно ли реализовать, что-то вроде SendInput, но что бы команды передавались только выбранному приложению или внутри приложения.
Или же такой вариант невозможен в принципе. Это тоже будет результатом.

Автор: ter_nk_ 27.09.17, 07:53
По-моему невозможно, не могут же два приложения одновременно быть активными (фокус).

Автор: MaIron 27.09.17, 08:16
Цитата ter_nk_ @
По-моему невозможно, не могут же два приложения одновременно быть активными (фокус).

Т.е. получается стандартным методом никак.

Автор: ter_nk_ 27.09.17, 08:25
Цитата MaIron @
Т.е. получается стандартным методом никак.


По-моему никак. Я бы наверное думал в сторону как в каждом конкретном приложении создавать свою "псевдомышь" - курсор и отрисовывать ее поверх этого окна.

Автор: ЫукпШ 27.09.17, 12:56
Цитата MaIron @
Нужно одновременно в каждом перемещать мышь и нажимать на кнопки. Ключевое слово одновременно.

А что важнее - нажимать на кнопки или перемешать мышь ?
Или запускать обработчик нажатой кнопки из стороннего приложения ?

Автор: MaIron 27.09.17, 18:41
Важнее перемещать мышь с нажатой кнопкой.

Автор: MaIron 03.10.17, 13:44
Вопрос остался нерешенным. Но актуальность потерял. Так, что закрываю тему.

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)