com-interop相关内容
创建了一个 COM 服务器,我注册了它. 当我尝试在 COM 客户端中添加该 COM 服务器时,我无法添加,并且出现以下错误. " 不能引用 'COMTest'被添加 ActiveX 类型库'c\user\~\Debug\COMTest.tlb' 是从 .NET 程序集导出并且可以不作为参考添加. 改为添加对 .NET 的引用“ 谁能告诉我是什么错误.我以两种方式注册
..
这是挑战.我来自框架的 WebBrowserSite 类.我的派生类的实例 ImprovedWebBrowserSite 通过 WebBrowser.CreateWebBrowserSiteBase,我在派生版本的 WebBrowser 类- 专门提供一个自定义站点对象.框架的 WebBrowser 实现进一步将其传递给底层的非托管 WebBrowser ActiveX 控件. 到目前为止,
..
我有 C++ 基础库,客户端应用程序是 C#.有 c++/cli 接口可以从 C# 访问 c++ api.在没有像 NUnit 或 WCF 托管这样的多个应用程序域发挥作用(即使用一个应用程序域)之前,每件事都可以正常工作. 我已将托管对象存储在 cli 的 gcroot 中以供回调.我已经读到这是应用程序域问题的根本原因(“无法跨 AppDomains 传递 GCHandle"),因为它们
..
使用 VS 2008,这是我的 COM 对象 使用系统;使用 System.Collections.Generic;使用 System.Text;使用 System.Runtime.InteropServices;使用 System.Windows.Forms;命名空间 TestCom{[指南(“9E5E5FB2-219D-4ee7-AB27-E4DBED8E123E")][ClassInter
..
我在 Visual Studio 中引用了一个 COM 库,因此它已自动为我创建了相应的 Interop 程序集.我想对这些 com 对象执行 GetType(),但它们总是返回 System.__ComObject.不过,查询它们的接口是可行的: bool isOfType = someComeObject is ISomeComObject;//这有效 但我真正想要的是返回 com 对象的
..
正如我的问题 使用 PowerShell 创建 ISO 映像:如何将 IStream 保存到文件? 中所述,我在 PowerShell 中创建了一个 IStream 对象如下: $is = (New-Object -ComObject IMAPI2FS.MsftFileSystemImage).CreateResultImage().ImageStream 此对象属于 (PowerShell)
..
我有一个 COM 类 CMyCOMServer 在一个应用程序中实现 IMyInterface,两者都具有正确的 GUID.如果请求 IUnknown 或 IMyInterface,CMyCOMServer::QueryInterface 将返回 S_OK(并将自身转换为正确的类型),否则返回 E_NOINTERFACE. 在同一台 PC 上的另一个应用程序中,我调用: HRESULT h
..
首先,我是 COM 新手,目前很困惑.我在 MSDN 和一般网络上阅读了很多关于 COM 的文档,但其中很多似乎已经过时且过于复杂. 这是我认为让它发挥作用所必需的.它还没有,所以我确定我遗漏了一些东西,但是通过提供我的食谱,我希望有人能发现问题: 创建一个 C# 控制台应用项目.我把它命名为 CSharpApp 创建一个 C++ ATL 项目.我称之为 ComLib.Interop
..
这里已经描述了在没有管理员权限的情况下调用 regasm 的解决方法: 没有 regasm 的 COM 互操作 我正在尝试创建一个 COM 库,我的用户可以在没有管理员权限的情况下从 Excel VBA 部署和使用该库.我喜欢 regasm 解决方法,因为人们似乎在使用 Excel VBA 中的免注册 COM 对象方面没有取得多大成功.我还希望提前绑定,以便我的用户可以从语法补全中受益
..
显然,来自非托管进程外 COM 服务器的事件托管处理程序在随机池线程上被回调,而不是在主 STA 线程上(如我所料).我在回答有关 Internet Explorer 自动化 的问题时发现了这一点.在下面的代码中,DocumentComplete 在非 UI 线程上触发(因此 "Event thread" 与 "Main thread" 不同在调试输出中).因此,我必须使用 this.Invoke
..
考虑以下使用 COM 对象的 C# 代码. MyComObject o = 新的 MyComObject;尝试{var baz = o.Foo.Bar.Baz;尝试{//用 baz 做一些事情}最后{Marshal.ReleaseComObject(baz);}}最后{Marshal.ReleaseComObject(o);} 这将释放 COM 对象 o 和 baz,但不会释放 o.Foo
..
.NET 对象默认是自由线程的.如果通过 COM 编组到另一个线程,它们总是被编组给自己,无论创建者线程是否是 STA,也不管它们的 ThreadingModel 注册表值如何.我怀疑,他们聚合了 Free Threaded Marshaler(可以找到关于 COM 线程的更多详细信息
..
我正在 .NET 中创建一个包装类(VB.NET,但它与 C# 同样相关),它向 COM 公开,我试图包装的属性之一是 Variant.我以为我只能使用一个对象,但我得到一个错误: 公共属性 FieldValue([vFieldID As Object = -1]) As Object 不能作为属性“让"公开给 COM.从 Visual Basic 6.0 开始,您将无法使用“Let"语句为
..
如何将 C# DLL 制作成可供 VB6 应用程序使用的 COM 互操作 DLL? 解决方案 这是我想在 StackOverflow 中找到但找不到的答案.事实证明,将简单的 C# dll 转换为 COM dll 相当容易. 创建 C# dll 使用 C# 类项目创建解决方案.该类应该有一个属性/方法的接口和一个事件的接口.将 GUID 属性分配给类和接口,如 MSDN - 示
..
我对托管/非托管互操作性和 COM 概念非常陌生. 我收到了使用 COM Interop 的建议,以便在 C# 中使用我现有的 MFC 代码.但对我来说问题是,我有一个不是有效 COM 组件的 MFC Dll.如何使这个 MFC DLL 具有可在 .NET 中使用的 COM 可访问接口? 解决方案 从线程 在 C# 中加载 MFC DLLWindows 应用程序 要从 C# 访
..
我们正在开发一个引用一些 COM 库(例如 AutoIT)的 C# 应用程序. 我将源代码控制下的所有引用组件包含在第 3 方“Libs"文件夹中. 问题是 COM dll 在 .csproj 文件中没有 HintPath 属性,我假设这些必须使用 regsvr32(或使用某种脚本)手动注册. 我目前正在考虑创建一个将在每次构建之前运行的 MSBuild 脚本,但是我不知道是否应
..
我注意到,如果我制作一个公开 ArrayList 的 .NET 组件,那么该 ArrayList 将通过 COM Interop 并在脚本语言(如 VBScript)中可用. 泛型,例如 IList 似乎不起作用. 这是为什么?有什么方法可以使泛型类型成功地通过 COM Interop 流向脚本引擎? 解决方案 泛型是在 .NET 2.0 中添加的,COM 存在于 .NET 1
..
您可以通过 VBScript 中的 COM-interop 使用 .NET 方法.由于重载不会跨越托管/非托管边界,因此您必须向该方法附加某个后缀编号.后缀号好像没有特定的顺序……后缀号是怎么确定的? 示例: Dim 编码,bytesthroughdotnet设置编码 = CreateObject("System.Text.UTF8Encoding")bytesthroughdotnet
..
我正在尝试用 C# 编写一个组件,供经典 ASP 使用,它允许我访问组件的索引器(又名默认属性). 例如: C# 组件: 公共类 MyCollection {公共字符串 this[字符串键] {get {/* 返回与键关联的值 */}}公共无效添加(字符串键,字符串值){/* 添加一个新元素 */}} ASP 消费者: Dim 集合Set collection = Server.Cr
..
当 Visual Studio 未以管理员身份启动时,此代码在 release r 调试中运行没有问题. Marshal.GetActiveObject("Outlook.Application"); 但是,当我以管理员身份启动 Vs 并在调试中运行同一行时,出现以下错误: System.Runtime.InteropServices.COMException操作不可用(来自 HRESULT
..