【发布时间】:2011-07-13 18:30:10
【问题描述】:
我正在尝试编写一个没有开始菜单和标准桌面的非常有限的任务栏替换。 但现在我想知道 explorer.exe 如何在内部工作。
1.) 任务栏如何捕捉最小化窗口?
2.) 任务栏如何知道窗口何时打开或关闭等? (有api吗?)
3.) explorer.exe 如何启用视觉样式? (如果不运行,所有样式都被禁用,看起来像win9x)
【问题讨论】:
我正在尝试编写一个没有开始菜单和标准桌面的非常有限的任务栏替换。 但现在我想知道 explorer.exe 如何在内部工作。
1.) 任务栏如何捕捉最小化窗口?
2.) 任务栏如何知道窗口何时打开或关闭等? (有api吗?)
3.) explorer.exe 如何启用视觉样式? (如果不运行,所有样式都被禁用,看起来像win9x)
【问题讨论】:
查看 MSDN 库中的 SetWindowsHookEx() 文档。这里重要的钩子类型是 WH_SHELL。
【讨论】:
SetWindowsHookEx 带有 WH_CBT 或 WH_SHELL 挂钩(我不确定当资源管理器未运行时 WH_SHELL 是否在所有系统上 100% 工作)
就#3而言,我认为我没有看到这个问题。
Explorer 使用了很多未记录的函数,你应该看看一些开源替换 shell 或 google RegisterShellHook、ShellDDEInit 和 ARW_HIDE
【讨论】:
检查 RegisterShellHookWindow,我相信微软添加它是为了避免在较新的 x64 操作系统版本上维护 32 位和 64 位挂钩。
【讨论】: