com-interop相关内容

用.NET COM .dll替换本机C ++ COM .dll

我们的客户有旧的Win32客户端,这些客户端使用我们提供的本机C ++ COM注册的.dll。 我们要用.NET版本替换本机.dll。因此,我们构建了.NET dll,并COM对其进行了注册。我们有本机C ++测试客户端,能够处理从旧.dll到新.dll的交换,但是...似乎我们需要对其进行重新编译才能正常工作。 是出于某些逻辑原因,我们需要重新编译测试客户端,还是我们做错了什么? ..
发布时间:2020-10-05 21:37:23 C#/.NET

如何在.NET C#WinService中使用COM服务器(ATL,DLL替代)?

我有一个DLL Com服务器,实际上仅由一个旧的Delphi exe应用程序使用。 COM Server是用C ++ ATL编写的(不是我写的)很多年前。它使用传出接口 IConnectionPointImpl 实现回调(事件-是否相同?)。 Class Factory是单例的(标记为 DECLARE_CLASSFACTORY_SINGLETON ) 现在,此COM服务器必须在一个以上 ..
发布时间:2020-10-05 21:30:02 C#/.NET

发行新版本的Tlb,以及何时需要重新引用Tlb

我有一个C#dll,并使用regasm生成了一个tlb。我已经给使用该tlb的用户提供了一个实用电子表格。每当我们发布新版本的应用程序时,tlb都会取消注册(并使用regasm.exe进行注册)。 但是,有时,一个新版本,它抛出“ ActiveX组件无法创建实例”错误,恰好在我创建类型对象的代码行上。我只是通过删除并添加回tlb参考来解决此问题。 (在vba模式下,工具-参考-取消选中tlb ..
发布时间:2020-10-05 21:29:58 C#/.NET

在使用C#编写的COM服务器的Windows上,可以为早绑定和晚绑定代码返回SAFEARRAY吗?

这个问题很长,所以我将用项目符号格式化以便于讨论 简介 我正在编写C#COM服务器。 COM服务器既可以在早期绑定模式下也可以在后期绑定模式下在Excel VBA中使用。 我的绊脚石是如何返回可在早期和晚期绑定模式下工作的实例化类的SAFEARRAY;我得到错误。 (整天)我已经做了很多工作: 我已经做了一些诊断并设置了调试器来说明我遇到的错误。 我做了一些相当详尽的谷歌 ..
发布时间:2020-10-05 21:27:42 C#/.NET

C#如何将IntPtr转换为结构?

