gpt4 book ai didi

windows - Windows 64 位上的应用程序是否可以在 64 位和 32 位仿真层下执行代码?

转载 作者:可可西里 更新时间:2023-11-01 14:42:12 26 4
gpt4 key购买 nike

我感兴趣的是我是否可以编写一个应用程序,该应用程序将能够在没有仿真层的情况下调用一些代码以及在 32 位仿真层中调用一些代码。

这样做的主要原因是我需要使用 API SetWindowHook 并且我想为 64 位和 32 位应用程序设置 Hook 。

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

所以,我正在研究是否有可能拥有一个应用程序。

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

最佳答案

我不能建议更好的方法,但我能做的是为您提供一个简单的基于钩子(Hook)的工具的源代码,它可以做同样的事情。随便说说对你有用的:

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

(如果此 URL 将来中断,请上一级;可能是因为我已经完成它并为该工具及其源放置了一个真实页面。)

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

显然,如果您使用它,请重命名任何窗口类和二进制名称,以免与我的工具发生冲突。 (名称中带有“NoBarTab”的任何内容。)

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

32/64位hook部分全部搞定。我唯一没有做的事情是添加一个配置 UI,这样您就可以指定它应该关心哪些进程,但这对您正在做的事情并不重要。

(我应该说,我从 Win7 任务栏中删除选项卡的方式完全是一个 hack,可能会破坏 future 版本的 Windows。没有记录的方法可以做到这一点,所以我不得不解决一个令人讨厌的问题。实际 Hook 不过,您感兴趣的代码都是“正确的”。)

另外,我这样做是为了让几乎所有真正的逻辑都在主要的 64 位 exe 中。 32 位 EXE 只是为了安装 32 位 Hook DLL 而存在,32 位和 64 位 Hook DLL 只是向 64 位主 exe 的隐藏窗口发送一条消息。这是否适合您正在做的事情我留给您来决定,但我认为这可能符合您希望尽可能将所有内容集中在一个地方的愿望。

希望有用!

关于windows - Windows 64 位上的应用程序是否可以在 64 位和 32 位仿真层下执行代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4287352/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com