나는 다른 창으로 키 스트로크를 보내는 프로그램을 만들었고, 나는 그것이 모두 작동하도록 만들었지 만, 온라인으로 가서 키 스트로크 부분을 수행하는 기능을 찾아야했다. 그것은 작동하지만 실제로 무엇을하고 있는지 전혀 모른다. 다른 사람이이 기능의 각 행에 무엇을하고 있는지 설명 할 수 있습니까?C++ 함수의 각 행이 무엇을 설명 할 수 있습니까? 그것은 키 스트로크를 보내지 만 나는 방법으로 혼란 스럽다.
void GenerateKey(int vk, BOOL bExtended) {
KEYBDINPUT kb = {0};
INPUT Input = {0};
/* Generate a "key down" */
if (bExtended) { kb.dwFlags = KEYEVENTF_EXTENDEDKEY; }
kb.wVk = vk;
Input.type = INPUT_KEYBOARD;
Input.ki = kb;
SendInput(1, &Input, sizeof(Input));
/* Generate a "key up" */
ZeroMemory(&kb, sizeof(KEYBDINPUT));
ZeroMemory(&Input, sizeof(INPUT));
kb.dwFlags = KEYEVENTF_KEYUP;
if (bExtended) { kb.dwFlags |= KEYEVENTF_EXTENDEDKEY; }
kb.wVk = vk;
Input.type = INPUT_KEYBOARD;
Input.ki = kb;
SendInput(1, &Input, sizeof(Input));
return;
}
은 여기에 호출의 예 :
GenerateKey('C', FALSE); // Sends keystroke 'c'
이 키 입력 'C'를 보냅니다.
이 함수는 대문자로만 작동하며 특정 16 진수 코드에서만 작동합니다. 예를 들어, (키 입력) 캐리지 리턴을 보내, 여기에 호출입니다 : 나는 이러한 호출 중 하나와 물음표 (16 진수 0x3F입니다)를 전송하려고하는 경우에는
GenerateKey(0x0D, FALSE); // Sends carriage return
, 아무 일도 발생하지 않습니다 :
GenerateKey(0x3F, FALSE); // Nothing happens
GenerateKey('?', FALSE); // Nothing happens
사람들이 왜 작동하지 않는지 알 수 있습니까?
또한 누군가가 두 번째 인수 인 BOOL bExtended가 무엇인지 설명 할 수 있습니까? TRUE와 FALSE 사이를 변경하면 보내는 키 입력에 차이가없는 것처럼 보입니다.
귀하의 질문은 WinAPI에 특정한 것으로, 태그를 추가해야합니다. C++ 표준은 키 스트로크에 대해 알지 못합니다. –
키보드에 물음표 키가 없습니다. SHIFT +'/'(US QWERTY 자판 배열, YMMV)를 보내고 싶을 것입니다. –