Re: [問題] 如何抓到USB傳來的訊號 (鍵盤)(更新)

看板C_Sharp (C#)作者 (:P)時間7年前 (2018/04/16 22:23), 7年前編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
更新一下!hook失效的問題解決了, 我改用gma.useractivitymonitor.dll下的FUNCTION搞定 現在的問題是無法分辨"Enter"與"NumPad Enter"這兩顆按鍵 已經試過以下方法: 1. bool isExtended = (bool) typeof(KeyEventArgs).InvokeMember("IsExtendedKey", BindingFlags.GetProperty | BindingFlags.NonPublic | BindingFlags.Instance, null, e, null); 這個function無效,似乎已經沒有IsExtendedKey功能可以存取。 2. protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 無法跟Hook共存,Hook存在的話就不會進入函式 3. 用DirectX.input 下的 Device.GetPressedKeys() 在Hook產生的事件中會抓到空值 不知道大大知不知道其他解法,感激!!! 各位大大好,本來我要抓的是長得像這樣的訊號 http://www.perisoft.net/bushound/details.htm 後來找了大大回應的函示,還是沒有成功,因此改成用HOOK來抓鍵盤輸入 本來我的程式都完全達到目的,該抓該偵測的按鍵都有偵測到, 但是這支程式不知道為什麼,執行到後來反應越來越慢, 甚至最後HOOK對KEYDOWN完全沒反應了...... 我一直在想是不是沒有反安裝HOOK的關係 因此反安裝了幾次,但還是無效,程式對KEYDOWN完全沒反應 不然就是有偵測到輸入,但是判定按鈕沒有按= = 程式碼是參考 https://dotblogs.com.tw/huanlin/2008/04/23/3320https://goo.gl/W6hAQY 懇請大大教我一下,讓我了解一下是哪個步驟漏掉,才讓HOOK漸漸失敗 (我發現就算把HOOK相關程式碼註解,原本FORM的自己的KEYDOWN事件也一樣抓不到了) 是不是我應該把user32.dll這個檔案備份才能做這隻程式呢? 這隻程式偵錯時,會寫資訊到登錄檔或是永久修改user32.dll嗎? 希望大大能協助解答一下疑惑,讓小弟能突破瓶頸,感激不盡 ※ 引述《iamrtp (:P)》之銘言: : 各位大大好,小弟目前在開發一隻程式, : 這隻程式要能透過USB抓到電路板傳來的機械碼。 : 目前嘗試使用 : SerialPort.GetPortNames(); : 但是我發現回傳的Name數為0 =_= : 看了一下登陸檔,發現我的電腦在 : HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\ 底下根本沒有"SERIALCOMM" : 這下我迷惘了!如果這條路走不通的話, : 還有沒有其他方式能偵測USB傳來的機械碼訊號呢? : 找了很久還是沒找到解法,希望這邊大大開示,感激不盡!! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.77.252.180 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1523888630.A.845.html ※ 編輯: iamrtp (211.23.39.40), 04/17/2018 13:31:02 ※ 編輯: iamrtp (211.23.39.40), 04/17/2018 13:31:27
文章代碼(AID): #1QrB7sX5 (C_Sharp)
文章代碼(AID): #1QrB7sX5 (C_Sharp)