问题标签 [com]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
5742 浏览

c# - 在 C# 中实现“out of proc”COM 服务器需要做什么?

我正在尝试实现一个用 C# 编写的“out of proc”COM 服务器。我该怎么做呢?

我需要 C# 代码从我的主 C++ 应用程序中“脱离 proc”,因为我无法将 .NET 运行时加载到我的主进程空间中

为什么?:
我的 C++ 代码位于加载到许多不同客户 EXE 中的 DLL 中,其中一些使用不同版本的 .NET 运行时。由于只能将一个运行时加载到单个进程中,因此我最好的选择似乎是将我的 C# 代码放入另一个进程中。

0 投票
1 回答
1949 浏览

com - COMException "库未注册。" 使用 System.DirectoryServices 时

我刚刚开始在 Windows 2000 上的 .NET 2 框架下的 Windows 窗体应用程序中使用System.DirectoryServices.

我已重新安装框架并重新注册activeds.dll,但这并没有解决问题。我猜我需要找到另一个 dll 并重新注册它,但目前尚不清楚这将是哪个 dll。

0 投票
5 回答
1025 浏览

.net - .NET 是否使原始 COM 和 DCOM 编程变得多余?

.net 框架的引入是否使 COM 和 DCOM 中的原始编程变得多余?

(除了使用一些 COM+ 服务,例如通过 System.EnterpriseServices 命名空间进行事务管理)

0 投票
5 回答
494 浏览

winapi - 如何从隐藏的窗口应用程序中显示对话框?

我开发了一个 COM 组件 (dll),它实现了一个显示 WTL 模式对话框的 Edit() 方法。

该 COM 组件的完整接口对应于化学过程工业中使用的软件标准 (CAPE-OPEN),因此该 COM 组件应该可供我无法控制的一系列第 3 方可执行文件使用。

我的组件在许多这些 EXE 中都按预期工作,但特别是其中一个 Edit() 方法只是挂起而没有出现对话框。

::MessageBox()但是,如果我在对话框显示之前立即调用,DoModal()并且在首次显示 MessageBox 后行为正确。

我怀疑这个问题可能与这个作为“隐藏窗口应用程序”运行的特定 EXE 有关。

我曾尝试同时使用 NULL 和::GetConsoleWindow()作为对话框父级的返回值,但都没有奏效。

对话框本身是一个 ATL/WTL CPropertySheetImpl。

有问题的父应用程序(EXE)是我无法控制的,因为它是由(轻度敌对的)第 3 方开发的。

我确实知道我可以::MessageBox()从我的 COM 组件成功调用或显示标准 Windows 文件对话框,并且在这样做之后我就可以显示我的自定义对话框。如果不先显示“标准”对话框,我将无法显示我的自定义对话框。

谁能建议我如何在不首先显示不必要的 MessageBox 的情况下让它显示对话框?我知道这是可能的,因为我已经看到这个 EXE 显示来自与同一接口对应的其他 COM 组件的对话框。

0 投票
2 回答
8740 浏览

c# - 如何在 OpenOffice 中进行简单的邮件合并

我需要通过 OLE 或本机 API 使用 C++、VBScript、VB.Net 或 C# 在 OpenOffice 中进行简单的邮件合并。有什么好的例子吗?

0 投票
1 回答
962 浏览

.net - 维护 .NET 项目中引用的 COM dll 的正确版本

我想在 .NET 项目中引用 COM DLL,但我还想确保创建的互操作 DLL 具有正确的版本(以便补丁知道何时必须更改 DLL)。

如果我使用TlbImp,我可以使用标志指定所需的版本,/asmversion但是当我直接从 Visual Studio 添加它时,它会得到一个与原始 COM DLL 版本无关的版本。

我尝试更改.vcproj文件中的版本

但随后该项目未能构建并出现以下错误:

错误 CS0246:找不到类型或命名空间名称“MYDLLLib”(您是否缺少 using 指令或程序集引用?)

有没有办法在不TlbImp提前创建我所有的 COM 引用的情况下完成这项工作?

如果答案是肯定的,除了主要和次要版本之外,还有没有办法指定内部版本号?(例如 1.2. 42 .0)

0 投票
2 回答
4338 浏览

javascript - 如何将 ActiveX 对象中的字符串数组返回到 JScript

我需要调用 Win32 API 来获取一系列字符串,并且我想将这些字符串的数组返回给 JavaScript。这是针对在本地计算机上运行的管理脚本的脚本,而不是针对 Web 浏览器的脚本。

我的 COM 对象的 IDL 文件具有我调用的接口:

该函数正确返回,但是在将字符串分配给 JavaScript 中的变量时,它们会“丢失”。

问题是:将字符串数组返回到 JavaScript 变量的正确方法是什么?

0 投票
4 回答
2330 浏览

windows - 有关 COM 错误代码的最佳信息来源是什么?

当您只有 HRESULT 时,我不知道从哪里获得有关解决 COM 错误的含义、可能原因和可能解决方案的最佳信息。

在 Google 上搜索“80004027”之类的术语几乎毫无用处,因为它会将您发送到 90% 的随机讨论组,问题是“80004027 是什么意思?” 没有回答。

这有什么好的资源?为什么 MSDN 不是 Google 的顶级搜索结果?

0 投票
2 回答
3863 浏览

c# - 用 C# 编写的托管 OleDB 提供程序

OleDB 提供程序是由 Microsoft 提供的实现 COM 接口的二进制文件。由此看来,似乎可以使用 C# 创建提供程序。那是对的吗?有样品证明吗?如果没有,你会阻止我这样做吗?我看到有多个非托管样本,但我找不到任何托管样本。

0 投票
2 回答
1142 浏览

c# - MapPoint 2009 负载性能

我在使用 C# 将 MS MapPoint 2009 集成到我的 WinForms .Net 2.0 应用程序时遇到了一些问题。我已将 ActiveX MapPoint 控件添加到表单中,让它显示地图和位置没有问题;我担心的是创建地图后加载地图所需的时间。

我的开发机器上的测试显示平均加载时间在 3 到 5 秒之间,在此期间应用程序完全锁定。虽然这不是完全不可接受的,但失去对应用程序的控制的时间非常长。此外,由于 GUI 线程被锁定,我无法显示加载对话框或其他内容来掩盖加载时间。

挂起的行是这样的:(其中 axMappointControl1 是 MapPoint 控件)

我尝试在另一个线程上执行 NewMap 方法,但 GUI 线程仍然被阻塞。

我的问题是:

  • MapPoint 加载时我能做些什么来加快它的速度?
  • 有什么方法可以加载 MapPoint 使其不会阻塞 GUI 线程?

任何帮助是极大的赞赏。