我正在制作一个任务栏,我需要知道活动窗口何时更改。我不想使用计时器。我在想也许我可以拦截一条 WndProc 消息。
我正在使用 C#
我正在制作一个任务栏,我需要知道活动窗口何时更改。我不想使用计时器。我在想也许我可以拦截一条 WndProc 消息。
我正在使用 C#
这需要一个由 SetWindowsHookEx 设置的钩子,WH_SHELL。回调获取 HSHELL_WINDOWACTIVATED 和 HSHELL_WINDOWCREATED 等通知,以便您了解顶级窗口发生的情况。查看“ ShellProc ”的 SDK 文章,了解您可以获得的通知的完整列表。几乎所有这些都与实现您自己的任务栏相关。
那是个好消息。坏消息是 WH_SHELL 是一个全局钩子。它需要一个可以注入另一个进程的 DLL。问题是,您不能在托管代码中编写该 DLL。无法将托管代码注入非托管进程。
再次回到好消息,有人已经解决了这个问题并创建了一个非托管 DLL,它是可注入的并且可以与托管代码互操作。项目在这里。不知道它有多好。我怀疑它可能不是完全 UAC 证明。