interop相关内容

COM如何选择如何编组接口?

据我所知,在 COM 中实现编组的三种方法: typelib 编组 代理/存根编组 通过对象实现 IMarshal 现在组件consumer(用户)如何选择使用哪一个?它是自行决定并使用首选方式,还是调用一些内置函数并为它解决问题? 我目前遇到以下情况:我的组件实现了一个自定义接口ICustomInterface,该接口也由另一家公司的组件实现.我的组件没有类型库,也没有实现 ..
发布时间:2022-01-14 12:15:44 其他开发

Visual Studio 2010 64 位 COM 互操作问题

我正在尝试将 VC6 COM DLL 添加到我们的 VS2010RC C# 解决方案中.DLL使用VC6工具编译生成x86版本,使用VC7跨平台工具编译生成VC7 DLL. 只要将使用 C# 项目的平台设置为 x86,x86 版本的程序集就可以正常工作.DLL 的 x64 或 x86 版本是否实际注册并不重要.它适用于两者.如果平台设置为“任何 CPU",我会在加载 Interop. ..
发布时间:2022-01-14 12:14:42 其他开发

通过经典 ASP 实例化 .NET/COM 互操作类时出错

我在尝试实例化在经典 ASP 应用程序中暴露给 COM 的 C# .NET 类时遇到问题.我已经使用 tlbexp 生成了一个 typelib 并在 Component Services 中注册了它;现在尝试这样创建对象时: Server.CreateObject("The.Class.Name") 我收到错误: 服务器对象错误 'ASP 0177 : 80131534' Serv ..
发布时间:2022-01-14 12:12:18 C#/.NET

使用 C#/托管代码为免注册 COM 互操作设置 DLL

我是 COM 新手,必须为 C++ dll 创建一个 COM 包装器,以使托管代码可以访问其中的某些功能.我主要关注 this tutorial on codeproject 来创建一个 COM ATL dll.我创建了一个后期构建步骤,它在 COM dll 上调用 tlbimp.exe 来创建包装. 添加对 tlbimp.exe 创建的 dll 的引用有效,并且我可以完成我的 COM dl ..
发布时间:2022-01-14 12:11:26 C#/.NET

需要 ClassInterfaceType.None 吗?

