[英]VB6 - reading from keyboard in an ActiveX DLL
我有一個ActiveX DLL,目前從串口讀取。 現在我希望它接受來自USB設備的輸入。
USB設備用作標准人機接口設備。 也就是說,如果我打開記事本,那么設備的輸出將顯示在記事本中,就好像它是在鍵盤上鍵入的一樣。
通常情況下,我會捕獲Key Up / Down事件,但我認為我需要一個表單,而我的DLL沒有表單。
我該如何捕獲該輸入?
[更新]我發現這個http://us.generation-nt.com/answer/anyone-know-how-read-keyboard-input-within-an-activex-dll-help-7934442.html#聲稱要做它,但那里的代碼將不起作用,因為使用AddressOf
運算符,它只能在.BAS文件中使用,因此不能在DLL中使用.CLS
我甚至不確定我是否正在尋找系統范圍的鈎子或特定於應用程序。
嗯, http ://www.xtremevbtalk.com/showthread.php?t = 77216說“你不能在VB中實現全局WH_KEYBOARD掛鈎 - 它需要一個標准(非ActiveX dll),因為它必須加載到所有正在運行的應用程序的地址空間。“
[大日期]所以,也許我可以使用一個表單,使其成為1x1像素並且不可見並具有一個函數GetTheData
,它以模態方式顯示表單並收集並返回數據 - 在表單級別獲取鍵盤輸入或在(n個不可見)控件中獲取然后關閉返回輸入的表單。
那會有用嗎? 如果有人發布了一個工作示例,我會獎勵一個賞金(我希望表單在任務欄上不可見,沒有關閉按鈕;用戶不應該知道它,或者能夠關閉它,它應該關閉它自己當它從USB連接的HDI接收到足夠的輸入時)。
您可以使用RegisterRawInputDevices
來監視HID設備的輸入,但這需要一個窗口來監聽WM_INPUT
消息,這意味着對窗口進行子類化。
這是一個工作示例項目: UsbBarcodeSanner.zip
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.