interop相关内容
据我所知,在 COM 中实现编组的三种方法: typelib 编组 代理/存根编组 通过对象实现 IMarshal 现在组件consumer(用户)如何选择使用哪一个?它是自行决定并使用首选方式,还是调用一些内置函数并为它解决问题? 我目前遇到以下情况:我的组件实现了一个自定义接口ICustomInterface,该接口也由另一家公司的组件实现.我的组件没有类型库,也没有实现
..
我正在尝试将 VC6 COM DLL 添加到我们的 VS2010RC C# 解决方案中.DLL使用VC6工具编译生成x86版本,使用VC7跨平台工具编译生成VC7 DLL. 只要将使用 C# 项目的平台设置为 x86,x86 版本的程序集就可以正常工作.DLL 的 x64 或 x86 版本是否实际注册并不重要.它适用于两者.如果平台设置为“任何 CPU",我会在加载 Interop.
..
我在尝试实例化在经典 ASP 应用程序中暴露给 COM 的 C# .NET 类时遇到问题.我已经使用 tlbexp 生成了一个 typelib 并在 Component Services 中注册了它;现在尝试这样创建对象时: Server.CreateObject("The.Class.Name") 我收到错误: 服务器对象错误 'ASP 0177 : 80131534' Serv
..
我是 COM 新手,必须为 C++ dll 创建一个 COM 包装器,以使托管代码可以访问其中的某些功能.我主要关注 this tutorial on codeproject 来创建一个 COM ATL dll.我创建了一个后期构建步骤,它在 COM dll 上调用 tlbimp.exe 来创建包装. 添加对 tlbimp.exe 创建的 dll 的引用有效,并且我可以完成我的 COM dl
..
没有完全得到以下 来自 MSDN: ClassInterfaceType.None 表示没有类接口为类生成.如果不接口是显式实现的,该类只能提供后期绑定通过 IDispatch 访问界面.这是推荐的ClassInterfaceAttribute 的设置.使用 ClassInterfaceType.None 是公开功能的唯一方法通过实现的接口由类明确. [ComVisible(tr
..
.Net 中“检索带有 CLSID {XXXX} 的组件的 COM 类工厂失败,原因是以下错误:80080005"错误的故障排除过程是什么?澄清一下:我在运行时得到这个,在我的 XP 机器上,客户端是在管理员帐户下运行的 .net 代码.{XXXX} 是指我们内部的 COM 组件之一. 据我了解,0x80080005 是指“权限被拒绝",但我该去哪里检查/更改权限?还是我在这里完全错了,错误
..
在互操作调用之后,我得到了一个 COM 对象.我知道这个对象将是三个可能的 COM 类(Class1、Class2、Class3)之一,但不知道运行时是哪一个. 对该对象的反射 (interopObject.GetType()) 返回 System.__ComObject 的基本 RCW 包装器. 我需要在对象上设置一些属性 - Text1、Text2、... Text30(实际名称,
..
我目前正在开发一个库,该库将公开给 COM,以便在升级的旧项目中使用.我正在创建要公开的接口,它们具有 long、int 等类型的属性.使用 DescriptionAttribute,我可以获得在 .tlb 中为接口、类和方法生成的帮助字符串,但由于某种原因,它似乎不想为属性工作.无论如何要获得在 TLB 输出中为属性生成的帮助字符串吗? 解决方案 你必须将属性分别放在getter和set
..
我工作的软件公司为学校构建软件,因此我们的客户端计算机通常被锁定,导致我们几乎无法在其上安装任何东西. 我们的旧系统主要基于一个(非常大的)MS Access 项目,因此它只需从本地文件夹运行即可解决访问问题. 我被赋予了将一些系统重新开发为 c# .NET 的任务 - 但是在过渡阶段,如果能够让 access 项目触发 .NET 事情,那就太好了. 我今天已经玩了几个小时的 c
..
我有一个用托管代码 (C++/CLI) 编写的 COM 对象.我在标准 C++ 中使用该对象. 当 COM 对象被释放时,如何强制我的 COM 对象的析构函数立即被调用?如果这不可能,请调用我的 COM 对象上的 Release() 调用 MyDispose() 方法? 我声明对象的代码(C++/CLI): [Guid("57ED5388-blahblah")][接口类型(ComInte
..
在 VB6 中通过 COM 处理在 .NET 类上公开的事件 我的测试 .NET(在编译器设置中为互操作注册的类库)代码: 导入 System.Runtime.InteropServices_公共接口 MyEventInterface
..
我有一个通过 tlb 文件向 COM 公开的 .NET 程序集,以及一个注册 tlb 的安装程序.我已手动检查安装程序是否正常工作以及 COM 客户端是否可以访问该库.到目前为止,一切都很好...... 但是,我正在尝试组合一些自动化系统测试来检查安装程序是否正常工作.作为其中的一部分,我已经在 VM 上自动安装,现在我想对已安装的 COM 库进行一些调用,以验证它是否正常工作.我最初考虑用
..
我目前正在使用三段代码: 一个闭源应用程序 (Main.exe) 作为 dll (comobj.dll) 实现的闭源 VB COM 对象 我正在用 Python 开发的代码 comobj.dll 托管一个我想从 Python 中使用的 COM 对象(可以说是“MainInteract").我已经可以从 IronPython 完美地使用这个对象,但由于其他要求,我需要从常规 Pyth
..
是否可以通过 COM 互操作调用 .NET 对象上的静态方法? 我知道我可以编写一个包装类.如果我不想这样做怎么办? 解决方案 不,你不能这样做.COM 互操作通过对象而不是类型进行通信. 我知道的解决方法... 最好的解决方法是在实例上创建一个包装器方法来对类型进行调用.是的,这仍然需要一个实例,因此它无法达到目的,但这是您的最佳选择. 反向 PInvoke:仍然需要
..
我有时会遇到以下异常:已与其底层 RCW 分离的 COM 对象无法使用 示例代码: 使用(AdOrganizationalUnit 组织单位 = 新的 AdOrganizationalUnit(ADHelper.GetDirectoryEntry(ouAdDn))){使用(广告用户用户 = 组织单位.添加用户(commonName)){//设置一些属性user.Properties[key
..
我有一个包含几个类的托管程序集,这些类具有重载方法.我通过 将程序集公开给 COM/IDispatch 调用者 [ComVisible(true)] ..并且还在程序集本身上设置正确的 Guid.我没有为 COM 互操作定义显式接口.这一切都是动态完成的.我在托管 DLL 上运行 regasm.exe/codebase 并将其注册为 COM 互操作. 当我运行 OleView 时,我可
..
创建了一个 COM 服务器,我注册了它. 当我尝试在 COM 客户端中添加该 COM 服务器时,我无法添加,并且出现以下错误. " 不能引用 'COMTest'被添加 ActiveX 类型库'c\user\~\Debug\COMTest.tlb' 是从 .NET 程序集导出并且可以不作为参考添加. 改为添加对 .NET 的引用“ 谁能告诉我是什么错误.我以两种方式注册
..
我知道基本区别,因为 ReleaseComObject 仅将某个计数器减一,而 FinalReleaseComObject 将其减为零. 所以我通常听到的是,调用 FinalReleaseComObject 因为这样你就确定 COM 对象真的被释放了. 但这让我想知道,这个计数器有一个点对吗?如果你总是调用FinalReleaseComObject,你是不是破坏了这个机制.如果在您调用
..
我在 Visual Studio 中引用了一个 COM 库,因此它已自动为我创建了相应的 Interop 程序集.我想对这些 com 对象执行 GetType(),但它们总是返回 System.__ComObject.不过,查询它们的接口是可行的: bool isOfType = someComeObject is ISomeComObject;//这有效 但我真正想要的是返回 com 对象的
..
我正在尝试制作一个可以打开新 Outlook 2007 消息的程序. 我从 COM 选项卡中引用了 Microsoft Outlook 12.0 ObjectLibrary. 这些项目出现在 VS 中的引用中: Microsoft.Office.CoreMicrosoft.Office.Inerop.Outlook 现在我尝试调用以下代码: var _outlookInstanc
..