com-interop相关内容

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

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

无法跨 AppDomains 传递 GCHandle:没有委托的解决方案?

我有 C++ 基础库,客户端应用程序是 C#.有 c++/cli 接口可以从 C# 访问 c++ api.在没有像 NUnit 或 WCF 托管这样的多个应用程序域发挥作用(即使用一个应用程序域)之前,每件事都可以正常工作. 我已将托管对象存储在 cli 的 gcroot 中以供回调.我已经读到这是应用程序域问题的根本原因(“无法跨 AppDomains 传递 GCHandle"),因为它们 ..
发布时间:2022-01-14 11:52:00 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

如何在 Visual Studio 2012 中创建 HelloWorld COM 互操作

首先,我是 COM 新手,目前很困惑.我在 MSDN 和一般网络上阅读了很多关于 COM 的文档,但其中很多似乎已经过时且过于复杂. 这是我认为让它发挥作用所必需的.它还没有,所以我确定我遗漏了一些东西,但是通过提供我的食谱,我希望有人能发现问题: 创建一个 C# 控制台应用项目.我把它命名为 CSharpApp 创建一个 C++ ATL 项目.我称之为 ComLib.Interop ..
发布时间:2022-01-14 11:42:39 C#/.NET

在 Excel VBA 中调用没有管理权限的 COM 互操作 regasm

这里已经描述了在没有管理员权限的情况下调用 regasm 的解决方法: 没有 regasm 的 COM 互操作 我正在尝试创建一个 COM 库,我的用户可以在没有管理员权限的情况下从 Excel VBA 部署和使用该库.我喜欢 regasm 解决方法,因为人们似乎在使用 Excel VBA 中的免注册 COM 对象方面没有取得多大成功.我还希望提前绑定,以便我的用户可以从语法补全中受益 ..
发布时间:2022-01-14 11:41:46 其他开发

在托管 STA 应用程序中处理来自进程外 COM 服务器的事件

显然,来自非托管进程外 COM 服务器的事件托管处理程序在随机池线程上被回调,而不是在主 STA 线程上(如我所料).我在回答有关 Internet Explorer 自动化 的问题时发现了这一点.在下面的代码中,DocumentComplete 在非 UI 线程上触发(因此 "Event thread" 与 "Main thread" 不同在调试输出中).因此,我必须使用 this.Invoke ..
发布时间:2022-01-14 11:40:21 C#/.NET

释放临时 COM 对象

考虑以下使用 COM 对象的 C# 代码. MyComObject o = 新的 MyComObject;尝试{var baz = o.Foo.Bar.Baz;尝试{//用 baz 做一些事情}最后{Marshal.ReleaseComObject(baz);}}最后{Marshal.ReleaseComObject(o);} 这将释放 COM 对象 o 和 baz,但不会释放 o.Foo ..
发布时间:2022-01-14 11:39:55 C#/.NET

如何使 .NET COM 对象成为单元线程?

.NET 对象默认是自由线程的.如果通过 COM 编组到另一个线程,它们总是被编组给自己,无论创建者线程是否是 STA,也不管它们的 ThreadingModel 注册表值如何.我怀疑,他们聚合了 Free Threaded Marshaler(可以找到关于 COM 线程的更多详细信息 ..
发布时间:2022-01-14 11:38:47 C#/.NET

在 .NET 中将属性公开为变体以进行互操作

我正在 .NET 中创建一个包装类(VB.NET,但它与 C# 同样相关),它向 COM 公开,我试图包装的属性之一是 Variant.我以为我只能使用一个对象,但我得到一个错误: 公共属性 FieldValue([vFieldID As Object = -1]) As Object 不能作为属性“让"公开给 COM.从 Visual Basic 6.0 开始,您将无法使用“Let"语句为 ..
发布时间:2022-01-14 11:38:37 C#/.NET

将简单的 C# DLL 转换为 COM 互操作组件

如何将 C# DLL 制作成可供 VB6 应用程序使用的 COM 互操作 DLL? 解决方案 这是我想在 StackOverflow 中找到但找不到的答案.事实证明,将简单的 C# dll 转换为 COM dll 相当容易. 创建 C# dll 使用 C# 类项目创建解决方案.该类应该有一个属性/方法的接口和一个事件的接口.将 GUID 属性分配给类和接口,如 MSDN - 示 ..
发布时间:2022-01-14 11:33:11 C#/.NET

带有 COM 接口的 MFC Dll

我对托管/非托管互操作性和 COM 概念非常陌生. 我收到了使用 COM Interop 的建议,以便在 C# 中使用我现有的 MFC 代码.但对我来说问题是,我有一个不是有效 COM 组件的 MFC Dll.如何使这个 MFC DLL 具有可在 .NET 中使用的 COM 可访问接口? 解决方案 从线程 在 C# 中加载 MFC DLLWindows 应用程序 要从 C# 访 ..
发布时间:2022-01-12 14:59:35 C#/.NET

在构建服务器上注册 COM 引用的 DLL

我们正在开发一个引用一些 COM 库(例如 AutoIT)的 C# 应用程序. 我将源代码控制下的所有引用组件包含在第 3 方“Libs"文件夹中. 问题是 COM dll 在 .csproj 文件中没有 HintPath 属性,我假设这些必须使用 regsvr32(或使用某种脚本)手动注册. 我目前正在考虑创建一个将在每次构建之前运行的 MSBuild 脚本,但是我不知道是否应 ..
发布时间:2022-01-08 15:22:25 C#/.NET

为什么 ArrayList 与 COM Interop 一起工作,但 IList 与 COM Interop 一起工作?不是吗?

我注意到,如果我制作一个公开 ArrayList 的 .NET 组件,那么该 ArrayList 将通过 COM Interop 并在脚本语言(如 VBScript)中可用. 泛型,例如 IList 似乎不起作用. 这是为什么?有什么方法可以使泛型类型成功地通过 COM Interop 流向脚本引擎? 解决方案 泛型是在 .NET 2.0 中添加的,COM 存在于 .NET 1 ..
发布时间:2022-01-04 10:16:03 其他开发

在 VBScript 中确定 .Net 方法后缀号(COM-interop)

您可以通过 VBScript 中的 COM-interop 使用 .NET 方法.由于重载不会跨越托管/非托管边界,因此您必须向该方法附加某个后缀编号.后缀号好像没有特定的顺序……后缀号是怎么确定的? 示例: Dim 编码,bytesthroughdotnet设置编码 = CreateObject("System.Text.UTF8Encoding")bytesthroughdotnet ..
发布时间:2022-01-01 09:24:38 C#/.NET

通过 COM Interop 公开索引器/默认属性

我正在尝试用 C# 编写一个组件,供经典 ASP 使用,它允许我访问组件的索引器(又名默认属性). 例如: C# 组件: 公共类 MyCollection {公共字符串 this[字符串键] {get {/* 返回与键关联的值 */}}公共无效添加(字符串键,字符串值){/* 添加一个新元素 */}} ASP 消费者: Dim 集合Set collection = Server.Cr ..
发布时间:2022-01-01 09:09:41 C#/.NET

Marshal.GetActiveObject(“Outlook.Application") 在使用提升的权限进行调试时抛出 MK_E_UNAVAILABLE

当 Visual Studio 未以管理员身份启动时,此代码在 release r 调试中运行没有问题. Marshal.GetActiveObject("Outlook.Application"); 但是,当我以管理员身份启动 Vs 并在调试中运行同一行时,出现以下错误: System.Runtime.InteropServices.COMException操作不可用(来自 HRESULT ..
发布时间:2021-12-31 14:13:06 C#/.NET