【发布时间】:2011-08-23 21:25:05
【问题描述】:
我一直在尝试编写一些代码来与 Photoshop 交互,包括添加 COM 引用和后期绑定。我花了一段时间才意识到代码确实有效,但不适用于 64 位版本的 Photoshop。
我在 64 位 Photoshop 中遇到的异常如下:
COMException 未处理
检索 COM 类工厂 具有 CLSID 的组件 {D9389EDE-AEF8-4092-9377-075E94B7CB9A} 由于以下错误而失败: 80080005 服务器执行失败 (来自 HRESULT 的异常:0x80080005 (CO_E_SERVER_EXEC_FAILURE))。
我的应用程序是否可以与 64 位版本的 Photoshop 通信?还是仅限于与 32 位版本通信?
我在无数次尝试寻找解决方案时遇到了this,但我不知道如何将CLSCTX_ACTIVATE_64_BIT_SERVER 标志与COM 引用或后期绑定一起使用,嗯,假设它是解决方案。
这里发生异常:
Type photoshopType = Type.GetTypeFromProgID("Photoshop.Application");
if (photoshopType != null)
{
object photoshop = Activator.CreateInstance(photoshopType);
【问题讨论】:
-
有一天我会弄清楚为什么 SO 用户断然拒绝记录他们得到的异常。我还没有接近那一天。将您的 EXE 项目的目标平台设置更改为任何 CPU。
-
您的 Photoshop COM 对象是在进程中创建还是在进程外创建(相对于您的代码)?进程内需要构建到兼容平台的 .Net,进程外平台无关紧要。
-
是的,拒绝。系统提示您,但仍然没有记录异常。没有得到答案是标准结果。
-
@a2h - 只有当人们提出不完整的问题时才会表现出来的态度。