是否可以检测到任务栏移动

本文关键字:任务栏 移动 检测 是否 | 更新日期: 2023-09-27 18:34:42

我有一个访问 win32 API 的类来拉取任务栏的位置、大小、状态和边缘。 我使用该类来了解根据任务栏的位置在何处创建警报。我有一种方法可以根据生成或删除新警报时任务栏的时间更新警报位置。

有没有办法检测任务栏何时移动,以便我可以调用更新方法?这样,如果用户移动任务栏,警报将移动到适当的位置,而不是位于荒谬的位置,直到出现新警报或删除警报。

的想法是让一个计时器检查我最后生成的当前任务栏对象,每隔一秒左右一个新的任务栏对象,并在发生更改时调用 update 方法。我只是想知道是否有"更简单"或"更好"的方法可以做到这一点。

(使用 Visual Studio 2010 C#(

需要检测任务栏何时移动以调用方法。

是否可以检测到任务栏移动

一般思路,您应该对任务栏窗口进行子类化。正如您现在可能的那样,每个窗口都定义了所谓的 WndProc(窗口过程(,用于处理系统或其他窗口发送的所有消息。

您无法直接访问此函数,但您可以使用正确的 API (SetWindowLong( 将消息流重定向到您选择的另一个 WndProc 函数(请记住回调旧的 WndProc,以便目标窗口正常运行(。

通过这样做,您可以监视目标窗口接收的所有消息。特别是,您情况下的WM_MOVE消息。

这是一个简单的解释,我建议仔细阅读。

这是一个起始链接:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms633569(v=vs.85(.aspx