我正在製作一個全局捕獲鍵盤輸入的Windows應用程序。當用戶使用CTRL + ALT + G快捷鍵組合時,應用程序使用爲什麼SendKey.Send()只能在一段時間內工作一次?
SendKey.Send(Guid.NewGuid().ToString());
在任何文本字段的焦點中鍵入一個一般的GUID。無論應用程序如何輸入,它都應該這樣做。
它的工作原理與我第一次鍵入CTRL + ALT + G時完全相同,但隨後的嘗試不會導致任何結果,或者只是非常罕見的成功。
我的意思是,它應該是非常簡單和一致的。我有一個可以工作的全局鍵盤鉤子,我測試過它,但SendKey.Send()方法每次都不起作用。
我已經在谷歌上看過有關我的問題的任何事情,但迄今沒有任何工作。
任何人有任何見解?
編輯1: 我試過使用SendKey.SendWait()以及同樣的事情。我真的想要一個更快捷的方式來使用這種鍵盤快捷方式生成新的GUID。
編輯2:
下面是代碼的基本部分:
/* Initialization Code Here */
// register the event that is fired after the key press.
hook.KeyPressed += new EventHandler<KeyPressedEventArgs>(hook_KeyPressed);
// register the control + alt + F12 combination as hot key.
hook.RegisterHotKey((uint)(HotkeyModifiers.Control | HotkeyModifiers.Alt), Keys.G);
事件代碼非常簡單:
void hook_KeyPressed(object sender, KeyPressedEventArgs e)
{
SendKeys.SendWait(Guid.NewGuid().ToString());
}
其他的一切在我的項目僅僅是起毛。
更新1:
我有關於這個主題更多的問題,但我沒有時間來繼續這方面的工作今天。我實現了Jon Raynor的建議,即使用app.config方法取得某種程度的成功。一旦我隔離了我的新問題,我會發佈一個編輯並可能關閉此問題,如果我的應用程序按預期運行。
你是什麼意思,通過全球捕獲鍵盤輸入?如果你這樣做並不意味着你也收到了GUID。當然你想RegisterHotKey。 –
我正在爲此項目使用RegisterHotKey pinvoke。捕獲熱鍵很容易,問題在於SendKey.Send()方法。 – LamdaComplex
當你在你的代碼中調用SendKey.Send? –