com-interop相关内容

64 位 COM dll 和 C#/.Net 应用程序之间的免注册互操作

我正在尝试在 64 位 COM dll 和 C# 应用程序之间实现免注册的 COM 互操作. 在上一个问题的答案中我的,我得到了帮助,使我能够在 C# 的 64 位 COM dll 上成功调用 HelloWorld 方法. 然而,这只能通过使用 regsrv32.exe 全局注册 COM dll 来实现. 基于这个答案对一个相关问题,我认为我需要在参考上设置隔离标志COM dll ..
发布时间:2021-11-25 06:12:42 C#/.NET

在 64 位环境中使用 32 位 COM 对象

下面的代码在 32 位 c# 应用程序中执行没有问题. object obj = system.Runtime.InteropServices.Marshal.GetActiveObject("Due.Application");var Due = (Due.IDueApplication2)obj; 现在,我尝试在 64 位 c# 应用程序中使用相同的代码,因此我按照 中的说明进行操作 ..
发布时间:2021-11-25 00:31:01 C#/.NET

由于以下错误,检索具有 CLSID {XXXX} 的组件的 COM 类工厂失败:80040154

我使用 C#.NET 开发了一个 Windows 服务来生成 PDF 报告.要生成 PDF 文件,我使用了第三方 dll.该应用程序在我的 Windows XP 平台上运行.当我在 Windows Server 2008 64 位版本中部署该服务时,出现以下错误: 检索 COM 类工厂带有 CLSID 的组件{46521B1F-0A5B-4871-A4C2-FD5C9276F4C6}由于以下 ..
发布时间:2021-11-24 23:21:04 C#/.NET

使用 .NET Core 在 Mac OSX 上的 Office (Excel) COM 互操作?

我为一个团队工作,该团队目前专门在 C#/.NET 中创建 Windows 桌面应用程序,这些应用程序通过 Office COM Interop 与 Microsoft Excel 的本地用户实例交互.我目前负责指定新产品,但有人告诉我,除非该应用程序可以在 Mac 和 Windows 上运行,否则该项目不会继续进行——也就是说,我们必须能够生成该应用程序的 Mac 版本可以在 OSX 上本地安装 ..
发布时间:2021-11-24 17:53:30 C#/.NET

创建 COM 互操作类的实例

我正在尝试使用 C# 从我的程序中打开 CorelDRAW.到目前为止,我已经能够通过引用适当的 com 库并调用 CorelDRAW.Application draw = new CorelDRAW.Application();draw.Visible = true; 但是,我希望我的程序能够与支持互操作的任何版本的 CorelDRAW 一起使用.我正在尝试使用反射在运行时加载互操作库,其中 ..
发布时间:2021-11-24 11:40:23 C#/.NET

如何正确地将 VB-Script 数组与用 C# 编写的 COM 组件进行编组

我正在用 C# (.Net 4.0) 构建一个 COM 对象,用于经典的 asp 站点.现在我想知道在组件和 asp 站点之间来回编组 VB-Script 数组(单维和多维)的正确方法是什么?代码示例将不胜感激. 解决方案 VBScript 只喜欢处理包含 VARIANTS 的 SAFEARRAY.它喜欢在 COM 方法或属性的 VARIANTS 中传递这些信息.因此,您需要构造一个包含 ..
发布时间:2021-11-18 03:00:42 C#/.NET

COM 互操作是否尊重 .NET AppDomain 边界以加载程序集?

这是核心问题:我有一个 .NET 应用程序,它使用 COM interop单独的应用程序域.COM 内容似乎正在将程序集加载回默认域,而不是从中调用 COM 内容的 AppDomain. 我想知道的是:这是预期的行为,还是我做错了什么导致这些与 COM 相关的程序集加载到错误的 AppDomain 中?请参阅下面更详细的情况描述... 该应用程序由 3 个程序集组成:- 主 EXE,应 ..
发布时间:2021-11-16 19:10:26 C#/.NET

在 64 位环境中使用 32 位 COM 对象

下面的代码在 32 位 c# 应用程序中执行没有问题. object obj = system.Runtime.InteropServices.Marshal.GetActiveObject("Due.Application");var Due = (Due.IDueApplication2)obj; 现在,我尝试在 64 位 c# 应用程序中使用相同的代码,因此我按照 中的说明进行操作 ..
发布时间:2021-10-26 16:11:25 C#/.NET

为什么我要使用“Both"?COM线程模型而不是“免费"?

