问题标签 [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.
c++ - 访问 COM 接口方法 C++
两个都:
- CLSID
- 独立身份证
已指定上述内容,并使用:
- 协同创建实例()
返回由上面的 CLSID 指定的类的单个未初始化对象。
然后如何从 C++ 访问接口的方法?没有:
- ATL
- MFC
- 只是普通的 C++
之后,我使用 CreateInstance()
我遇到了麻烦,使用 CreateInstance() - 最后一个参数 - ppv
使用oleview,可以看到上面指定的IIDabove IID的方法,比如:
我怎样才能访问上述内容?示例/指导 - 请
问候
dll - Oleview错误“错误加载类型库”?
类型库声明应用程序或动态链接库 (DLL) 公开的类、接口、常量和过程。类型库通常是程序文件中的资源;它也可以是扩展名为 .tlb 或 .olb 的独立二进制文件。
那么是否有可能某些 DLL 仍然公开接口而不被声明为 TypeLib。
实际上我正在尝试从 oleview 打开一个 dll 并显示错误消息“错误加载类型库”。
根据我的理解,如果我们有从 DLL 暴露的接口,那么它应该由 oleview 打开,否则它不能有暴露的接口或函数。
我们有 dll 暴露接口但仍然无法被 Oleview 查看的任何可能性。
.net - 是否可以向 COM 互操作调用者公开 C# 枚举,如果可以,如何?
我有一个通过 COM 互操作调用的托管程序集。像 VBScript 客户端、Perl 客户端等等。
班级装饰着
然后我当然会做 regasm 的事情,所有的方法都工作得很好。
但是程序集中也有枚举类型。我想对枚举值使用符号名称 COM 应用程序。
如何通过 COM 互操作公开枚举?我只需要添加这些属性吗?
然后,如何在 VBScript 中引用这些符号名称?我在 OleView 中看不到枚举类型。(我应该吗?)我在 OleView 中看到了所有其他类型。
java - 如何找到用于 COM4j 的 DirectShow 接口的类型库标识符
我正在尝试使用 COM4j 与 Windows 上的 Java 网络摄像头交互(不通过 FMJ 或 JMF 框架)。但是,我无法找到 Direct Show 的类型库标识符来构建接口。COM4j 站点建议使用 OleView 来查找类型库,但我已经浏览了那里的类型库列表,但没有找到任何看起来可能提供 DirectShow 接口的东西。
windows - 是否有用于探索/测试 COM 对象的工具?
我正在尝试通过使用 Python (win32com) 中的 COM 对象来自动化一个过程,但我没有得到预期的结果......有没有工具可以探索/测试 COM 对象而无需编写特定的程序?我的意思是,有什么东西可以让例如实例化一个 COM 对象并调用它的方法吗?
(基本上我想找出我的意外结果是否是win32com的错,我想避免安装Visual Studio来编写C#应用程序)
.net - 无法使用 REGASM /u 删除 COM [PrimaryInteropAssemblyName] typelib 值
我希望有人能指出我正确的方向。我分几个步骤列出了问题,希望能澄清问题。
- 我使用regsvr32将 C++ DLL 注册到 COM 中。
- 然后,我将tlbimp与 C++ DLL 上的/primary属性一起使用,以制作可供 C# 使用的程序集文件。
- 然后我将新生成的程序集注册到 GAC 中。
- 我在生成的程序集上调用 regasm,以便 C++ 类型库包含对 GACed 程序集的引用。
问题是当我使用regasm /u时,它说它“已成功取消注册”。但是,当我使用 OLEVIEW 检查 COM 中的类型库时,它仍然显示对 GACed 程序集的 PrimaryInterop 引用。
我也尝试过使用 regasm /u /tlb,但我收到警告说:
感谢您的帮助,因为这让我发疯了;)
regsvr32 - iviewers 中的 dllregisterserver 失败
当我尝试运行 Oleview 时,我收到一条错误消息,指出 IViewer.dll 的 DllRegisterServer 失败(抱歉,我想发布屏幕截图,但在获得 10 个声望 =p 之前我不能发布)
Oleview 将运行,但就像 msg 所说,您无法查看正是我想要做的接口。
我找到了我的 iviewer.dll 并在上面运行了 regsvr32 就好了。所以我不确定是怎么回事。
c# - 如何在没有接口的情况下后期绑定 COM 事件
我需要后期绑定到 3.5 C# 应用程序中的第 3 方 VB6 COM 对象(以避免我们当前拥有的版本依赖关系)。提供的 dll 在大多数非后期绑定方式中都不能使用,因为一些错误会在我们尝试正常使用它时导致错误。目前,我们正在使用一个自定义的 VB6 包装器,它使事情非常特定于版本,但是我发现我可以使用后期绑定来访问属性和方法。现在,我正在尝试后期绑定事件,但是我读过的所有内容都说我需要从 COM 包装器的接口继承来创建所需的事件接收器。这是一篇这样的文章。
所以,我的问题是是否可以在编译时不引用 dll 的情况下执行后期绑定事件处理?
更新
这是我在使用 VB6 包装器时遇到的错误(仍在积极更新中)。
- 在 OleViewer 中,我得到
无法反编译所选项目 加载类型库/DLL 时出错。TYPE_E_CANTLOADLIBRARY ($80029C4A)
- 在 Visual Studio 中,我得到:
无法确定 COM 引用“3rdPartyDLL”的依赖关系。加载类型库/DLL 时出错。(来自 HRESULT 的异常:0x80029C4A (TYPE_E_CANTLOADLIBRARY))
.net - 将 TLB 转换为 IDL
有谁知道从类型库(.tlb)生成 idl 文件的命令行工具?这样做的原因是为了摆脱 regasm 生成的枚举值中的下划线。此博客中讨论了枚举中的下划线问题
http://blogs.artinsoft.net/mrojas/archive/2010/05/17/interop-remove-prefix-from-c-enums-for-com.aspx
我知道 OLEView 可以生成 IDL 文件,但我正在寻找一种适合自动构建的解决方案。
idl - 编译使用 OleView 创建的 IDL 时出现问题
为了更正枚举值名称的问题,在搜索之后,我需要修改我的 DLL 的 TLB 文件。我需要做的第一步是创建 IDL 文件。所以我使用 Oleview 创建文件。在进行修改以纠正我的问题之前,我决定尝试编译 IDL 文件。这给了我错误:
搜索问题后,我发现这个问题是纠正错误的方法。所以我改变了地方的枚举定义,现在我得到了这个错误:
我不知道是什么导致了错误,因为我只反转了我的枚举定义和函数定义。是什么导致我的文件中的最后一个错误?