通过来自64位exe的OLE分派启动32位exe
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过来自64位exe的OLE分派启动32位exe相关的知识,希望对你有一定的参考价值。
我有一个WPF应用程序编译到ANYCPU目标平台。该应用程序需要启动32位MFC应用程序。我是通过COM Callable包装器来做到这一点的。 COM Callable包装器使用OLE DISPATCH启动exe。如果我在win32中编译COM Wrapper并在x86目标平台中启动WPF应用程序,则32位传统应用程序将成功启动。
如果我编译COM Wrapper x64位,并编译WPF x86,我的WPF应用程序崩溃创建COM Wrapper的对象。
如果我编译COM Wrapper win32和WPF平台目标ANYCPU,我的WPF应用程序再次崩溃。我该如何正确设置?
答案
您只能使用与当前可执行文件相同的平台位大小的COM。如果您以32位进程运行,则必须使用32位COM包装器。如果您以64位进程运行,则必须使用64位COM包装器。这通常意味着您需要两个单独的应用程序版本,因此您可以定位相应的包装器。
话虽这么说,如果您的唯一目标是启动应用程序(而不是与之交互),您可以使用Process.Start
而不是COM包装器来启动它。
以上是关于通过来自64位exe的OLE分派启动32位exe的主要内容,如果未能解决你的问题,请参考以下文章
从 32 位 C# 到 64 位 C++ 的 PostMessage 参数
区分 cl.exe 生成的 32 位和 64 位 PE 对象文件(Visual Studio C++)