0
CTRL + 숫자를 시뮬레이트하려고합니다. 키보드 테스트 프로그램 (PassMark KeyboardTest)을 사용하여 코드를 확인했는데 NumENTER를 눌렀지만 놓지 않은 것으로 보입니다. KEYEVENTF_EXTENDEDKEY를 사용하지 않으면 모든 것이 relesaed되지만 정상적인 Return을 얻습니다.KEYEVENTF_EXTENDEDKEY를 사용하면 KEYEVENTF_KEYUP이 작동하지 않습니다.
INPUT *ip = new INPUT[2]; // set up input 1
(ip)->type = INPUT_KEYBOARD; // set up keyboard event
(ip)->ki.wScan = 0;
(ip)->ki.time = 0;
(ip)->ki.dwExtraInfo = 0;
(ip)->ki.wVk = VK_CONTROL; // set ip[0] to CTRL
(ip)->ki.dwFlags = 0;
Sleep(100);
(ip+1)->type = INPUT_KEYBOARD; // set up keyboard event
(ip+1)->ki.wScan = 0;
(ip+1)->ki.time = 0;
(ip+1)->ki.dwExtraInfo = 0;
(ip+1)->ki.wVk = VK_RETURN; // set ip[1] to ENTER
(ip+1)->ki.dwFlags = KEYEVENTF_EXTENDEDKEY; // make ENTER to NumENTER
Sleep(100);
SendInput(2, ip, sizeof(INPUT)); // send key
Sleep(100);
(ip)->ki.dwFlags = KEYEVENTF_KEYUP; // event for keyrelease
(ip+1)->ki.dwFlags = KEYEVENTF_KEYUP; // event for keyrelease
Sleep(100);
SendInput(2, ip, sizeof(INPUT)); // release keys
return 0;
대부분의 앱은 두 개의 키를 구별하기 위해 스캔 코드를 사용합니다. –