c # teclado virtual p / invocar shift não vai “liberar” a tecla
-
27-10-2019 - |
Pergunta
Meu código atual é:
[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);
Eu obtenho o Q maiúsculo conforme necessário, mas o problema é que o "Shift" permanece.
Todas as letras depois disso são todas maiúsculas.a única maneira de obter letras minúsculas é mudar para caps lock.Como posso resolver esse problema?
Desde já, obrigado
Solução
Acredito que Cody Gray deu a você a resolução para seu problema.Basta substituir suas chamadas P / Invoke por:
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);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow