VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
查看: 789|回复: 6

[讨论] 关于COM组件的调用(按键精灵插件),有Activex大神吗?

[复制链接]
发表于 2017-7-17 17:17:00 | 显示全部楼层 |阅读模式
按键精灵DLL的调用
这一直是心里的一道坎
很多人会告诉你,自己写个类似功能也不难。
那是你直接说你不会就好,何必给自己找不是理由的理由。
经研究发现,按键精灵的DLL DllRegisterServer不能成功,载入OD还要先破解。
而可以自己写个DLL,让按键精灵去创建好插件对象,然后作为参数传递到你的DLL中,可以发现这玩意其实就是个COM组件。这个对象可以任意使用!
后来经过一番调查,好像按键官方会给插件作者一个签名工具,这玩意就是对DLL做一些修改,让其他语言不能以常规的方式注册和调用!
用OD跟踪,按键精灵会在主线程启动时创建2个对象“QMDispatch.QMLibrary.Inner”“QMDispatch.QMLibrary”
在注册表里找到分别定位到:按键精灵主程序(EXE)或者小精灵 和 “C:\Users\Administrator\AppData\Roaming\qmacro\qdisp.dll”。
用空白文件只读替换掉“qdisp.dll”将不能正常运行小精灵!插件也不能正常使用,说明这个“QMDispatch.QMLibrary”有这关键作用!(估计是处理变量用的)
然后用按键精灵来“Set a = CreateObject("QMPlugin.Bkgnd")”,发现在按键精灵中能正常创建,但在VBS,VB中提示“自动化类型失败”
用OD跟踪这段语句(别以为按键精灵就不能跟,它的代码还是会送到vbscript.dll执行)它注册之后创建对象是先ole32.CLSIDFromProgIDEx然后ole32.CoGetClassObject(其他的我不是看的很明白)
以我的理解,按精灵就是个虚拟机,将VBS字符加密储存。运行时送给翻译器解密并加工 然后再次给vbscript.dll翻译执行。
也就是说按键精灵对DLL做了一些修改,注册应该是对注册表进行操作。而创建对象应该是自己实现了这个特殊的“CreateObject”
由此,可以看出按键精灵对COM组件的调用原理理解的还是比较深的。那么我们是不是也能做出只有自己才能调用COM组件出来?我们又又什么办法来调用按键精灵DLL?
(按键精灵网上随处可下载,本人功力不够,是否有人帮忙研究出其中门道)
发表于 2017-7-28 10:08:11 | 显示全部楼层
很久前的确做过类似的事情。但后来放弃了。当然更加接近底层,事情的经过就不重要了。(汇编肝起,弄毛按键)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-28 16:21:10 | 显示全部楼层
qq275158045 发表于 2017-7-28 10:08
很久前的确做过类似的事情。但后来放弃了。当然更加接近底层,事情的经过就不重要了。(汇编肝起,弄毛按键 ...

直接用人家的DLL 可以减少不少工作量,而且人家免费给你维护。还有对他的如何制作专属DLL的方法有点兴趣!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-28 16:21:53 | 显示全部楼层
本帖最后由 mmm325400 于 2017-7-28 16:24 编辑
qq275158045 发表于 2017-7-28 10:08
很久前的确做过类似的事情。但后来放弃了。当然更加接近底层,事情的经过就不重要了。(汇编肝起,弄毛按键 ...


学程序必须学会如何偷懒!
回复 支持 反对

使用道具 举报

发表于 2017-7-29 12:15:32 | 显示全部楼层
搞一份来,发到摊子上,洗洗人气
回复 支持 反对

使用道具 举报

发表于 2017-8-4 10:23:35 | 显示全部楼层
mmm325400 发表于 2017-7-28 16:21
直接用人家的DLL 可以减少不少工作量,而且人家免费给你维护。还有对他的如何制作专属DLL的方法有点兴趣 ...

主要是按键太不能满足智能的需求。可能是我没用好吧。方正大漠抓色抓图 成功率怎么写都只是90%
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2017-11-24 08:20

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表