根据 这篇文章 如果我使用“Both"或“Free"线程模型注册我的 COM 对象,该对象必须是完全线程安全的.具体来说,所有对全局共享变量的访问必须同步,对成员变量的所有访问也必须同步.这是一个很大的努力. 现在我明白能够将我的对象注册为使用“免费"线程模型是有利的,并且可能值得为使其完全线程安全而付出代价.但是为什么我想做同样的事情并使用“Both"线程模型注册我的对象呢?会有什么好处? ..
发布时间:2021-09-26 19:03:43 其他开发

警告:类型库导出器遇到了从泛型类派生的类型并且未标记为 [ClassInterface(ClassInterfaceType.None)]

我正在制作一个程序套件来连接到远程服务器并通过 WSDL 发送一些信息,这很成功并且工作正常,但是我被命令将我的所有程序移植到 DLL 中,我必须启用 COM 互操作并制作一些返回,我的大多数程序都运行良好,直到我在使用两个由 WSDL 制作的代理类的程序中发现此错误之前,我花了整整一周的时间阅读网络详细信息,但我不明白如何修复它,这是错误 Warning 1 类型库导出器警告处理“Tarea. ..
发布时间:2021-09-18 19:23:20 C#/.NET

带有 COM Interop 的 VB.NET 类,从 VBA (Access) 使用时缺少大多数属性

我编写了一个启用了 COM Interop 的 VB.NET 类,因此可以在 VBA 中使用它 - 特别是 MS Access. 该类在 VB.NET 中运行良好.使用 Accees,我可以添加对它的引用、实例化主对象并设置和返回一些属性. 但 Access 无法识别与主类下的子类相关的任何内容.VB.NET 公开这些类没有问题,但 VBA 不行. 这仅仅是 COM Intero ..
发布时间:2021-09-16 20:11:45 其他开发

.Net 项目中的 .Net COM+:System.IO.FileNotFoundException

我编写了一个在 COM+ 应用程序中运行的 .Net 组件.该组件继承自 ServicedComponent 并被标记为作为服务器进程运行(因为我需要通过来自多个消费者的激活来维护静态数据). 使用 RegAsm.exe 完成注册: c:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe/codebase MyObject.dll ..
发布时间:2021-07-07 19:12:44 C#/.NET

再次引用嵌入式互操作程序集

我将第三方图形包Olectra Chart包含到VB.Net项目中,但受到以下警告的困扰:- vbc:警告BC40059:已创建对嵌入式互操作的引用程序集"Interop.OlectraChart2D",因为间接引用程序集"AxInterop.OlectraChart2D"中的程序集.考虑更改任一程序集上的“嵌入互操作类型"属性. vbc:警告BC40059:已创建对嵌入式互操作的引用 ..
发布时间:2021-04-23 19:21:47 其他开发

发布Excel COM对象

我有一些使用Excel COM对象的Excel自动化代码.在其他SO帖子中,我知道一个人应该做以下事情尽早释放对象: Excel.Range rng = GetSomeRange();//用rng做某事...元帅.ReleaseComObject(rng); 但是,如果我遍历某个范围内的单元格,是否遵循以下正确步骤? Excel.Range rng = GetSomeRange();f ..
发布时间:2021-04-23 19:21:44 C#/.NET

使用DLL中的类创建VB6应用程序,然后在构建后换出该DLL?

所以我的问题相对简单,我可以创建在dll中引用一个类的VB6应用程序,然后在运行时将该dll替换为另一个吗? 现在我的初步猜测是……在VB6中没有机会. 所以我的想法转向了VB.net互操作dll.我可以在这里做,然后从VB调用interop dll吗? 再说一次,我的猜想是…….但是如果有人知道的不同,我会很高兴. 我认为真正可行的唯一方法是.Net中的DI,但我只能将. ..
发布时间:2021-04-23 19:21:41 其他开发

我可以在不使用“不安全"的情况下封送带有2d数组的C结构吗?

我有一个C DLL,我正在为其编写C#互操作类. 在C DLL中,关键方法之一是填充2d结构.该结构是通过辅助方法分配和释放的,如下所示: //简单的结构定义-普通的旧数据typedef struct MyPodStruct_s{双双b;} MyPodStruct;typedef结构My2dArray_s{MyPodStruct ** arr;//由Init2d分配;//数组数组.//用法 ..
发布时间:2021-04-23 19:21:36 C#/.NET