2009-04-14 52 views
4

我正在研究需要模擬Windows鍵的按鍵的項目。我試過SendKeys.Send無濟於事。如何手動發送鍵盤掃描代碼?

具體來說,Windows鍵需要與按鈕配合使用。也就是說,我想發送Windows Key和加/減號。

回答

1

這可能是矯枉過正,但你可以嘗試使用AutoItX這是使用了AutoIt的DLL的方式。我只寫了獨立的腳本,但我知道AutoIt可以很容易地模擬按下Windows鍵。

例如,打開運行對話框只是:

發送( 「#R」);贏+ R =運行

2

我認爲最好的方法是使用keybd_event的keydown(稱爲ExtendedKey)與System.Windows.Forms.Keys枚舉的倫值,然後的keydown第二個字符(+),和KEYUP這兩個鍵。

我不相信SendKeys可以使用Windows鍵作爲修飾符。

6

我會補充說,它是通常不太可能在.NET框架中找到像這樣的低級函數。如果您對爲什麼這些建議都指向「非C#」函數感到困惑,那麼您可能會在P/Invoke上使用一些細節。

基本上有方式來定義C#函數「配合」他們不.NET組件存在於Windows API函數(相反,他們在C++中通常實現,可以作爲一個標準的DLL)。這個過程被認爲是「(Windows)平臺調用」(因此P/Invoke)。

它可以在第一有點搖搖晃晃到C之間,所有的數據類型++ C#風格的通話匹配,幸好,還有其他在那裏,鋪平了道路。

建議功能SendInputPInvoke wrapper高於PInvoke.net。這個包裝類在程序集中可用時,可以讓你像調用C#函數一樣調用SendInput。

PInvoke.net基本上是一個PInvoke的維基在窗口公知的API調用,並且通常具有的API調用的C#/ VB.NET包裝。