问题标签 [com]

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 回答
418 浏览

generics - 在服务组件上使用通用列表

我正在尝试将通用列表用作ServicedComponent类的属性...

代码编译没有错误,但是当我尝试使用MyList来自不同类的 com 对象上的属性时,没有值被添加到列表中。谷歌“告诉我”我不能在组件上使用泛型,但我还没有找到一个很好的解释为什么会这样以及一个很好的解决问题的方法。

有人可以帮我吗?

0 投票
7 回答
67651 浏览

c# - stdole.dll 有什么作用?

我们有一个大型 C# (.net 2.0) 应用程序,它使用我们自己的 C++ COM 组件和一个也通过 COM 访问的第 3 方指纹扫描仪库。我们遇到了一个问题,在生产中,指纹库中的一些事件不会被触发到 C# 应用程序中,尽管来自我们自己的 C++ COM 组件的事件被触发并被很好地接收。

使用 MSINFO32 将工作系统上加载的模块与故障系统上的模块进行比较,我们确定这是由 STDOLE.DLL 不在 GAC 中引起的,因此未加载到故障进程中。

将此文件拖入 GAC 会导致事件从指纹 COM 库中正常返回。

那么 stdole.dll 是做什么的呢?它的大小为 16k,所以它不会太多......它是某种链接到另一个库(如 STDOLE32)吗?为什么它的缺席会导致这种奇怪的行为?

我们如何分发 stdole.dll?这是一个 XCOPY 部署应用程序,我们不使用 GAC。我们是否应该将其打包为资源并使用 System.EnterpriseServices.Internal.Publish.GacInstall 来确保它在 GAC 中?

0 投票
1 回答
2944 浏览

c++ - 如何使用 COM/ATL(无 MFC)打开现有文件

我有一个链接到 ATL 的现有 Windows C++ 应用程序。我需要打开一个现有的 Excel 文件并访问一些属性。我需要做的一件事是确定用户当前是否正在查看 Excel 文件。

我们可以假设用户安装了 Excel,但不确定是哪个版本。

附加到现有 Excel 文件的 C++/COM 代码是什么?如何确定文件当前是否由 Excel 实例打开?假设我知道文件名。我用谷歌搜索了 15 分钟,但没有找到没有 MFC 的方法。

0 投票
3 回答
6845 浏览

c# - COM 注册和 GAC

我在 Visual Studio 2005 中有一个 Web 项目、一个 C# 库项目和一个 Web 设置项目。该 Web 项目需要 C# 库需要在 GAC 中注册。这很简单,只需将 GAC 文件夹添加到安装项目并将 C# 库的主要输出放在那里。C# 库还需要为 COM 互操作注册。我单击选择 GAC 文件夹中的主输出并将 Register 属性更改为 vsdrpCOM。我构建了安装项目并运行它,但 DLL 从未为 COM 注册。

这对我来说并不奇怪。我总是必须添加一个安装程序类,它有一个自定义操作,它使用 RegistrationServices.RegisterAssembly 正确注册我的 COM DLL。因此,我将多年来接受的这种解决方法应用于我的情况。现在,我发现在安装项目的 GAC 文件夹中分配给主要输出的自定义操作甚至会阻止安装项目的构建。

我一直觉得我在破解 .NET 和 COM 以更好地处理设置和部署项目。解决我的问题的正确方法是什么?

0 投票
1 回答
1416 浏览

delphi - 公寓之间的 ActiveX 事件

环境:VS2008 (ATL),Borland Developer Studio 2006。

大家好。我在处理 ActiveX 控件事件时遇到了一些问题。

以下是我的应用架构的简要说明:

有一个包含 STA ActiveX 控件(又名控件)和 MTA COM 对象(又名对象)的 inproc COM 服务器。

下面是控制和对象接口的 IDL 定义:

客户端是一个 Delphi 应用程序,窗体上带有 ActiveX 控件,它创建 MTA 对象并调用其 DoWork 方法

此方法直接调用 ActiveX 控件类的 Fire_SomeEvent 方法,并将“this”作为参数传递(指向 IObject 接口的指针)。Delphi 代码成功接收事件,但是当它尝试访问任何 IObject 方法或属性(为简单起见未在 idl 中显示)时,在 oleaut32.dll 中发生访问冲突。

一个重要的注意事项 - 我使用 ATLCPImplMT 类来实现从不同线程触发的事件(有关详细信息,请参阅http://support.microsoft.com/kb/280512)。此实现允许在事件触发时切换公寓(从对象的 MTA 公寓到 STA Delphi 形式的公寓)。我建议这个问题与不正确的事件参数封送处理有关,因为当使用标准 ATLCPImpl 类时一切正常。

跨公寓活动是否有任何限制?也许需要一些特殊的 Delphi 环境设置才能正确使用 activex 对象......

0 投票
3 回答
9892 浏览

vba - 在 Excel VBA 中使用 New 关键字和调用 CreateObject 有什么区别?

我应该使用什么标准来决定是否编写这样的 VBA 代码:

或像这样:

?

0 投票
2 回答
8827 浏览

com - 空 BSTR 和 NULL BSTR 之间应该有区别吗?

在维护COM接口时,是否应该以BSTRNULL? 换句话说,这两个函数调用是否应该产生相同的结果?

0 投票
2 回答
1287 浏览

.net - 从 Excel 调用 .NET COM Web 服务包装器

我正在尝试从 Excel 2003 模块调用 Web 服务。我实现它的方式是创建一个 .NET COM 库,其中包含我需要公开的所有类/方法。当我尝试调用从 Excel 查询 Web 服务的方法时,执行只是在该行停止,没有任何错误。可能与参考有关吗?我正在使用 Microsoft.Web.Services2.dll。我试过把它放在 C:\WINDOWS\SYSTEM32 - 不走运

0 投票
1 回答
3718 浏览

com - ISupportErrorInfo 的实现 - 这是什么意思?

ISupportErrorInfo界面是什么意思?我有点不知所措。来自 MSDN:

此接口确保错误信息可以正确地沿调用链向上传播。使用错误处理接口的自动化对象必须实现 ISupportErrorInfo。

此方法指示接口是否支持 IErrorInfo 接口。

在中返回 S_OK 是什么意思InterfaceSupportsErrorInfo?您应该为所有接口返回 S_OK 吗?一些?

0 投票
2 回答
378 浏览

c# - 通过 COM 使用 .NET 的 UserControl 作为嵌入式控件

我正在将现有的 .NET 3.5 应用程序移植到 Eclipse 插件中。

我想让我的自定义用户控件,用 C# 编写,嵌入到 Eclipse 中;我已经成功地将它导出为 COM 控件,并且在 Eclipse Europa 中运行良好。

在 Ganymede 中,OLE 加载代码似乎发生了变化,而最初在 Europa 中运行的代码失败了。

具体错误是当 Ganymede 加载我的控件时,它查询 IOleObject,接收正确的接口,然后在其上调用 SetClientSite,这导致我的对象丢失了它的两个引用,并被解除分配(Ganymede 将崩溃)。完全相同的控件在 Visual C++ 设计器和 Europa 中都能完美运行。

除了明显的 .NET 属性和 UserControl,我还需要继承什么特定的类吗?我需要实现的特定接口,或者 Europa/VC 和 Ganymede 之间的特定行为变化?

谢谢!