2013-03-26 89 views
6

程序是否可以阻止來自其他程序的鍵輸入,而不是直接從用戶手中按鍵盤輸入的鍵輸入?程序能區分用戶鍵輸入和程序鍵輸入嗎?

例如:

ProgramA包含一個文本字段。

ProgramB是Windows的屏幕鍵盤。

在ProgramA選擇文本字段後,我嘗試按在屏幕鍵盤程序的字母「C」,但它不會出現在文本框中。

然而,當我按字母「C」直接從我的鍵盤似乎ProgramA的文本字段內。

我知道關鍵事件是如何工作的,它們是如何排隊,我已經看到了C++的功能了BlockInput

http://msdn.microsoft.com/en-us/library/windows/desktop/ms646290%28v=vs.85%29.aspx

但是,這個功能只是阻止所有輸入。

伊夫遇到過濾輸入以這種方式,似乎無法弄清楚如何計劃。我錯過了一些完全明顯的東西?

這個問題主要是關於C++的Windows 7操作系統上。

+1

你問哪種編程語言和哪個操作系統?標記java和C++標籤的這個問題似乎有點過於寬泛。 – 2013-03-26 19:13:56

+0

氣墊船,如果你熟悉Java中的機器人類,你的幫助將不勝感激。在ProgramA中KeyPress命令也被阻止。 – user2212942 2013-03-26 19:23:40

+0

您可能正在創建一個亭子程序。你是否搜索了這個詞? – 2013-03-26 19:47:20

回答

1

你永遠無法確定輸入是否來自硬件。最簡單的例子是一個自定義驅動程序,它將模擬由軟件輸入驅動的真正鍵盤。

一些奇特的想法可以連接麥克風設備,爲監聽輸入濾波聲音/振動,但你的意思是完整的硬件解決方案或應用,至極將給予個人用戶?

+0

我試圖瞭解我的計算機上的Windows聊天應用程序(C++)是如何從我寫的(java)程序中阻止keyPresses,但允許我在鍵盤上使用鍵盤輸入時鍵入它我自己的手。我只是在擺弄java機器人課程,想知道爲什麼它不接受機器人輸入,而只是從我的鍵盤直接輸入。 http://docs.oracle.com/javase/6/docs/api/java/awt/Robot.html – user2212942 2013-03-29 01:52:32