我不能提出更好的方法,但我能做的是给你一个简单的基于钩子的工具的源代码,它做同样的事情。随意对您有用的位:
http://www.pretentiousname.com/NoBarTab/NoBarTab_poc3.zip
(如果此 URL 将来中断,只需上一级;这可能是因为我已经完成了它并为该工具及其来源放置了一个真实页面。)
这是一个 VS2010 C++ 项目,但应该很容易在旧 IDE 中编译。(写这篇文章实际上让我暂时不再使用 VS2010,呵呵。)
显然,如果您使用它,请重命名任何窗口类和二进制名称,以避免与我的工具冲突。(名称中带有“NoBarTab”的任何内容。)
FWIW,这是我几周前开始写的一个工具,但还没有完成。不过,挂钩部分已经完成。它挂钩窗口创建,以便它可以针对特定进程从 Windows 7 任务栏中删除选项卡。(我特别讨厌 VMware 使用该功能的方式。)无论如何,当我完成它时,我打算发布源代码......
32/64 位挂钩部分全部完成。我唯一没有做的就是添加一个配置 UI,这样你就可以指定它应该关心哪些进程,但这对你正在做的事情并不重要。
(我应该说,我从 Win7 任务栏中删除选项卡的方式完全是 hack,可能会与未来版本的 Windows 中断。没有记录的方法可以做到这一点,所以我不得不解决一个讨厌的问题。你的实际挂钩代码不过,我会感兴趣的是所有“适当的”。)
此外,我做到了几乎所有真正的逻辑都在主要的 64 位 exe 中。32 位 EXE 仅用于安装 32 位钩子 DLL,32 位和 64 位钩子 DLL 都只是将消息发布到主 64 位 exe 的隐藏窗口。这是否适合您正在做的事情我让您自己决定,但我认为这可能符合您希望尽可能将所有东西都放在一个地方的愿望。
希望它有用!