Эмуляция мыши с помощью контроллера Xbox 360 - PullRequest
2 голосов
/ 01 ноября 2011

Я пишу небольшую программу для эмуляции мыши с моим контроллером Xbox 360. Я успешно реализовал движение курсора, но столкнулся с трудностями при нажатии.

Вот фрагмент моего кода:

while (msg.message != WM_QUIT) {
    if (PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE)) {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    } else {

        ...           

        if (state.Gamepad.wButtons & XINPUT_GAMEPAD_A) {
            PostMessage(HWND_BROADCAST, WM_LBUTTONDOWN, 0, MAKEWORD(new_x, new_y));
        }

        ...       
    }
}

Я не уверен на 100%, что это правильный подход, но я пытаюсь отправить сообщение WM_LBUTTONDOWN всем окнам верхнего уровня, когда нажата кнопка A . Но когда я помещаю курсор мыши, скажем, на кнопку и нажимаю A , кнопка мигает, как если бы она была нажата, но тогда ничего не происходит.

Если кто-нибудь может указать мне правильное направление или предложить альтернативный способ сделать это, я был бы очень признателен!

1 Ответ

2 голосов
/ 01 ноября 2011

Я думаю, что вместо PostMessage вы бы предпочли использовать mouse_event API или даже SendInput . Позволяет синтезировать события мыши на более абстрактном уровне.

...