2016-06-07 4 views
-1

그래서 저는 키팅 시뮬레이터를 가지고 있습니다. 2 초마다 키 "W"를 누릅니다. 그러나 'WASD'키를 사용하는 게임에서 테스트하고 있습니다. 프로그램을 실행하고 게임을 실행하면 캐릭터가 움직이지 않습니까? 나는 W 키를 물리적으로 움직여야한다. 어떤 아이디어? 여기 게임에서의 키 누르기 시뮬레이션 [C++]

내 코드입니다 :

#include <iostream> 
#define WINVER 0x0500 
#include <windows.h> 

class KeyBot { 
    private: 
     INPUT _buffer[1]; 

    public: 
     KeyBot(); 
     void KeyUp(char key); 
     void KeyDown(char key); 
     void KeyClick(char key); 
}; 

KeyBot::KeyBot() { 
    _buffer->type = INPUT_KEYBOARD; 
    _buffer->ki.wScan = 0; 
    _buffer->ki.time = 0; 
    _buffer->ki.dwExtraInfo = 0; 
} 

void KeyBot::KeyUp(char key) { 
    _buffer->ki.wVk = key; 
    _buffer->ki.dwFlags = KEYEVENTF_KEYUP; 
    SendInput(1, _buffer, sizeof(INPUT)); 
} 

void KeyBot::KeyDown(char key) { 
    _buffer->ki.wVk = key; 
    _buffer->ki.dwFlags = 0; 
    SendInput(1, _buffer, sizeof(INPUT)); 
} 

void KeyBot::KeyClick(char key) { 
    KeyDown(key); 
    Sleep(10); 
    KeyUp(key); 
} 

int main() { 
    KeyBot bot; 

    while (1) { 

    bot.KeyDown(0x57); //Press and hold 'W' 
    Sleep(2000); // Wait 2000 ms (2 seconds) 
    bot.KeyUp(0x37); 
    } 
} 
+0

아마도 입력을 실제로 처리하는 코드가 필요합니다. –

+0

@ AurelBílý 무엇을 의미합니까? 이것은 내가 가지고있는 유일한 코드입니다. – thetester2

+0

@ AurelBílý 게임을하기 위해서는 그 입력을 게임에 보내야합니까? 죄송합니다. 프로그래밍이 처음이었습니다. – thetester2

답변

2

This thread 비슷한 문제를 설명 - 다이렉트 입력 처리가 정상 스캔 코드를 무시하는 것; dinput.h DirectX 헤더에서 DIK_ 변형을 사용해보십시오.

관련 문제