簡體   English   中英

VB6 - 從ActiveX DLL中讀取鍵盤

[英]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

我覺得你有更好的選擇,

使用uesr32.dll,您可以輕松完成此任務,

請參閱此鏈接

你將能夠使用這個功能

Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As Long) As Integer

這個dll在windows中處理你想要的任何東西..參考Old Post

我希望這個能幫上忙..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM