CSDN里,有不少无注册调用COM组件的文章,基础是manifest文件。
我看了好几天还是用不了,使用mt,使用regsvr42,看微软教程等等不一而足。
manifest写的越多,错误越多。还好,终于明白了,其实没那么复杂啦。
例:调用ComDlg32.ocx:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<file name="comdlg32.ocx" hashalg="SHA1">
<comClass clsid="{F9043C85-F6F2-101A-A3C9-08002B2F49FB}" description="Microsoft Common Dialog Control 6.0 (SP6)">
</comClass>
</file>
</assembly>
保存为xxx.exe.manifest即可。
这里写那个publicKeyToken纯属添乱,真正需要的就是一个clsid,可以用mt:
mt -tlb:comdlg32.ocx -dll:comdlg32.ocx -out:aa.manifest
也可以到注册表里去查,注意不要查成tlbid,一般规律,tlbid的首字段比clsid大3个数。
后面,我会写一个自动完成Manifest的工具,另外发布。