{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.1#0; mscomctl.ocx 中 各项的含义

eisldkw 2020-03-04 09:36:18
以下信息是从VB6的工程文件 *.VBP中提取出来的
Reference=*\G{00020813-0000-0000-C000-000000000046}#1.5#0#C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE#Microsoft Excel 11.0 Object Library
Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.1#0; mscomctl.ocx


一、 Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.1#0; mscomctl.ocx
请问:
1、{831FDD16-0C5C-11D2-A9FC-0000F8754DA1} 是什么
2、#2.1#0 中 #2.1 是什么 #0 又是什么
3、在mscomctl.ocx 文件的属性 信息中 查不到 其对应 的 {831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.1#0 这部分信息,如何 能够直接 查询到

二、

Reference=*\G{00020813-0000-0000-C000-000000000046}#1.5#0#C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE#Microsoft Excel 11.0 Object Library
Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.1#0; mscomctl.ocx

请问 Reference 和 Object 这两种方式有什么区别?
...全文
492 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
milaoshu1020 2020-03-10
  • 打赏
  • 举报
回复
我的那个tlb-to-chm就是tli类库的使用示例;
milaoshu1020 2020-03-09
  • 打赏
  • 举报
回复
引用 16 楼 eisldkw 的回复:
非常感谢。可是不是所以有dll文件 都提供tlb文件呀?


类型库定义如果不是单独的tlb文件,那就是直接放到dll/ocx/exe文件的内部了,可以用TLI类库读取;
eisldkw 2020-03-09
  • 打赏
  • 举报
回复
引用 15 楼 milaoshu1020 的回复:
guid在dll/ocx/exe的tlb中呢; 其源代码中,VC的idl接口文件中有显式的定义,语法可以搜一下midl; 使用guidgen可以生成新的guid; oleview可以查看注册表中类库的guid; tlb-to-chm可以查看注册表中的和文件中的guid; vb6可以使用TypeLib Information (TLBINF32.DLL)类库来读取tlb信息,其中就包含guid;
非常感谢。可是不是所以有dll文件 都提供tlb文件呀?
eisldkw 2020-03-08
  • 打赏
  • 举报
回复
引用 12 楼 milaoshu1020 的回复:
说错了,也有guid;
为什么从文件的属性中查询不到guid码?
milaoshu1020 2020-03-08
  • 打赏
  • 举报
回复
guid在dll/ocx/exe的tlb中呢;

其源代码中,VC的idl接口文件中有显式的定义,语法可以搜一下midl;

使用guidgen可以生成新的guid;

oleview可以查看注册表中类库的guid;

tlb-to-chm可以查看注册表中的和文件中的guid;

vb6可以使用TypeLib Information (TLBINF32.DLL)类库来读取tlb信息,其中就包含guid;
milaoshu1020 2020-03-08
  • 打赏
  • 举报
回复
引用 13 楼 eisldkw 的回复:
为什么从文件的属性中查询不到guid码?


因为文件的可显示的属性不包括guid啊,不过可以用代码从文件中读取,就像tlb-to-chm做的;
threenewbee 2020-03-07
  • 打赏
  • 举报
回复
mscomctl.ocx这是vb自带的公共控件 Microsoft Excel 11.0,excel11就是excel 2003
milaoshu1020 2020-03-07
  • 打赏
  • 举报
回复
说错了,也有guid;
milaoshu1020 2020-03-07
  • 打赏
  • 举报
回复
Everything 搜索 oleview.exe ;

或者:

http://github.com/milaoshu1020/tlb-to-chm
不过这个只显示版本号,没有guid;
ypk9999 2020-03-06
  • 打赏
  • 举报
回复
引用 7 楼 eisldkw 的回复:
[quote=引用 5 楼 ypk9999 的回复:] 另外像這種 831FDD16-0C5C-11D2-A9FC-0000F8754DA1 資訊,通常系統是紀錄在 registry 檔
非常感谢。您是说记录在 注册表中吗?[/quote] 是的
eisldkw 2020-03-05
  • 打赏
  • 举报
回复
引用 2 楼 wq1282 的回复:
{xx}是GUID是OCX生成的时候带的唯一标识,2.1是版本,#0不知道
mscomctl.ocx就是这个OCX,OCX是什么百度ActiveX 一种COM接口



非常感谢。请问我自己的程序生成 .exe 的时候 是不是 也会自动生成一个 GUID 呢?
eisldkw 2020-03-05
  • 打赏
  • 举报
回复
引用 5 楼 ypk9999 的回复:
另外像這種 831FDD16-0C5C-11D2-A9FC-0000F8754DA1 資訊,通常系統是紀錄在 registry 檔


非常感谢。您是说记录在 注册表中吗?
eisldkw 2020-03-05
  • 打赏
  • 举报
回复
引用 1 楼 东方之珠 的回复:
mscomctl.ocx是微软的一套SP6控件集,没什么可说的,拿来用就是了。
看一下这个:
https://bbs.csdn.net/topics/30229016


非常感谢。请问如何 能直接从这个文件相关属性中查到这个mscomctl.ocx 文件 的guid 等信息呢?
东方之珠 2020-03-04
  • 打赏
  • 举报
回复
mscomctl.ocx是微软的一套SP6控件集,没什么可说的,拿来用就是了。 看一下这个: https://bbs.csdn.net/topics/30229016
ypk9999 2020-03-04
  • 打赏
  • 举报
回复
另外像這種 831FDD16-0C5C-11D2-A9FC-0000F8754DA1 資訊,通常系統是紀錄在 registry 檔
ypk9999 2020-03-04
  • 打赏
  • 举报
回复
但在绝大多数情形下,你不用管这些,更不要自己随便变动 多年来,我只有因为被迫在别人电脑上工作时,因为 ocx 版本有些问题,手动改过 vbp 档案中 ocx 版本几次
ypk9999 2020-03-04
  • 打赏
  • 举报
回复
Reference 和 Object 差别,参考 https://stackoverflow.com/questions/24084886/understanding-vb6-project-files-vbp [Quote] Objects are for ActiveX controls which are usually compiled to .ocx files. References are for type libraries usually compiled to .dll files or .tlb files. Notice that .ocx files contain typelib too so this is very inconsistent and pretty much a legacy division. Paths and filenames are optional, typelib IDs are canonical way to resolve dependency. Only if these are not found in registry there is a auto-resolve strategy searching for files in current folder for .ocxes only. This most annoying behavior happens at run-time too when the applications starts to auto-registering .ocxes in current folder if typelibs are not found and often fails on modern OSes for lack of permissions to write in HKLM. There are Object lines in .frm/.ctl source files too. These get appended to current project if adding existing form/usercontrol. If an .ocx typelib is added as Reference line the IDE usually fails to load the project and a manual edit is needed.
wq1282 2020-03-04
  • 打赏
  • 举报
回复
{xx}是GUID是OCX生成的时候带的唯一标识,2.1是版本,#0不知道 mscomctl.ocx就是这个OCX,OCX是什么百度ActiveX 一种COM接口

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