有没有办法让Windows 64位上的应用程序在64位和32位仿真层下执行代码?

Vic*_*nin 3 windows 32bit-64bit setwindowshookex

我感兴趣的是我是否可以编写一个能够在没有仿真层的情况下调用某些代码的应用程序以及32位仿真层内部的一些代码.

主要原因是我需要使用API​​ SetWindowHook,我想为64位和32位应用程序设置挂钩.

当然,我可以创建2个应用程序(一个用于32位,另一个用于64位)并同时启动它们.但是,我需要更多代码来管理它们(启动,停止,升级等).

所以,我正在寻找是否可以拥有一个应用程序.

我唯一的想法是拥有一个应用程序和2个COM DLL(32位和64位)并使用代理进程来运行32位代码.但是,它需要一些额外的COM包装器等等.

Leo*_*son 5

我不能建议一个更好的方法,但我能做的就是给你一个简单的基于钩子的工具的源,它完成同样的事情.随意使用对您有用的位:

http://www.pretentiousname.com/NoBarTab/NoBarTab_poc3.zip

(如果此URL在将来中断,只需上升一级;这可能是因为我已经完成它并为该工具及其来源提供了真实的页面.)

这是一个VS2010 C++项目,但应该很容易在旧的IDE中编译.(写这个实际上让我暂时不再使用VS2010了,呵呵.)

显然,如果你使用它,请重命名任何窗口类和二进制名称,以避免与我的工具冲突.(名称中包含"NoBarTab"的任何内容.)

FWIW,这是我几周前开始写的一个工具,但还没有完成.然而,挂钩部分已经完成.它挂钩窗口创建,以便它可以针对特定进程从Windows 7任务栏中删除选项卡.(我讨厌VMware特别使用该功能的方式.)当我完成它时,无论如何我都会发布源代码...

32/64位挂钩部分全部完成.我唯一没有做的就是添加一个配置UI,这样你就可以指定它应该关注哪些进程,但这对你正在做的事情并不重要.

(我应该说,我从Win7任务栏中删除选项卡的方式是一个完整的黑客攻击,可能会破坏未来版本的Windows.没有记录的方法可以做到这一点,所以我不得不解决一个令人讨厌的问题.你实际的挂钩代码但是,有兴趣的是所有"适当的".)

此外,我做到了这一点,几乎所有真正的逻辑都在主64位exe内.32位EXE只是用于安装32位挂钩DLL,而32位和64位挂钩DLL只是将消息发布到主64位exe的隐藏窗口.这是否适合您正在做的事情我会留给您决定,但我认为这可能符合您希望尽可能将所有内容放在一个地方的愿望.

希望它有用!