没有完全得到以下 来自 MSDN: ClassInterfaceType.None 表示没有类接口为类生成.如果不接口是显式实现的,该类只能提供后期绑定通过 IDispatch 访问界面.这是推荐的ClassInterfaceAttribute 的设置.使用 ClassInterfaceType.None 是公开功能的唯一方法通过实现的接口由类明确. [ComVisible(tr ..
发布时间:2022-01-14 12:09:21 C#/.NET

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

.Net 中“检索带有 CLSID {XXXX} 的组件的 COM 类工厂失败,原因是以下错误:80080005"错误的故障排除过程是什么?澄清一下:我在运行时得到这个,在我的 XP 机器上,客户端是在管理员帐户下运行的 .net 代码.{XXXX} 是指我们内部的 COM 组件之一. 据我了解,0x80080005 是指“权限被拒绝",但我该去哪里检查/更改权限?还是我在这里完全错了,错误 ..
发布时间:2022-01-14 12:06:08 C#/.NET

将反射与 COM 互操作一起使用

在互操作调用之后,我得到了一个 COM 对象.我知道这个对象将是三个可能的 COM 类(Class1、Class2、Class3)之一,但不知道运行时是哪一个. 对该对象的反射 (interopObject.GetType()) 返回 System.__ComObject 的基本 RCW 包装器. 我需要在对象上设置一些属性 - Text1、Text2、... Text30(实际名称, ..
发布时间:2022-01-14 12:05:32 C#/.NET

将 helpstring 属性应用于通过 COM 接口公开的 C# 属性

我目前正在开发一个库,该库将公开给 COM,以便在升级的旧项目中使用.我正在创建要公开的接口,它们具有 long、int 等类型的属性.使用 DescriptionAttribute,我可以获得在 .tlb 中为接口、类和方法生成的帮助字符串,但由于某种原因,它似乎不想为属性工作.无论如何要获得在 TLB 输出中为属性生成的帮助字符串吗? 解决方案 你必须将属性分别放在getter和set ..
发布时间:2022-01-14 12:02:36 C#/.NET

来自VB6的.NET对象而不使用regasm.exe?

我工作的软件公司为学校构建软件,因此我们的客户端计算机通常被锁定,导致我们几乎无法在其上安装任何东西. 我们的旧系统主要基于一个(非常大的)MS Access 项目,因此它只需从本地文件夹运行即可解决访问问题. 我被赋予了将一些系统重新开发为 c# .NET 的任务 - 但是在过渡阶段,如果能够让 access 项目触发 .NET 事情,那就太好了. 我今天已经玩了几个小时的 c ..
发布时间:2022-01-14 12:02:03 C#/.NET

如何在 Release() 上处理 NET COM 互操作对象

我有一个用托管代码 (C++/CLI) 编写的 COM 对象.我在标准 C++ 中使用该对象. 当 COM 对象被释放时,如何强制我的 COM 对象的析构函数立即被调用?如果这不可能,请调用我的 COM 对象上的 Release() 调用 MyDispose() 方法? 我声明对象的代码(C++/CLI): [Guid("57ED5388-blahblah")][接口类型(ComInte ..
发布时间:2022-01-14 11:59:23 C#/.NET

是否可以从 .NET 测试 COM 公开的程序集?

我有一个通过 tlb 文件向 COM 公开的 .NET 程序集,以及一个注册 tlb 的安装程序.我已手动检查安装程序是否正常工作以及 COM 客户端是否可以访问该库.到目前为止,一切都很好...... 但是,我正在尝试组合一些自动化系统测试来检查安装程序是否正常工作.作为其中的一部分,我已经在 VM 上自动安装,现在我想对已安装的 COM 库进行一些调用,以验证它是否正常工作.我最初考虑用 ..
发布时间:2022-01-14 11:58:45 C#/.NET

通过已注册的 TLB 从 python 访问未注册的 COM 对象

我目前正在使用三段代码: 一个闭源应用程序 (Main.exe) 作为 dll (comobj.dll) 实现的闭源 VB COM 对象 我正在用 Python 开发的代码 comobj.dll 托管一个我想从 Python 中使用的 COM 对象(可以说是“MainInteract").我已经可以从 IronPython 完美地使用这个对象,但由于其他要求,我需要从常规 Pyth ..
发布时间:2022-01-14 11:57:53 Python

如何通过 COM 互操作在 .NET 对象上调用静态方法?

是否可以通过 COM 互操作调用 .NET 对象上的静态方法? 我知道我可以编写一个包装类.如果我不想这样做怎么办? 解决方案 不,你不能这样做.COM 互操作通过对象而不是类型进行通信. 我知道的解决方法... 最好的解决方法是在实例上创建一个包装器方法来对类型进行调用.是的,这仍然需要一个实例,因此它无法达到目的,但这是您的最佳选择. 反向 PInvoke:仍然需要 ..
发布时间:2022-01-14 11:55:43 C#/.NET

COM 互操作 (CCW) 中的重载 - IDispatch 名称包括后缀(_2、_3 等)

我有一个包含几个类的托管程序集,这些类具有重载方法.我通过 将程序集公开给 COM/IDispatch 调用者 [ComVisible(true)] ..并且还在程序集本身上设置正确的 Guid.我没有为 COM 互操作定义显式接口.这一切都是动态完成的.我在托管 DLL 上运行 regasm.exe/codebase 并将其注册为 COM 互操作. 当我运行 OleView 时,我可 ..
发布时间:2022-01-14 11:53:52 C#/.NET

不能在 COM 客户端中添加引用 COM?

创建了一个 COM 服务器,我注册了它. 当我尝试在 COM 客户端中添加该 COM 服务器时,我无法添加,并且出现以下错误. " 不能引用 'COMTest'被添加 ActiveX 类型库'c\user\~\Debug\COMTest.tlb' 是从 .NET 程序集导出并且可以不作为参考添加. 改为添加对 .NET 的引用“ 谁能告诉我是什么错误.我以两种方式注册 ..
发布时间:2022-01-14 11:53:15 C#/.NET

为什么使用 FinalReleaseComObject 而不是 ReleaseComObject?

我知道基本区别,因为 ReleaseComObject 仅将某个计数器减一,而 FinalReleaseComObject 将其减为零. 所以我通常听到的是,调用 FinalReleaseComObject 因为这样你就确定 COM 对象真的被释放了. 但这让我想知道,这个计数器有一个点对吗?如果你总是调用FinalReleaseComObject,你是不是破坏了这个机制.如果在您调用 ..
发布时间:2022-01-14 11:49:06 C#/.NET

如何获取 COM 对象的类型

我在 Visual Studio 中引用了一个 COM 库,因此它已自动为我创建了相应的 Interop 程序集.我想对这些 com 对象执行 GetType(),但它们总是返回 System.__ComObject.不过,查询它们的接口是可行的: bool isOfType = someComeObject is ISomeComObject;//这有效 但我真正想要的是返回 com 对象的 ..
发布时间:2022-01-14 11:48:57 C#/.NET