사용자 키 누르기를 잡기 위해 간단한 루프를 사용하고 있습니다. 사용자가 특정 키를 누를 때 무한정 반복 것 같은키 누르기 잡기 C++
while (1)
{
for(i = 8; i <= 190; i++)
{
if (GetAsyncKeyState(i) == -32767){
//Do stuff
}
}
}
그러나 분명히, 어떤을 '물건을 할'하고 내가 C에 새로 온 사람으로서 ++는 간단한 입력 좋지 않아 100 %의 CPU를 복용.
내가 뭘 잘못하고 있니? Sleep() 함수를 사용해 보았습니다. (for 루프에 넣으면 키를 누를 수 있습니다. 'while 루프'에 넣으면 CPU가 전혀 낮아지지 않습니다.)
나는 그것이 같은 키 누르기를 잡도록 만들 수 있지만 거의 CPU를 사용하지 마십시오. 트릭을 놓치고 있습니까? 나는 대부분의 프로그램이 keypresses를 잡을 것이고 당신은 100 %를 사용하는 모든 것을 보지 못한다고 확신한다!
고맙습니다.
선형 알고리즘을 사용하여 이것을 수행 할 수 없습니다 ... 프로그램에 리스너를 추가해야합니다. 구글. –
후크를 사용하십시오. 'GetMessage'는 키 이벤트가 발생할 때까지 유휴 상태가됩니다. 더러운 해결책을 위해'Sleep (10); '이나 어떤 것을 루프에 추가하십시오. – chris
이전에는'RegisterHotkey'와'UnregisterHotkey'의 조합을 사용했습니다. 그렇지만 창에 포커스가있을 때 키 누르기 만 감지하기를 원했기 때문에 포커스가 사라지면 'UnregisterHotkey'를 호출하고 포커스가 다시 들어 왔을 때 다시 등록했습니다. 어쩌면이 기능들이 당신을 도울 것입니다. 창이 초점이 맞지 않을 때 바로 가기 키를 등록 취소하지 않으면 다른 응용 프로그램 바로 가기 키가 엉망이 될 수 있습니다. – Marlon