Я пытаюсь сделать простую программу для ботов для игры. Я хочу, чтобы это работало, даже когда игра не в фокусе или свернута. Из-за этого я не могу использовать SendInput(), так как он имитирует глобальные события. Я понял, что для того, чтобы это работало, я должен использовать функцию PostMessage(). Я сделал тестовую программу, имитирующую ввод в Блокноте:
#include <Windows.h>
HWND handle = FindWindow(NULL,CStringW("Untitled - Notepad"));
HWND edit = FindWindowEx(handle, NULL, CStringW("Edit"), NULL);
PostMessage(edit, WM_CHAR, 'a', 0 );
Этот пример успешно имитирует щелчок «a» в блокноте, даже если блокнот не в фокусе или свернут. Точно так же я заставил работать события мыши.
Однако, когда я пытаюсь сделать то же самое для своей игры, я не могу опубликовать команды щелчка. После расследования я обнаружил, что исходный дескриптор получен, но при вызове FindWindowEx() разрешение отказано, и дескриптор не возвращается.
Есть ли способ получить доступ «редактировать» к другому процессу, если он блокирует эту функцию?