2012-05-05 4 views
2

SendInput을 사용하여 키 누름을 보내는이 코드가 있지만 길게 키를 누르고 싶을 때 작동하지 않습니다 (예 : 'a'를 길게 누르면 'aaaaaaaaa '메모장에서).SendInput이 보류 키 C++에서 작동하지 않습니다.

이제 Google을 둘러 보았습니다.이 문제를 해결하기 위해 볼 수있는 유일한 방법은 오랫동안 기다렸다가 입력을 계속 보내는 것입니다. 나는 이것이 'a'를 반복해서 반복해서 시뮬레이션 할 것이기 때문에 그렇게하고 싶지 않습니다. 내가 바로이 사용 SendInput을 주위에 방법이없고 왜 홀드 기능이 작동하지 않습니다 생각하는 건가요

A) :

keyboard.wVk = 0; 
keyboard.wScan = MapVirtualKey(key, 0); 

keyboard.dwFlags = KEYEVENTF_SCANCODE; 

if (index_vector_no) 
    pressed[index_vector_no] = true; 

keyboard.dwExtraInfo = 0; 

input.type = INPUT_KEYBOARD; 
input.ki = keyboard; 

SendInput(1, &input, sizeof (input)); 

그래서 나는 다음과 같은 질문에 어떤 대답을 하시겠습니까?

B) 키 다운 및 키 업 신호를 성공적으로 전송할 수있는 대체 방법은 무엇입니까? 가급적 특정 응용 프로그램뿐만 아니라 Windows에 키를 보내는 것이 좋습니다.

C) 글로벌 키보드 및 마우스 시뮬레이션을 처리 할 수있는 우수한 경량 C++ 라이브러리가 있습니까?

미리 감사드립니다. =)

편집 : 내 문제의 자세한 내용은이 게시물에 대해 살펴 보자 http://www.experts-exchange.com/Programming/Languages/Visual_Basic/Q_20833788.html

+0

Windows 용입니까? VC++를 사용하고 있습니까? –

+0

여러 번 누를 때의 시뮬레이션 문제는 무엇입니까? 내가 생각할 수있는 유일한 이유는 그 차이가 ... 창구 일 것입니다. – chris

+0

예. Windows에 있습니다. 그리고 난 그냥. Cpp 파일 엔딩과 함께 일반 C++을 사용하고있다. 나는 그것이 차이를 만드는 경우 MinGW 컴파일러를 사용하고 있습니다! @Chris 이것은 게임을 제어하기위한 것이므로 앞으로 갑자기 움직이는 사람과 만날 것입니다. 감사합니다.) – geekman92

답변

3

반복 키 입력하는 것이 아니라 Windows 또는 SendInput을의 키보드 컨트롤러의 기능입니다. 타이머를 사용하여 확실히 에뮬레이트 할 수 있으며 SendInput()을 반복적으로 호출합니다.

+0

hmmm ... 얼마나 빨리 문자가 반복 되는가에 대한 제한을 집어 넣을 수 있습니까? 키보드가 보내는 입력 중 일부만 무시합니까? – geekman92

+0

Windows는 키보드 컨트롤러 구성을 변경할 수 있지만 양방향 연결입니다. 제어판의 키보드 애플릿에서 가장 명확합니다. 실제로 키보드와 가짜 입력을 사용하지 않으려는 경우에는 적합하지 않습니다. –

+0

괜찮아요, 저를 위해서 몇 가지를 정리했습니다! 감사! =) – geekman92

관련 문제