C# 捕获一个移位+;tab键在C中按下#

C# 捕获一个移位+;tab键在C中按下#,c#,C#,我试图使用以下cpp语法捕获c#中的shift+tab: if (GetAsyncKeyState(VK_SHIFT) & 0x8000) { // The key is currently down } 有人能给我指出c#等价物吗 谢谢, Drew语法几乎完全相同 您需要像下面这样声明GetAsyncKeyState方法: [DllImport("user32.dll")] static extern int GetAsyncKeyState(System.

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

if (GetAsyncKeyState(VK_SHIFT) & 0x8000)
{
   // The key is currently down
}
有人能给我指出c#等价物吗

谢谢,
Drew

语法几乎完全相同

您需要像下面这样声明
GetAsyncKeyState
方法:

[DllImport("user32.dll")]
static extern int GetAsyncKeyState(System.Windows.Forms.Keys vKey); 
您可以编写
键,而不是
VK\u SHIFT

此外,C#不会将
int
不精确地转换为
bool
,因此您需要将其与
0
进行比较

因此,您需要编写

if ((GetAsyncKeyState(Keys.Shift) & 0x8000) != 0)

然而
通过检查,您可以在不使用p/Invoke的情况下执行此操作。

感谢您提供的语法。不幸的是,这是一个VSTO word外接程序,因此我必须使用P/Invoke。您甚至可以在VSTO中使用Control.ModifierKeys。只需添加对System.Windows.Forms.dll的引用。从MSDN签出即可