问题标签 [oleview]

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 投票
1 回答
183 浏览

c++ - 在组件服务或 OleView 中找不到 UIRibbon

我最近在探索如何在 c++ 中使用 COM,并遇到了一个简单的功能区代码。

代码有:

所以,它是基于 COM 的,对吧?组件服务中应该有关于这个组件的一些信息,但是我无论如何都找不到。

我的问题是windows如何设法找到头文件(UIRibbon.h)中提供的具有相应CLSID的COM组件?

0 投票
2 回答
1734 浏览

vb6 - OleView.exe 无法反编译从 VB6 OCX 中提取的类型库

我正在尝试获取使用 VB6 创建的复杂 ActiveX 控件的类型库的 IDL 文件。我尝试在使用 64 位 Win10 Pro 的开发电脑上使用 OleView.exe 执行此操作。当我尝试打开 OCX 文件或从中提取的 TLB 时,OleView 的 x64 版本会崩溃。x86 版本两次向我显示以下错误框:

OleView.exe:加载类型库时出错 (TYPE_E_CANTLOADLIBRARY)

也许,TLB 文件有几个importlib指令,而 OleView 找不到引用的文件。我可以在 OleView 中查看组件的 OCA 文件,其 IDL 等效项在顶部包含以下行:

如何用 OleView 解决这个问题?或者是否有其他工具可以将 TLB 转换为 IDL?

0 投票
1 回答
158 浏览

c# - C# 反射与 COM 对象不一致

在过去的几天里阅读了我能找到的关于 COM 对象的 C# 反射的所有内容,在代码中尝试了许多实验,并分析了示例代码以试图提高我的理解,我现在不得不承认我只是不够了解,所以我请求社区的帮助。

我需要能够访问和更新包装为System._COMObject 的后期绑定 COM 对象的属性。

我尝试了所有标准的反射都没有成功,我查看了 using IDispatch,但我对使用所涉及的指针感到不舒服,所以我希望我在普通界面中错过了一些非常简单的东西。我在 MSDN 上找到了确实展示了我需要做的事情的论文,但是所有示例都是用 C++ 编写的,这超出了我的想象。

如果有人能解释为什么以下简单的 C# 代码不能按预期工作,那将非常有帮助:

期望已经找到并提供属性的对象能够更新相同的属性是不合理的吗?是否有一些我不知道的“替代更新”策略?

非常感谢您的帮助,

皮特。

更新:

应乔恩的要求,这里是 OleView 的片段:(我不得不使用图像,因为 Oleview 不允许我剪切和粘贴,抱歉......)

COM .DLL 的 OleView

OLEView 类型库视图

乔恩,我认为您已经正确地确定问题出在 setter 方法上。DLL 是用 Fujitsu COBOL 编写的,并为标识为 PROPERTY 的字段提供了“幕后”的 GET 和 SET。从 C# 或 COBOL 访问 COM 组件,它工作正常,但是,如您所见,当我尝试使用反射访问它以进行 SET 时,它不起作用。因为我不熟悉使用反射,我怀疑我的语法是否正确,所以我试图让 SET 尽可能接近 GET。我想我需要在 COBOL 中生成我自己的 SET 方法(对于每个 PROPERTY),然后将我的“BindingFlags.SetProperty”更改为“BindingFlags.InvokeMember”。(我对 BindingFlags 做了功课,发现如果您指定“SetProperty”,它会自动暗示您提到的其他 2 个标志。)

我认为这一切的关键在于认识到问题出在 Fujitsu *COM Class SET 上,而您有经验的眼睛才能看到这一点。非常感谢。如果您在看到 OLEView 后有任何其他意见,或者可以建议任何替代方法来设置属性,我会非常感兴趣。(我不期待必须为每个属性生成 SETter 方法;它带有蛮力的味道...... :-))

再次感谢,

皮特。

0 投票
1 回答
137 浏览

c# - 如何在 C# 中调用 COM 中的虚函数

我是 COM 和 C# 的新手。我想做的是用 C# 重写以下源代码:

explife.c

explife.h

据我了解,他反转了这个接口中的函数并创建了一个结构,以便他可以访问这个虚拟函数的地址。

此 COM 中的函数在 OLEVIEW 中不可见,我也无法在 VisualStudio 中导入它。

我的问题是可以用 C# 编写它吗?

0 投票
0 回答
208 浏览

c++ - 使用 midl 编译器为 microsoft word 生成 C++ com 接口

我正在尝试使用 midl 编译器创建 microsoft word COM C++ 接口定义。我使用 oleview.exe 将“Microsoft Word 14.0 对象库”(MSWORD.OLB) 保存到名为 MSWORD.idl 的文件中。

编译此 idl 文件时出现错误。例如:

.\msword.idl(3932):错误 MIDL2025:语法错误:期望“单一”附近的类型规范

我已经通过以下方式解决了这个问题:

然后显示下一个错误:

.\msword.idl(4004):错误 MIDL2025:语法错误:期望“WdDocumentMedium”附近的类型规范

4004 附近的行:

WdDocumentMedium被定义为枚举,但在此行之后。

另一个未定义的枚举是MsoLanguageID.

使用 word 中的 Visual Basic 编辑器,我使用对象浏览器检查了必要的库。