2017-12-18 12 views
-2

에 누를 경우 내가 가상 키 및 수신이 C++ 기능을 가지고 그것을 유지 /를 눌러 키 자료 :C++ : 키 누름 시뮬레이션 및 Windows

void SendKey (WORD wVk, bool press) { 
    keybd_event(wVk, 0, press? 0 : KEYEVENTF_KEYUP, 0); 
} 

그러나 단지 키 1 번을 눌러 않습니다를, 끊임없이 기대했던대로.

나는 조이패드 시뮬레이션을 구성하고, 그래서, 나는이 cmd를 키와 유형 (아래, 또는를 눌러 자료)에 의해 읽고 조금 C++ 과정 각각에서 KeyDown과의 keyup을 구성해야합니다

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

using namespace std; 

void SendKey (WORD wVk, bool press) { 
    keybd_event(wVk, 0, press? 0 : KEYEVENTF_KEYUP, 0); 
} 

void PressKey (WORD wVk) { 
    SendKey(wVk, true); 
    Sleep(30); 
    SendKey(wVk, false); 
} 

int main() { 
    int key; 
    char type; 

    while(true) { 
     cin >> key; 
     cin >> type; 

     if(key == 0) break; 
     if(type == 'd') SendKey((WORD) key, true); 
     if(type == 'r') SendKey((WORD) key, false); 
     if(type == 'p') PressKey((WORD) key); 
    } 

    return 0; 
} 

누구든지 비슷한 것을 만들었 으면 고맙습니다.

+0

키를 한 번 읽은 다음 키가 d, r 또는 p인지 확인하십시오. 무엇을 기대합니까? –

+0

안녕하세요, 이것은 자식 프로세스입니다. 그래서 NodeJS 프로세스가 standar 출력을 통해 키를 시뮬레이션 할 것입니다. 무한 루프가있는 이유는 무엇입니까? –

답변

0

원하는 키 반복마다 키 이벤트를 보내야합니다. 자동 반복적으로 발생하지는 않습니다. 실제 키보드 드라이버가 초기 지연 후에 반복되는 키 이벤트를 보내는 것과 같습니다.

+0

안녕하세요, 답장을 보내 주셔서 감사합니다. 그것을 좋아해, 나는 키보드의 "자연스러운"지연을 검색 할 것이다. –