VBGood网站全文搜索 Google

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

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
查看: 165436|回复: 70

[讨论] *再谈VB多线程和标准DLL问题*

  [复制链接]
 楼主| 发表于 2011-10-15 17:52:05 | 显示全部楼层 |阅读模式
本帖最后由 tgy 于 2011-10-16 15:45 编辑

  最近又研究了几天多线程和DLL的问题,其实只要两个核心的未公开函数:CreateIExprSrvObj 和 VBDllGetClassObject 就可以很稳定地运行程序了,至于存在的一些小问题就不说了,主要还是实现的方法优劣、易用上,其实现方式很多,本人还使用了另一种找VB头的方法.关键是纯VB+API,不含汇编 不用TLB  不用copymemory  也不用open exe文件来找VB头(用打开EXE文件的方式来找,速度方面不占优势,且在标准DLL中写DllMain的时候,不方便),且此方法通用于写VB多线程和标准DLL中的DllMain的初始化,其实这两件事情是一个道理,都是对VB运行环境进行初始化。所以,线程初始化和DLL初始化可调用同一个初始化过程就行了.并很简单地可以用于注入dll的编写,注入成功后,几乎可以在绝大部份有窗体的EXE进程中以独立线程弹出窗体,并可正常使用对象、类等。当然杀软除外,呵呵,IE,explorer,QQ,office,记事本等等几乎所有带窗口的程序都能弹出。另外当然还解决了VB写的EXE程序调用提示找不到dll文件的问题。没有全部测试,但已经能正常被VC,delphi,VB等写的exe调用。虽然不能脱离MSVBVM60.dll,但,如果脱离了MSVBVM60.dll的话,那就不叫VB了,那还不如重新搞个面向对象的basic编译器之类,和C较量,呵呵。
总结:VB真的很强大了!

下面是一个VB写的弹窗测试DLL(内附VB写的注入工具):




补充内容 (2011-10-17 12:34):
核心模块代码放出,请上15楼.

补充内容 (2011-10-17 18:48):
也许得提醒一下新手,这里所说的DLL不是VB默认生成的,需要注册的DLL,而是非注册的,标准DLL。

补充内容 (2011-10-17 22:01):
莫非这就是传说的多线程第三季?

补充内容 (2011-10-17 22:11):
要玩VB dll注入的有福了...呵呵

补充内容 (2011-10-17 22:16):
至于如何与注入的DLL通信,我觉得使用DDE可能会很简单安全,不必HOOK 也不必子类化窗口截取消息,因为有些进程根本就没有窗口.

补充内容 (2011-10-17 23:41):
已经可以使用外部控件了,测试请上17楼。

补充内容 (2011-10-19 13:02):
VB控件使用多线程原则:尽可能避免多个线程同时访问控件对象.尽管只有一毫秒的时差,都会让程序安全运行,因为VB的控件不是线程安全的,也就是说控件内部没有进行多线程访问串行化处理.多线程同时访问将导致严重错误.

补充内容 (2011-10-19 13:04):
如果能使用上支持多线程访问的控件,应该就可以稳定运行多线程了.大家开始找VB用的线程安全控件吧!

补充内容 (2011-10-25 11:13):
VB控件访问的多线程同步很难做的,如果做好了线程同步,也将是用性能代价来换,还不如单线程来得快,单线程就不用考虑同步问题.

补充内容 (2011-10-31 09:10):
使用例子在30楼

补充内容 (2011-11-21 23:11):
已封装为DLL的API函数调用,使用更方便,请看:
http://www.vbgood.com/thread-108165-1-1.html


补充内容 (2011-11-27 23:19):
DLL方式创建线程,这个近乎完美的了:
http://www.vbgood.com/forum.php? ... &fromuid=231244

补充内容 (2011-11-29 15:59):
线程函数可不用写在标准模块中了,可直接写在类事件函数中了,详见软件发布区.

补充内容 (2011-11-30 20:55):
可以通过对象和函数名来创建线程了,不用写到线程函数到标准模块中.详见:
http://www.vbgood.com/forum.php? ... &fromuid=231244

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

点评

牛……  发表于 2011-10-16 01:20
关注中。。主要看看多线程。。。  发表于 2011-10-15 23:35
呵呵,我就正在搞山寨Basic编译器,http://www.vbgood.com/thread-107320-1-1.html  发表于 2011-10-15 22:02

评分

参与人数 8威望 +24 人气 +10 收起 理由
xwy666 + 1 + 1 很给力!
zhh0000zhh + 3 + 1 很给力!
toudu + 1 + 1 仔细看了全文,给力
bbb620 + 8 + 1 很给力!
菜鸟学飞 + 7 + 3 赞一个! 控件不是线程安全的 但是我们自己
ddd589 + 1 + 1 赞一个!
whtmp + 1 + 1 赞一个!
peace2008 + 2 + 1 精品文章

查看全部评分

本帖被以下淘专辑推荐:

头像被屏蔽
发表于 2011-10-15 19:13:26 | 显示全部楼层
开源吧,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-10-15 19:38:31 | 显示全部楼层
本帖最后由 tgy 于 2011-10-15 19:41 编辑

视关注度才确定是否开源了,因为核心的东西都是前人的了,只是改变了一些实现方式而也,得益于一国外网站的代码引伸出来的。

点评

开源了,大家才会有更多的人关注嘛  发表于 2011-10-16 08:04
回复 支持 反对

使用道具 举报

发表于 2011-10-16 11:28:26 | 显示全部楼层
9494开源吧。。。。
回复 支持 反对

使用道具 举报

发表于 2011-10-16 13:56:36 | 显示全部楼层
真不错!!!!!!
回复 支持 反对

使用道具 举报

发表于 2011-10-16 15:35:58 | 显示全部楼层
强烈关注,希望开源。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-10-16 23:00:39 | 显示全部楼层
本帖最后由 tgy 于 2011-10-16 23:29 编辑

增加一个"文件下载“功能的测试DLL:
看来VB程序有望dll模块化了。但路还很长,问题还很多。

解压后再测试,不然可能会找不到DLL文件而发生错误。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

点评

问题还很多,那都有哪些问题?  发表于 2011-10-16 23:21

评分

参与人数 1人气 +1 收起 理由
peace2008 + 1 赞一个!

查看全部评分

回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-10-16 23:28:38 | 显示全部楼层
本帖最后由 tgy 于 2011-10-16 23:33 编辑

比如不能使用控件等,定义固定维数数组问题我觉得不影响使用,但控件问题是个大问题。似乎只能使用基本内置控件。

不知大家注意没有,exe转dll后,downfile.dll中的软件版本变成了注入的主exe进程的版本,呵呵!
回复 支持 反对

使用道具 举报

发表于 2011-10-17 08:58:51 | 显示全部楼层
向你学习!!!!
回复 支持 反对

使用道具 举报

发表于 2011-10-17 09:04:47 | 显示全部楼层
有源码吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2022-6-29 02:10

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