¿Cómo enviar las teclas Control + A + B? (mantener el modificador de control “presionado”)

Cuando grabo esta secuencia falla. Sé que puedo enviar Control + A mediante Keyboard.SendKeys (control, “A”, ModifierKeys.Control) pero, ¿cómo envío una secuencia que mantiene el control y libera la letra antes de presionar la siguiente letra?

Nota: la secuencia que busco es similar al acceso directo predeterminado de Visual Studio para comentar una línea Control + K + C

¿Es esto tal vez algo para lo que necesito usar el WinApi?

keybd_event es muy conveniente para esto (mucho más fácil de usar que el SendInput “reemplazo”).

 keybd_event(Keys.Control, MapVirtualKey(Keys.Control, 0), 0, 0); keybd_event(Keys.A, MapVirtualKey(Keys.A, 0), 0, 0); keybd_event(Keys.A, MapVirtualKey(Keys.A, 0), KEYEVENTF_KEYUP, 0); keybd_event(Keys.B, MapVirtualKey(Keys.B, 0), 0, 0); keybd_event(Keys.B, MapVirtualKey(Keys.B, 0), KEYEVENTF_KEYUP, 0); keybd_event(Keys.Control, MapVirtualKey(Keys.Control, 0), KEYEVENTF_KEYUP, 0); 

Si solo necesita mantener presionadas las teclas control, alt y / o shift, verifique la respuesta de TCS de SendKeys.Send . keybd_event es más poderoso y te permitirá presionar cualquier tecla y soltar en cualquier orden.

Por lo que entiendo de la documentación de SendKeys.Send sería:

 SendKeys.Send("^(KC)") 

Lo siguiente se puede encontrar en los comentarios:

Para especificar que cualquier combinación de MAYÚS, CTRL y ALT debe mantenerse presionada mientras se presionan otras teclas, encierre el código de esas teclas entre paréntesis. Por ejemplo, para especificar mantener presionado MAYÚS mientras se presionan E y C, use “+ (EC)”. Para especificar mantener presionado SHIFT mientras se presiona E, seguido de C sin SHIFT, use “+ EC”.

¿Qué tal solo usando

 Keyboard.SendKeys(control, "A",ModifierKeys.Control); Keyboard.SendKeys(control, "B",ModifierKeys.Control); 

?

Esto funcionó para mí:

 Keyboard.SendKeys("^(AB)"); 

Simplemente use el código como abajo:

 Keyboard.SendKeys("^AB");