Миллион лет назад я создал программу, которая будет играть WinMine (Windows MineSweeper) для меня.
Это включало
- (а) Получить HWND окна с заголовком «Сапер»
- (б) Вызов setWindowForeground на нем
- (с) Открытие памяти процесса и считывая некоторые данные о том, что соответствует текущему состоянию игры.
- (d) изучение этой памяти, чтобы определить количество и положение мин
- (е) Перемещение мыши в центр каждой «безопасной» плитки перед отправкой левой кнопкой вниз, затем лево- button up message
Игра может быть успешно завершена в течение 100% времени менее чем за 1 секунду - оставшаяся время составляющая высокого балла всегда была такой же, как и общее время, необходимое для решения проблемы. Для ударов я также добавил код, который бы установил игровое поле в 1-битное изображение - каждая ячейка была в безопасности или нет.
Как бы то ни было, для меня работает следующий код: он просто прокручивает этот блок после ввода на 4 строки.
Если он запущен в режиме отладки или с видимым окном консоли - события проглатываются им, поскольку это окно переднего плана. Я запустил этот код без окна. Редактирование кода с последующим ударом сборки, прежде чем переключиться обратно в это окно, в то время как строение кода привело к прокрутке этого окна ввода.
#include <windows.h>
#include <winuser.h>
const int minWheelMovement = 120;
int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nCmdShow)
{
HWND foregroundWindow;
foregroundWindow = GetForegroundWindow();
mouse_event(MOUSEEVENTF_WHEEL, 0,0,4*minWheelMovement, 0);
}
Вы пытаетесь отправить это сообщение в другое приложение? Если это так, ваш вопрос лучше подумать как «Как получить hwnd определенного окна?» Вы можете использовать SendInput, когда у вас есть этот hwnd для _correctly_ имитировать активность пользовательского ввода-устройства (материал мыши, клавиатура и т. Д.). – enhzflep
Что означает «текущее окно»? –
Когда я использую фазу «текущее окно», я имею в виду любое окно, открытое пользователем ноутбука. Прокрутка мыши контролируется с помощью веб-камеры, используя особый жест. Я не уверен, как получить имя открытого окна для перехода к параметру hwnd ?? – Sade