一个简单的ATL com服务器: STDMETHODIMP CMyMath :: get_Version(sVersionStruct ** ppVer) { sVersionStruct * pVer = reinterpret_cast(CoTaskMemAlloc(sizeof(sVersionStruct)))); if(!pVer){ ..
发布时间:2020-10-05 21:23:25 C#/.NET

tlbimp.exe将HWND转换为_RemotableHandle

我们的COM组件接口具有下一个方法: HRESULT CreatePluginWindow([in] HWND hParent,[in] RECT * prcView); 我们将在.NET应用程序中使用它,但此接口的互操作看起来像这样: void CreatePluginWindow(ref interop.alfrontx._RemotableHandle h ..
发布时间:2020-10-05 21:21:53 C#/.NET

当应用保持运行状态时,如何清理.NET中的COM引用?

我正在开发一个.NET程序,该程序启动Excel的新实例,进行一些工作,然后结束,但必须使Excel运行。稍后,当程序再次运行时,它将尝试挂接到上一个实例。 在这种情况下处理COM对象释放的最佳方法是什么?如果我第一次不对应用程序对象执行“ ReleaseComObject”操作,则在第二次运行时获取活动对象,然后最终释放com对象,是否存在内存泄漏? 下面的简化代码说明了我正在尝试做 ..
发布时间:2020-10-05 21:16:20 C#/.NET

C#如何获取COM接口的实例

我一直在做很多事情,试图找到获取COM接口实例的标准方法。 Microsoft在以下示例中提供了一个示例他们的文章 COM Interop第1部分:客户端教程 : //创建一个COM协同类的实例: FilgraphManager graphManager =新的FilgraphManager(); //查看它是否支持IMediaControl COM接口。 //注意,如 ..
发布时间:2020-10-05 21:11:15 C#/.NET

将.NET对象从VB6传递到.NET的问题

我们有一个由第三方创建的.NET dll“ A”。它通过tlb将类公开给我们的VB6 exe应用程序。 我们也有自己的.NET dll“ B”,它引用了.NET dll“ A”。 现在,VB6应用程序在使用VB6代码中的任何一个库中的类之前都没有问题,直到我们尝试调用“ B”中具有参数类型为“ A”的函数。在那种情况下,我们会收到错误430或错误消息“无法将类型为'system .__ ..
发布时间:2020-10-05 21:01:33 其他开发

如何使用COM公开.netstandard2.0库以在VB6中使用?

我有一个dotnet核心库,一个框架4.7.2库和一个vb6应用程序。 我想编写一个公共库供所有人访问,因此选择.netstandard2.0 我尝试在.netstandard2.0库和vb6之间的4.7.2框架包装器库中。 但是我遇到了程序集绑定问题 查看文档我看到的 在.NET Core中,与.NET Framework相比,将.NET对象公开给COM的过程已大大 ..
发布时间:2020-10-05 20:56:32 其他开发

COM互操作:可变数量的参数

我正在开发一个C#库,我需要从COBOL(非托管)代码中调用该库。因此,我正在出于这些目的使用COM互操作。 我创建了一个“ ModuleLanucher”层来介导通信。 我已经通过以下命令注册了ModuleLanucher库: regasm ModuleLanucher.dll / codebase TLBEXP Modulelanucher .dll 如 ..
发布时间:2020-10-04 00:01:15 C#/.NET

Visual Studio 2010:嵌入互操作类型

我在 Scott Hanselmans博客 $中找到了有关此信息b $ b 有人确切知道这是什么意思吗? 这是仅用于Office Primary Interop程序集,还是我也可以使用它来嵌入我的兑换库或其他COM库? 解决方案 Scott Hanselman博客中描述的过程称为 Type Equivalence ,这是CLR 4.0对COM互操作类型的支持的相当模糊的术语组件。 ..
发布时间:2020-10-03 01:38:30 其他开发

如何将System.Object [*]转换为System.Object [] II

我在他的问题中遇到了类似Cheva的问题: 如何将System.Object [*]转换为System.Object [] I通过COM互操作功能使用外部库(路透社EIKON API)。 提交请求后,对象将更新,其数据成员也将更新。对象目录为Data成员显示了以下内容: 公共虚拟动态数据{get; } 在调试模式下,我看到,在提交请求后,DataStatu ..
发布时间:2020-09-29 22:18:36 C#/.NET

如何将IDispatch *放入托管代码中

我一直在考虑尝试使用实现OPOS服务对象的C#编写COM对象.我已经在C ++中使用Automation和MFC完成了这一任务,这并不难.因此,我陷入了尝试将其转换过来的方法之一.我会在界面中排除其他方法,因为它们很简单(或者我希望如此). [id(6), helpstring("method OpenService")] LONG OpenService(BSTR lpclDevClass ..
发布时间:2020-09-15 00:50:19 C#/.NET

COM互操作是否遵守.NET AppDomain边界进行程序集加载?

这是核心问题:我有一个.NET应用程序,它在 COM互操作中使用单独的AppDomain. COM东西似乎正在将程序集加载回默认域,而不是从中调用COM东西的AppDomain. 我想知道的是:这是预期的行为,还是我做错了什么事情,导致这些与COM相关的程序集加载到错误的AppDomain中?请在下面查看有关情况的更详细说明... 该应用程序由3个程序集组成: -主EXE,即应用程序的 ..
发布时间:2020-09-06 02:55:08 C#/.NET