[英]Track a moving desktop window WinApi
我正在嘗試跟蹤移動的桌面應用程序窗口,以便可以平價移動相應的透明覆蓋窗口。 當前,我使用SetWinEventHook
掛鈎EVENT_SYSTEM_MOVESIZEEND
事件。 在回調中,我使用目標應用程序窗口的新位置更新了疊加層的位置。
這可行,但是這意味着在用戶放開目標窗口的標題欄后,我的疊加層就會跳來跳去。 我想我的疊加跟蹤目標窗口, 因為它是移動的,它已被移動並不只是后。
我認為可以執行此操作的唯一方法是也掛接EVENT_SYSTEM_MOVESIZESTART
事件。 當START
事件觸發時,產生一個新線程來輪詢目標Windows位置並更新我的疊加位置。 然后,當END
事件觸發時, END
輪詢線程。
這是一種合理的方法,還是有一種更好的方法來實現我想要的功能。
謝謝。
根據漢斯·帕桑特 ( Hans Passant )對我的問題的建議。 我確實確實希望鈎住EVENT_OBJECT_LOCATIONCHANGE
而不是EVENT_SYSTEM_MOVESIZEEND
。 鈎住LOCATIONCHANGE
,跟蹤將按預期工作。
值得注意的是,通過鈎住LOCATIONCHANGE
您還將收到該窗口的鼠標事件。 您可以通過檢查WinEventProc
回調函數的hwnd
輕松過濾窗口的移動。
MSDN:
Handle to the window that generates the event, or NULL if no window is associated with the event. For example, the mouse pointer is not associated with a window.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.