c # виртуальная клавиатура p / invoke shift не будет "отпускать" клавишу - PullRequest
0 голосов
/ 18 февраля 2012

Мой текущий код:

[DllImport("user32.dll", SetLastError = true)] 
static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);  

public const int KEYEVENTF_EXTENDEDKEY = 0x0001; //Key down flag 
public const int KEYEVENTF_KEYUP = 0x0002; //Key up flag 
public const int VK_RMENU = 0xA5;

keybd_event(VK_SHIFT, 0, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_Q, 0, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_Q, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);

Я получаю заглавную букву Q по мере необходимости, но проблема в том, что «Shift» придерживается.

Все буквы после этого являются заглавными.Единственный способ получить строчные буквы - это изменить заглавные буквы.Как я могу решить эту проблему?

Заранее спасибо

1 Ответ

2 голосов
/ 18 февраля 2012

Я полагаю, что Коди Грей дал вам решение вашей проблемы.Просто замените ваши звонки P / Invoke на:

keybd_event(VK_SHIFT, 0, 0, 0);
keybd_event(VK_Q, 0, 0, 0);
keybd_event(VK_Q, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
...