unr*_*ity 11 .net c# com photoshop
我一直在尝试编写一些与Photoshop交互的代码,通过添加COM引用和后期绑定.我花了一段时间才意识到代码确实有效,但不是64位版本的Photoshop.
我用64位Photoshop获得的例外情况如下:
COMException未处理
由于以下错误,检索具有CLSID {D9389EDE-AEF8-4092-9377-075E94B7CB9A}的组件的COM类工厂失败:80080005服务器执行失败(HRESULT异常:0x80080005(CO_E_SERVER_EXEC_FAILURE)).
我的应用程序是否可以与64位版本的Photoshop通信?或者仅限于与32位版本进行通信?
我在寻求解决方案的众多尝试之一中遇到过这种情况,但我不知道如何CLSCTX_ACTIVATE_64_BIT_SERVER使用COM引用或后期绑定来使用该标志,好吧,假设它是解决方案.
此处发生异常:
Type photoshopType = Type.GetTypeFromProgID("Photoshop.Application");
if (photoshopType != null)
{
object photoshop = Activator.CreateInstance(photoshopType);
Run Code Online (Sandbox Code Playgroud)
如果标记为 AnyCPU(编译为 MSIL),.NET 应用程序可执行文件 (.exe) 将始终以正在运行的处理器体系结构的本机位数运行。因此,在 64 位平台上运行的任何 MSIL 程序集都将以 64 位运行,在 32 位平台上运行则以 32 位运行。
在您的情况下,您要么想要针对 AnyCPU 进行编译,但如果您必须强制使用 x64 64 位互操作。当然,这在 32 位机器上不起作用。这将从注册表的 64 位视图中本机读取(包括 InProc
您还必须注意指针的整理方式。如果编写您自己的互操作代理,请务必使用 IntPtr 作为句柄。
| 归档时间: |
|
| 查看次数: |
1844 次 |
| 最近记录: |