问题标签 [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 投票
3 回答
3720 浏览

events - 向我的 COM 对象的 VBScript 用户公开事件处理程序

假设我有一个 COM 对象,用户可以通过如下调用访问它:

我想做的是允许用户为对象指定一个事件处理程序,如下所示:

这是否可能,如果可以,我如何在 C++(特别是 BCB 2007)的类型库中公开它?

0 投票
5 回答
6029 浏览

c# - 在 C# 中使用 IBM 的 PCOMM 的示例代码 o 编写 as400 屏幕截图

有没有人使用 C# 为 IBM as400 编写示例屏幕抓取工具?

0 投票
2 回答
4584 浏览

com - Windows Server 2008:COM 错误:0x800706F7 - 存根收到错误数据

我正在评估 Server 2008。我的 C++ 可执行文件出现此错误。我在 MSDN 上看到了这个错误,似乎需要对以前的几个操作系统进行热修复。还有人看到这个吗?对于 32 位和 64 位操作系统,我得到了相同的结果。

代码片段:

其中 GroupDataArray VARIANT 参数包装了一维 SAFEARRAY 的 VARIANT 包装 DCAPICOM_GroupData 结构条目:

0 投票
3 回答
500 浏览

delphi - 您如何对与第三方 COM 对象交互和实例化的代码进行单元测试?

目前阻碍我全力投入单元测试的最大问题之一是,我编写的代码中有很大一部分严重依赖来自不同来源的第三方 COM 对象,这些对象也倾向于相互交互(I'如果您需要知道,我会使用几个帮助程序库为 Microsoft Office 编写加载项)。

我知道我可能应该使用模拟对象,但在这种情况下我该怎么做呢?我可以看到,当我只需要传递对已经存在的对象的引用但我的一些例程自己实例化外部 COM 对象,然后有时将它们传递给来自不同库的其他一些外部 COM 对象时,这相对容易。

这里的最佳实践方法是什么?我是否应该让我的测试代码临时更改注册表中的 COM 注册信息,以便测试代码将实例化我的模拟对象之一?我应该注入修改后的类型库单元吗?还有哪些其他方法?

我会特别感谢 Delphi 的示例或工具,但也会对更一般的建议和更高级别的解释感到满意。

谢谢,

奥利弗

0 投票
2 回答
2341 浏览

.net - 从 .NET 向 COM 公开嵌套数组

我在 .NET (C#) 中有一个方法,它返回string[][]. 使用 RegAsm 或 TlbExp(来自 .NET 2.0 SDK)为包含程序集创建 COM 类型库时,我收到以下警告:

警告:嵌套数组不支持封送处理。

此警告导致相关方法未导出到生成的类型库中。有人告诉我,有一些方法可以使用 Variant 作为 COM 返回类型,然后在 COM 客户端进行强制转换/等。对于这个特定的程序集,目标客户群是 VB6。但是在 .NET 端,您实际上是如何做到这一点的呢?

注意:我有一个现有的旧版 DLL(及其导出的类型库),其中返回类型为 Variant,但此 DLL(和 .tlb)是使用 .NET 之前的旧版工具生成的,因此我无法使用它们。

如果程序集是用 VB.NET 编写的,它会有所帮助吗?

0 投票
5 回答
20094 浏览

c++ - 如何有效地将 BSTR 复制到 wchar_t[]?

我有一个 BSTR 对象,我想将其转换为复制到 wchar__t 对象。棘手的是 BSTR 对象的长度可能从几千字节到几百千字节不等。有没有一种有效的方法来复制数据?我知道我可以只声明一个 wchar_t 数组并始终分配它需要保存的最大可能数据。然而,这意味着为可能只需要几千字节的东西分配数百千字节的数据。有什么建议么?

0 投票
2 回答
1549 浏览

.net-3.5 - 我应该在 WF 中使用状态机还是序列工作流?

作为配置管理职责的一部分,我每周都会执行一个可重复的业务流程。流程没有改变:我将更改详细信息下载到 Excel,打开电子表格并基于宏复制详细信息,从议程模板创建 Word 文档,使用 Excel 数据更新议程,从 Word 文档创建 PDF,以及给他们发电子邮件。

这个过程很容易在序列工作流中表示,这就是我到目前为止的方式,使用 COM 自动化来自动处理 Excel 和 Word 片段。齿轮的扳手是在“创建议程”和“发送它”之间有一个人为的步骤,在其中我审查更改细节并制定有关它们的问题,这些问题被添加到议程中。我目前有一个暂停活动来暂停工作流程,同时我手动执行这部分流程。

我的问题是,我应该重写我的工作流程,使其成为一个状态机,以遵循业务流程中人机交互的最佳实践,还是暂停活动是一个合理的解决方案?

0 投票
2 回答
2685 浏览

c++ - 如何通过 COM 遍历 Excel 2003 工作表中的所有分页符

我一直在尝试通过 COM 检索给定 Excel 2003 工作表上所有分页符的位置。这是我正在尝试做的事情的一个例子:

我希望这能打印出每个水平分页符的行号pSheet。我遇到的问题是,尽管count正确指示了工作表中的分页符数,但我似乎只能检索第一个。在循环的第二次运行中,调用pHPageBreaks->GetItem(i)会引发异常,错误号为 0x8002000b,“索引无效”。

pHPageBreaks->Get_NewEnum()在调用Get_NewEnum().

我四处寻找解决方案,到目前为止我发现的最接近的是 http://support.microsoft.com/kb/210663/en-us。我尝试激活分页符之外的各种单元格,包括刚刚超出要打印范围的单元格,以及右下角的单元格(IV65536),但它没有帮助。

如果有人能告诉我如何让 Excel 返回工作表中所有分页符的位置,那就太棒了!

谢谢你。

@Joel:是的,我尝试过显示用户界面,然后设置ScreenUpdating为 true - 它产生了相同的结果。此外,我已经尝试将设置组合pSheet->PrintArea到整个工作表和/或pSheet->ResetAllPageBreaks()在我调用之前调用以获取HPageBreaks集合,这也没有帮助。

@Joel:我习惯于pSheet->UsedRange确定要滚动过去的行,而 Excel 确实会滚动过去所有水平中断,但是当我尝试访问第二个中断时,我仍然遇到同样的问题。不幸的是,切换到 Excel 2007 也无济于事。

0 投票
2 回答
756 浏览

c# - 协助将 commctrl 命令移植到 C#

在 C++ 应用程序中,我有一个 hWnd 指向在第三方进程中运行的窗口。此窗口包含扩展 COM TreeView 控件的控件。我有兴趣获取此控件的 CheckState。
我使用 hWnd 从 commctrl.h 中使用 TreeView_GetRoot(hwnd) 获取 HTREEITEM

hwnd 指向窗口,hItem 是 TreeView_GetRoot(hwnd) 的返回值。它们的用法如下:

我希望将此代码移植到执行相同操作的 C# 应用程序中(关闭 TreeView 控件的 CheckState)。我从来没有使用过 COM 并且很陌生。

我曾尝试使用 .NET mscomctl,但找不到与 TreeView_GetRoot 或 TreeView_GetCheckState 等效的方法。我完全被卡住了,不知道如何在 C# 中重新创建这段代码:(

建议?

0 投票
1 回答
1928 浏览

com - COINIT_SPEED_OVER_MEMORY 有什么作用?

调用 时CoInitializeEx,您可以为 指定以下值dwCoInit

标题为“内存速度”的暗示性价值有什么作用?这些天在COM中被忽略了吗?