2010-02-17 98 views
0

我嘗試使用下面的CPP語法來捕捉在C#中Shift + Tab:捕獲在C#中的Shift + Tab按鍵

if (GetAsyncKeyState(VK_SHIFT) & 0x8000) 
{ 
    // The key is currently down 
} 

任何人都可以點我到C#相同呢?

感謝, 德魯

+0

檢查** [此](http://msdn.microsoft.com/en-us/library/system.consolekeyinfo.key.aspx)**出MSDN – Gabe 2010-02-17 20:30:05

回答

7

的語法幾乎一模一樣。

你需要聲明GetAsyncKeyState方法是這樣的:

[DllImport("user32.dll")] 
static extern int GetAsyncKeyState(System.Windows.Forms.Keys vKey); 

相反的VK_SHIFT,你可以寫Keys.Shift

此外,C#不impicitly轉換intbool,所以你」我們需要將其與0進行比較。

因此,你需要寫

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

然而,

您可以通過檢查Control.ModifierKeys做沒有的P/Invoke。

+0

感謝您的語法。不幸的是,這是一個VSTO單詞加載項,所以我必須使用P/Invoke。 – dhysong 2010-02-18 17:00:15

+0

即使在VSTO中也可以使用Control.ModifierKeys。只需添加對System.Windows.Forms.dll的引用即可。 – SLaks 2010-02-18 17:14:27