在C#中捕获shift + tab按键

dhy*_*ong 0 c#

我正在尝试使用以下cpp语法捕获c#中的shift + tab:

if (GetAsyncKeyState(VK_SHIFT) & 0x8000)
{
   // The key is currently down
}
Run Code Online (Sandbox Code Playgroud)

有人能指出我的c#等价物吗?

谢谢,德鲁

SLa*_*aks 7

语法几乎完全相同.

你需要声明这样的GetAsyncKeyState方法:

[DllImport("user32.dll")]
static extern int GetAsyncKeyState(System.Windows.Forms.Keys vKey); 
Run Code Online (Sandbox Code Playgroud)

而不是VK_SHIFT,你可以写Keys.Shift

此外,C#不会被非法转换intbool,因此您需要将其与之进行比较0.

因此,你需要写

if ((GetAsyncKeyState(Keys.Shift) & 0x8000) != 0)
Run Code Online (Sandbox Code Playgroud)

然而,

你可以通过检查没有P/Invoke来做到这一点Control.ModifierKeys.