问题标签 [comclass]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
148 浏览

delphi - 我找到了 ComClass,现在如何引用它?

我在 Delphi 2010 中编写了一个小型 COM 服务器,它充当零售应用程序的插件。零售应用程序寻找一个“发现”接口,该接口注册任意数量的附加接口调用TAutoObjectFactory.Create每个接口。这工作得很好——所有插件接口都按设计工作。

但是现在我想从另一个接口调用一个接口的公共方法,这样我就不必重复代码了。看起来很简单,调用ComClassManager.ForEachFactory查找我需要使用的接口的ClassID即可。也得到了它的工作!

但是现在我找到了这个类,我被一个看似微不足道的最后一步难住了:如何使用或转换我找到的类(或类引用?)以实际调用它的一个方法。

在我发送到的“FactoryProc”中ForEachFactory,我假设 ComClass 属性TComObjectFactory是我所追求的,但它是 TClass 类型,它是指向它所指向的实际类对象的类引用(至少我希望我是正确理解这一点)。我对类引用有点模糊,我尝试强制转换或取消引用此属性导致访问冲突或编译器错误。

有什么建议么?

0 投票
1 回答
2313 浏览

.net - Windows Azure 上的 AspPDF 和 AspJPEG

我最近开始了将 .NET 应用程序迁移到 Windows Azure 云服务的过程。我们的应用程序严重依赖于许多 COM 类组件,这些组件包括 AspPDF(用于 PDF 制作和操作)和 AspJPEG(用于调整图像大小)。在典型的非云 IIS 设置中,我只需在生产服务器上注册 DLL(使用 regsvr32),一切都会好起来的!

在 Azure 中,过程略有不同,我将回答我自己的问题以帮助那些面临类似挑战的人。此方法可用于作为部署过程的一部分需要在服务器上注册的任何 dll。

0 投票
1 回答
152 浏览

c# - 什么会导致 Outlook 自动化突然失败,以及如何恢复?

我有一个应用程序可以生成电子邮件并弹出一个 OUTlook 对话框,向用户显示即将发送的内容。它一直工作正常,但没有代码更改,现在无法正常工作。产生的异常是:

异常消息:由于以下错误,检索具有 CLSID {0006F03A-0000-0000-C000-000000000046} 的组件的 COM 类工厂失败:80080005 服务器执行失败(来自 HRESULT 的异常:0x80080005 (CO_E_SERVER_EXEC_FAILURE))。异常来源:mscorlib

...并被扔在这条线上:

否则 Outlook 本身工作正常;事实上,我已经将我的应用程序设置为使用 Outlook 发送这些电子邮件,但是每当发生异常时,我也会通过我的 gmail 帐户向自己发送电子邮件 - 这就是我获得此异常信息的方式 - 屏幕上没有显示任何内容或表示有问题 - Outlook 邮件消息从未出现过。

如果这种情况持续存在,我也会将我的 Outlook 邮件发送代码更改为 gmail,但我更愿意为此坚持使用 Outlook。

0 投票
1 回答
128 浏览

vb.net - 从 VB6 ActiveX 调用 VB.NET COM 类库不起作用

首先,我正在处理一个遗留的 VB6 应用程序,它通过调用一个(非 ActiveX)C++ DLL 来创建“作业”,该 DLL 启动(通过调用 CLSIDFromProgID 指向类,然后通过 CoCreateInstance 启动)各种 C++/VB6 ActiveX exe (这些工作是各种类型的数据下载器)。我不得不编写一个新的下载器,并且由于 ActiveX 是(非常)遗留的,我在 VB.NET 中将它作为 COM 类库编写(因为 VB6 也不能很好地处理基于流的 HTTP,如果有的话)与与其他下载器相同的入口点。

那么我发现的第一件事是我显然不能直接调用 COM 库(当启动器调用 CoCreateInstance 时,它​​会在调用后的下一条语句恢复之前触发析构函数)所以我必须编写一个 VB6 ActiveX exe 作为代理实例化 COM (Set oMyObject = CreateObject("DownloaderLib.Loader")),然后执行一个 'DoEvents' 循环。从作业处理程序调用没有任何问题,在我的开发环境中,一切都可以协同工作并且执行得很好。

但是,当我将所有部件移到我的系统测试环境时,它就会崩溃。VB6 应用程序调用代理,但代理似乎没有加载(或至少执行)COM。我知道我正在启动代理,因为我有向事件服务器“显示”某些内容的代码;我知道它没有到达 COM,因为我在 COM 中有类似的代码,应该在它内部的各个点发送消息。

已经注册了 ActiveX exe 代理,并且我已经注册了(使用“正确的”REGASM)COM 库。我的开发环境是Win10,使用VS2017和.NET Framework v4.7.03190;COM 构建为面向 .NET Framework 4.6.1 的类库。我的系统测试环境是 Windows Server 16,安装的 .NET Framework 是 4.7.2(版本编码 461814),我使用的 REGASM 位于文件夹“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\”中。

我还需要做什么?我会错过什么?

任何帮助将不胜感激。

0 投票
1 回答
53 浏览

ms-office - MS office Word 2016 从 2010 升级导致错误“错误:80080005 服务器执行失败”(CO_E_SERVER_EXEC_FAILURE).Net Web 应用程序

.Net C# Web 应用程序,可从其网页之一生成 Word 文档。

在开发服务器中,我们最近将 microsoft office 版本从 2010 升级到 2016。在初始化 word dll 时遇到问题(在另一个环境中,我们仍然安装了 office 2010,我们没有看到这个问题,但是 microsoft office 从 2010 升级到 2016 年是强制性的)。所以我需要帮助来解决这个问题。

using Word = Microsoft.Office.Interop.Word; ......

App wrodApp = new Word.Application();-->这一行导致以下错误

错误:由于以下错误,检索具有CLSID {000209FF-0000-0000-C000-000000000046}的组件的 COM 类工厂失败:80080005服务器执行失败(来自 HRESULT 的异常:0x80080005 (CO_E_SERVER_EXEC_FAILURE))

请让我知道如何解决此问题?