1

WindowsH 헤더를 사용하여 Microsoft Visual Studio에서 코딩되는 가상 입력이 필요한 프로젝트에서 작업하고 있습니다.C 가상 키보드 입력이 선택적으로 작동합니다.

keybd_event(VkKeyScan('w'), 0, 0, 0); 
keybd_event(VkKeyScan('w'), 0, KEYEVENTF_KEYUP, 0); 

그러나, 가상 입력 만 메모장, 명령 프롬프트, 브라우저 및 다른 응용 프로그램과 같은 일부 프로그램에 의해 인식되고있다 : 나는 keybd_event() 메소드와 VkKeyScan() 메소드를 사용하고이 작업을 수행하려면 텍스트 필드를 사용합니다. 내 프로젝트를위한 가상 입력의 목적은 클라이언트를 사용하여 "w"= start, 'z'= a 버튼 등과 같은 명령으로 변환 된 키보드 입력을받는 "VisualGameBoyAdvance"를 제어하는 ​​것입니다.

텍스트 필드에서 응용 프로그램을 사용할 때 가상 입력이 읽히는 이유는 무엇입니까? windows.h 헤더 파일의 대체 방법이 있습니까? 아니면 헤더에 더 나은 방법이 있습니까?

업데이트 : 나는 가상 입력을 어둠의 힘의 노력으로 사용하는 대체 방법으로 VkKeyScanEx()를 사용하려고 노력해 왔습니다. 입력 로캘 식별자를 지정하는 방법 나는 UTF-8과 en_AU.UTF-8을 사용하려고 노력했지만 행운이 없었다. 이것을 지정하는 방법을 나타내는 차트가 있습니까?

는 또한 전혀 작동하지 않았다 어떤

keybd_event(GetKeyState('w'), 0, 0, 0); 
keybd_event(GetKeyState('w'), 0, KEYEVENTF_KEYUP, 0); 

를 사용하여 시도하고 문제는 게임이 가상 키보드 스트로크를 방지 다이렉트,하지만 실행 된 것이 었습니다

while(1){ 
     /*Sleep(1000); 
     keybd_event(GetKeyState('w'), 0, 0, 0); 
     keybd_event(GetKeyState('w'), 0, KEYEVENTF_KEYUP, 0);*/ 
     // Pause for 5 seconds. 
    Sleep(500); 

    // Set up a generic keyboard event. 
    ip.type = INPUT_KEYBOARD; 
    ip.ki.wScan = 0; // hardware scan code for key 
    ip.ki.time = 0; 
    ip.ki.dwExtraInfo = 0; 

    // Press the "W" key 
    ip.ki.wVk = 0x57; // virtual-key code for the "a" key 
    ip.ki.dwFlags = 0; // 0 for key press 
    SendInput(1, &ip, sizeof(INPUT)); 

    // Release the "A" key 
    ip.ki.dwFlags = KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release 
    SendInput(1, &ip, sizeof(INPUT)); 

    // Exit normally 
    } 

답변

0

시도했습니다. sys에서 게임 권리를 포기함으로써, 그것은 directx를 피하고 잘 작동했습니다 :