EDIT: một số sửa đổi theo câu trả lời rodrigo trong nhận xét.
INPUT Input = { 0 };
// shift key down
Input.type = INPUT_KEYBOARD;
Input.ki.wVk = VK_LSHIFT;
SendInput(1, &Input, sizeof(INPUT));
// 'a' key down
Input.type = INPUT_KEYBOARD;
Input.ki.wVk = 'A';
SendInput(1, &Input, sizeof(INPUT));
// 'a' key release
Input.type = INPUT_KEYBOARD;
Input.ki.dwFlags = KEYEVENTF_KEYUP;
Input.ki.wVk = 'A';
SendInput(1, &Input, sizeof(INPUT));
// shift key release
Input.type = INPUT_KEYBOARD;
Input.ki.dwFlags = KEYEVENTF_KEYUP;
Input.ki.wVk = VK_LSHIFT;
SendInput(1, &Input, sizeof(INPUT));
EDIT: đây là một mã với một ví dụ về biến mũ/chuyển ra sau khi gửi thư:
INPUT Event = { 0 };
const SHORT key = VkKeyScan('a');
const UINT mappedKey = MapVirtualKey(LOBYTE(key), 0);
// Press shift key
Event.type = INPUT_KEYBOARD;
Event.ki.dwFlags = KEYEVENTF_SCANCODE;
Event.ki.wScan = MapVirtualKey(VK_LSHIFT, 0);
SendInput(1, &Event, sizeof(Event));
// upper case 'A'
Event.type = INPUT_KEYBOARD;
Event.ki.dwFlags = KEYEVENTF_SCANCODE;
Event.ki.wScan = mappedKey;
SendInput(1, &Event, sizeof(Event));
// release upper case 'A'
Event.type = INPUT_KEYBOARD;
Event.ki.dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP;
Event.ki.wScan = mappedKey;
SendInput(1, &Event, sizeof(Event));
// Release shift key
Event.type = INPUT_KEYBOARD;
Event.ki.dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP;
Event.ki.wScan = MapVirtualKey(VK_LSHIFT, 0);
SendInput(1, &Event, sizeof(Event));
const SHORT key1 = VkKeyScan('A');
const UINT mappedKey1 = MapVirtualKey(LOBYTE(key1), 0);
// lower case 'a'
Event.type = INPUT_KEYBOARD;
Event.ki.dwFlags = KEYEVENTF_SCANCODE;
Event.ki.wScan = mappedKey1;
SendInput(1, &Event, sizeof(Event));
// release lower case 'a'
Event.type = INPUT_KEYBOARD;
Event.ki.dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP;
Event.ki.wScan = mappedKey1;
SendInput(1, &Event, sizeof(Event));
giải thích ở đây (Tôi hy vọng lời giải thích là đúng): SendInput() for keyboard - only uppercase
Bạn có để mô phỏng giữ phím shift, giống như khi gõ – Shenaniganz
Khi Shenaniganz ám chỉ, bạn đang mô phỏng một phím bấm. Bạn có chữ "A" ở trên chữ hoa và phím "a" thấp hơn trên bàn phím của mình không? – TheZ
'INPUT' loại chứa một liên minh tên, vì vậy bạn thực sự không nên gán cho' mi' và 'ki' thành viên của cùng một biến. – rodrigo