问题标签 [com-interop]

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 投票
2 回答
733 浏览

.net - 作为计划作业运行时,具有 COM 互操作性的 SSIS 失败

我有一个 SSIS 包,它利用 RightFax 的 COM API (rfcomapi.dll) 周围的 COM 互操作 (Interop.RFCOMAPILib.dll)。

Interop 程序集已经过 GAC,因此我们可以在 SSIS 包中使用它

该软件包在我的本地机器上运行良好。但是如果手动启动它在服务器上也可以正常工作(意味着服务器上的所有配置都是正确的)


(来源:codinghorror.com

但是,当我们将包放在计划的作业上(在我们能够手动运行它的同一台服务器上)并让作业启动包时,它在下一行失败。

并出现以下错误

这一行是整个包中第一次尝试从 COM 互操作程序集实例化一个类。

会发生什么?线程问题还是什么?

0 投票
2 回答
415 浏览

asp.net - 托管具有长寿命的 COM 互操作的 .net 程序集?

我有一个组件(一个内置在.net 中的程序集),我需要(几乎)访问两个不同网站的每个请求。一个网站是用经典的 asp 编写的,另一个是用 asp.net mvc 编写的。

目前我在 asp.net 解决方案中引用程序集并像调用任何 .net 程序集一样调用它。在经典的 asp 网站上,我通过 COM 包装器调用它。

这一切都很好,除了现在我需要这个组件真正保持活动状态并监控对配置文件的更改。在我的 asp.net 网站中,我可以在应用程序范围内保留一个引用,我想我可以在组件服务中注册它以进行 asp 访问。

这是最好的方法吗?此外,这种方式实际上将托管组件两次 - 一个实例在 asp.net 应用程序范围内,一个实例在组件服务中。我也许可以只让它存在于组件服务中,然后从 asp.net 中引用它。

我不知道 - 有些东西闻起来很腥(不,不是我) - 我是在正确的轨道上还是你看到更好的选择?

0 投票
3 回答
4602 浏览

.net - 强制 .NET 互操作使用本地 COM DLL

是否可以强制互操作程序集引用其关联 COM DLL 的本地副本?

这是场景:

我有一个引用互操作程序集 (Interop.OTAClient.dll) 的 .NET 应用程序,它是 COM DLL 的互操作程序(OTAClient.dll,它是 HP Quality Center 的自动化 API)。我对 COM 不是很了解,但据我了解,互操作程序集通过注册表中的 GUID 引用而不是指向特定文件来查找 COM 类。

我遇到的问题是注册表项指向的 OTAClient.dll 副本被不同版本覆盖,具体取决于我刚刚在浏览器中登录的 QC 版本,并且这些 DLL 的不同版本不兼容彼此。.NET 应用程序只会连接到特定版本的 QC,所以我不能让 COM DLL 以这种方式变化。

任何建议将不胜感激,因为这种行为真的很烦人。我已经看到有关 COM 互操作问题的其他问题,但它们似乎都是关于强制使用互操作 DLL 的本地版本而不是 GAC 中的一个,而不是涉及实际 COM DLL 的这种特定场景。

0 投票
4 回答
162 浏览

c# - 为什么 Office Interop API 中存在接口/类(IFoo、FooClass)模式?

在Microsoft.Office.Interop.Visio 库中,每个实体(例如Shape)都被描述为一个类(ShapeClass)和一个接口Shape。

因此,对于您拥有的每个元素:

为什么会这样设计?

0 投票
1 回答
1542 浏览

c# - 使用 .Net 的 COM exe 中的类

我有一个 .exe 文件,里面有 COM 类——这些来自 C++,而不是 .netComVisible类型

我想在我的 .net 项目中使用这些类,但我无法添加对 exe 的引用;当我尝试我得到

tlbimp 也失败了;

但看起来好像有可用的 COM 类;在我的HKEY_CLASSES_ROOT蜂巢中,我可以看到不同 COM 类的条目;

任何人都知道如何,即使,我可以在 .net 项目中使用这些 COM 类?

0 投票
2 回答
869 浏览

javascript - 通过 COM Interop 使用 VB.net 调用 javascript 函数

我有一个为 COM 互操作注册的 VB.net 类,我正在使用以下代码在 HTML 页面中对其进行实例化:

我可以很好地调用它的方法,但假设我想将 javascript 函数设置为属性,如下所示:

我将如何设置我的 vb.net 代码以便能够触发该功能?这就是 MSXML 在 javascript 中为 XMLHttpRequest 对象工作的方式,您可以设置

我正在课堂上寻找类似的实现。

0 投票
4 回答
2955 浏览

c# - 如何调试由 vb6/vba 应用程序调用的 vs 2008 c# express dll?

我有 ac# dll,它被编写为充当包装器,以从数据源中获取数据并将其传递给 vba/powerpoint ppa 应用程序。我对 vba 没有太多经验,这就是为什么我要使用 vb6 来模拟它,我对此稍微了解一点。

到目前为止,我有足够的问题试图理解语法以及 com 和 ccw 的复杂工作方式。所以我正在寻找一种方法来调试为什么该函数没有返回任何数据,并且如果可能的话,在 vb6 应用程序调用它时对 .net dll 进行逐行演练。

最初我想在 .net dll 中放入一个函数,该函数将写入外部文件,但这似乎不起作用,我不知道为什么。

我做了一些谷歌搜索,发现有一个附加到进程的过程,这可能对我的情况有用,但该功能仅在 vs studio 完整版中可用

所以我希望有其他工具,我可以使用的方法可以让我正确调试 vb6/vba 应用程序和 .net dll 之间发生的事情。

谢谢。

0 投票
2 回答
2214 浏览

c# - 如何将 DIctionary<> 公开给 COM 互操作

我有一个按照以下方式定义的接口:

实现该接口的具体类需要为 COM Interop 注册。一切都编译并且程序集似乎注册正常,但是当尝试创建 COM 对象(例如从 PowerShell)时,我得到一个错误。

这似乎与我正在使用的通用 Dictionary<> 类有关。所以这是一个问题:

  1. 甚至可以通过 COM 互操作公开通用集合吗?
  2. 如果是,那么它是如何完成的?
  3. 如果没有,那么解决方法是什么?
0 投票
4 回答
3074 浏览

c# - 在 C# 中将 CodeElements 编组到 IntPtr

我正在编写一个 Visual Studio 插件,需要将托管 CodeElements 对象编组为非托管形式。我只需要内存中的指针,因为我可以强制转换它并将其视为非托管端的 CodeElement。

我知道如何处理 XML,并且我在 C# 中有一个工作版本。我创建了非托管 DLL,因为在最低级别的递归调用所有各种成员变量会降低程序的速度。我只需要知道如何使用 System.Runtime.Interop.Marshal 将 CodeElements 对象转换为指向内存中 COM 对象的指针。

谢谢。

0 投票
1 回答
77 浏览

c# - 如何使用 3rd Party API - C# 确定事件是否完成?

我目前正在使用第三方 ActiveX 控件,我需要检测从 API 调用的事件何时完成。

查看 VS 2008 对象浏览器中的 ActiveX 控件,我调用public virtual bool MyMethod()并且有一个事件public virtual event IActiveXObject_MyMethodEventHandler SettleComplete

还有一个代表_IActiveXObjectEvents_MyMethodCompleteEventHandler()是大会的一部分

我将如何编写代码来配置我的应用程序以检测来自 ActiveX 控件的事件何时完成?