Я посылаю нажатие клавиши в фоновый процесс. Это работает, если на переднем плане, но не на заднем плане

Я пишу бот, который должен работать на исполняемом фоне.

SendMessage(hWnd, WM_KEYDOWN, ((IntPtr)k), (IntPtr)0);

Строка выше отправит ключ процессу. Если мой курсор находится в окне чата игры, он будет вводить данные в окне чата.

Если я не нахожусь в окне чата и отправляю это, он ничего не будет делать, пока я не переключусь на процесс, в котором он действует, как будто я удерживаю эту клавишу (я буду идти в направлении клавиши, которую я держу), пока я не нажму ключ, который я послал ('s' - это тестовый ключ, который я использую), где он остановится. Я также попытался отправить сообщение сразу после использования флага WM_KEYUP, но это ничего не остановило.

SetForegroundWindow (hWnd);
SendMessage(hWnd, WM_KEYDOWN, ((IntPtr)k), (IntPtr)0);

Этот сегмент нацелен на процесс и начнет движение.

Я был по всему Интернету, пытаясь выяснить, как заставить это работать в фоновом режиме, а также отправить только 1 вход. Я бездельничал с spy++, но я подумал, что если он работает, когда я отправляю команду, когда меня вкладывают, это должно быть что-то еще.

Вот полный класс, с которым я работаю http://pastebin.com/Jbx9BfSm

1 ответ

Вам нужно установить сфокусированное окно после того, как всплывающая форма выведена на передний план. Сфокусированное окно может быть кнопкой, списком и т. Д.

Фокус и активация окна в Win32

введите описание изображения здесь

Другие вопросы по тегам