台灣最大程式設計社群網站
線上人數
875
 
會員總數:242929
討論主題:187836
歡迎您免費加入會員
討論區列表 >> C# >> Hook 監控滑鼠 頻率太高產生的例外
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
Hook 監控滑鼠 頻率太高產生的例外
價值 : 100 QP  點閱數:85 回應數:2

樓主

smith
門外漢
0 4
69 3
發送站內信



我目的是要達到監控滑鼠的效果,像是滑鼠當前X,Y 是多少、以及滑鼠按下左鍵還是右鍵等等
也確實能夠完成以上我想要的效果,但是執行到一半會有例外中斷,內容附在下方
我自己觀察貌似是:滑鼠快速移動,大量資料湧入程式,MouseHookProc() 在這函數裡會有問題
於是我針對這問題加入一些Sleep(50),確實能夠改善但僅延長壽命2秒左右,但Sleep加大也無法達到我要的監控效果
所以想要請教各位不知道是否有更合適的解決方法,願聞其詳,謝謝。

'Keyboard_Mouse_Mange!Keyboard_Mouse_Mange.Mouse_Mange+HookProc::Invoke' 的記憶體回收委派上進行回呼。這樣可能導致應用程式無法運作、損毀或遺失資料。傳遞委派到 Unmanaged 程式碼時,必須由 Managed 應用程式讓它們保持運作,直到確定不會再呼叫它們為止。'



搜尋相關Tags的文章: [ Hook ] , [ VS2017 ] , [ 滑鼠監控 ] , [ 監控系統 ] ,
本篇文章發表於2018-08-08 18:18
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
最有價值解答

春天
檢舉此回應
hHook = SetWindowsHookEx(APIConstansts.WH_MOUSE_LL, new HookProc(MouseHookProc), IntPtr.Zero, GetWindowThreadProcessId(GetModuleHandle("wmplayer.exe"), IntPtr.Zero));

這個new HookProc(MouseHookProc) 改成class Mouse_Mange 的Property或Field,不要直接new一個傳進去
沒有參考指向它的話會被當成垃圾回收

本篇文章回覆於2018-08-09 09:36
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

smith
檢舉此回應
謝謝春天,更改後確實有沒有出現任何問題了,感謝感謝。
本篇文章回覆於2018-08-09 19:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.