0

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

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

我的想法是让计时器检查我上次生成的当前任务栏对象,每隔一秒左右使用一个新对象,如果有变化则调用更新方法。我只是想知道是否有“更简单”或“更好”的方法来做到这一点。

(使用 Visual Studio 2010 C#)

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

4

1 回答 1

-1

一般的想法,你应该继承任务栏窗口。正如您现在可能看到的,每个窗口都定义了所谓的 WndProc(窗口过程),用于处理系统或其他窗口发送的所有消息。

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

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

这是一个简单的解释,我建议彻底阅读它。

这是一个起始链接:

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

于 2012-05-19T03:13:55.817 回答