0
我正試圖用鼠標中鍵實現系統範圍的拖動操作。它應該重寫其他程序中的中間鼠標拖動行爲。目前,我正在使用全系統鉤子處理全局鼠標事件。如何正確覆蓋其他應用程序(Windows)中的鼠標事件?
問題是 - 許多程序仍然接收和處理相同的事件,就像我沒有攔截它們一樣。
這裏是我的嘗試:
沒有要求鼠標按下事件的一個鉤子:我從來沒有收到鼠標了,所以我不知道在哪裏,什麼時候停止拖動
不調用鼠標移動的下一個鉤子:光標極度減速
不會調用鼠標的下一個掛鉤:系統中的大多數窗口在我的拖動完成後會停止對鼠標事件作出反應
總是調用鏈中的下一個鉤子:如果鼠標中的控件已經滾動,大部分時間它會在我的拖動進行時滾動。此外,UWP應用程序在我的拖動過程中繼續接收鼠標事件,因此如果MS Edge中的鏈接恰好在光標啓動時處於光標下方,並且鼠標沒有離開邊緣邊界,Edge會收到點擊事件並打開新標籤頁
我需要的是:當用戶拿着中鼠標並開始拖動時,我的拖動處理程序應該被調用,並且沒有其他處理程序,如文件拖動,滾動等應該發生。
當你開始拖動你需要調用* SetCapture()*和* ReleaseCapture()* whe拖動結束。但沒有設置任何鉤子 – RbMm
@RbMm其實,我試過。問題是我需要從任何應用程序開始,而不僅僅是從我自己的應用程序開始。我希望能夠通過窗口中的任意點拖動系統中的任何窗口,覆蓋任何其他行爲。例如,問題是,即使我在鼠標關閉後收到第一個MouseMove後調用SetCapture,Microsoft Edge仍然通過滾動繼續處理鼠標移動。 – LOST