簡體   English   中英

跟蹤移動的桌面窗口WinApi

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

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