2011-11-18 104 views
0

根據msdn上的this article,可以設置一個特定的窗口作爲前景窗口,然後然後發送鍵擊到它......但我需要發送擊鍵到窗口背景,這樣,無論用戶在做什麼都可以繼續不間斷。發送鍵盤到非前景窗口

+0

這在Windows中不可行。 –

回答

0

也許你應該在前臺窗口中捕捉按鍵並將它們傳遞給背景窗口(委託)。或者,如果它們有點複雜,可以使用全局熱鍵。無論如何,將密鑰從前臺表單傳遞到背景表單應該是更好的解決方案。

我發現一個很好的例子,它不是關於熱鍵,但這個概念也適用於你的情況。

http://www.codeproject.com/KB/cs/pass_data_between_forms.aspx

0

所以基本上一個按鍵監聽器? Java有一個機器人類,用於偵聽按鍵並可以對它們進行操作(例如,輸入「Hello World」,而類將自動將其寫入文件或其他窗口)。

我在過去創造了類似的東西。您可以創建一個Java程序在常量while循環中在後臺運行,並只聽按鍵。設置程序將每個按鍵寫入文件或特定位置。因爲這是一個短暫的while循環,只有在按下某個鍵時才起作用,它幾乎不佔用處理能力,並且不會影響前臺程序的性能。

+0

我需要程序在後臺接收keyevents,就好像它被聚焦並且用戶按下了鍵盤上的一個鍵。 – Entity

0

我用快捷鍵做到這一點。我有一個應用程序,它有多個子窗口。主窗口啓用子窗口的Form.KeyPreview屬性,然後在該子窗口上註冊適當的事件(KeyPress,KeyDown或KeyUp)。使用此設置,主窗口可以處理子窗口中的所有密鑰。

0

我在Windows Mobile/CE上使用的技術是鉤住鍵盤,然後只需使用PostMessage()將它們發送到目標窗口即可正常處理。這種技術也應該在桌面上運行。代碼項目中有幾個鉤住鍵盤的例子 - http://www.codeproject.com/KB/system/globalsystemhook.aspx。你的問題不清楚前臺窗口是否是你的應用程序的一部分。如果是這樣,是不是隻需從背景表單訂閱前景表單鍵事件之一?