VBGood网站全文搜索 Google

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

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
楼主: download

[原创]全球首创? 再次突破VB极限!VB真正稳定多线程(第二季,可以用Msgbox了)

  [复制链接]
发表于 2010-5-6 23:57:00 | 显示全部楼层
29# download  

老汉你是不是火星来的???局部的静态数组(<64K?)是在栈里面分配内存空间的
acme_pjz 发表于 2010-5-6 22:38


不是吧?据我所知,只要是静态数组,无论是全局的还是局部的,都是和全局变量一样在数据段分配内存的。
莫非那是 C?VB有所不同?
回复 支持 反对

使用道具 举报

发表于 2010-5-6 23:59:40 | 显示全部楼层
52# VBProFan

我觉得也是
回复 支持 反对

使用道具 举报

发表于 2010-5-7 02:01:39 | 显示全部楼层
围观楼主
回复 支持 反对

使用道具 举报

发表于 2010-5-7 07:14:40 | 显示全部楼层
22# download  

?……要是我主窗体有关键代码怎么办??比如说我那个,主窗体初始化一堆进程内API钩子,要是初始化2次肯定非法操作……
acme_pjz 发表于 2010-5-6 22:35

...那你加个禁止重入嘛,对你来说还不是小事一桩?
回复 支持 反对

使用道具 举报

发表于 2010-5-7 07:18:43 | 显示全部楼层
29# download  

老汉你是不是火星来的???局部的静态数组(
acme_pjz 发表于 2010-5-6 22:38

偶怀疑他直接在EXE中里面了。。。由加载器分配
不过偶从来不用静态的。。。(不想在上面花时间)
暂时不管他了……谁很需要谁就研究一下
回复 支持 反对

使用道具 举报

发表于 2010-5-7 07:20:57 | 显示全部楼层
不是吧?据我所知,只要是静态数组,无论是全局的还是局部的,都是和全局变量一样在数据段分配内存的。
莫非那是 C?VB有所不同?
VBProFan 发表于 2010-5-6 23:57

me toooooo
回复 支持 反对

使用道具 举报

发表于 2010-5-7 07:32:03 | 显示全部楼层
45# msflexgrid

you are not right, I mean ... you must copy vbheader to new variable and pass pointer to this variable to VBDLLGetClassObject. You must use copymemory to copy 104bytes of vbheader  ...
izero 发表于 2010-5-6 22:46

dear,
  1. normal:PE-handle (401000)-> vbheader (401xxx)
复制代码


I have tried a fake header (from a byte array) to VBGetClsObj at the first day.
but. it try to get handel with GetModuleHandle. so...
GetModuleHandle=401000, and the fake header=varptr(bytFakeHeader)=1xxxx.
  1. fakePE-handle(401000)->fakeheader(1xxxx)
复制代码


fake header less than module handle. it'll crash. you can try again by yourself:

move the "dim byFakeHeader" from function to global. and pass pointer to VBGetClsObj at initVB. you'll see.
even I reloc the pointers on the fakeHeader. but I dont want to hook GetModuleHandle of VBGetClsObj(vbvmdll).
回复 支持 反对

使用道具 举报

发表于 2010-5-7 07:52:39 | 显示全部楼层
或许是: did you changed...
msflexgrid 发表于 2010-5-6 20:42
评分分数: 人气 +1
操作理由: 又错了,应该是 did you change



错了还加分?那不是纵容错误嘛?建议扣分!

评分

参与人数 1人气 +1 收起 理由
acme_pjz + 1 那下次你出错了我就给你扣分啰

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2010-5-7 07:55:44 | 显示全部楼层
22# download  

?……要是我主窗体有关键代码怎么办??比如说我那个,主窗体初始化一堆进程内API钩子,要是初始化2次肯定非法操作……
acme_pjz 发表于 2010-5-6 22:35

参考AX EXE多线程 中

在sub main中检查不是子线程,是的话做个标记,然后跳过初始化……exit sub
主窗体中检查标记,跳过关键 代码。。。
回复 支持 反对

使用道具 举报

发表于 2010-5-7 08:10:38 | 显示全部楼层
31# download

look at http://www.vb-decompiler.com/viewtopic.php?f=2&t=2&p=2&hilit=vbheader#p2 for vbheader structure ;)
izero 发表于 2010-5-6 18:07

I think I've found the key: look at the red field(&H44) with underline.
PS: the blue field(&H2C) with underline I've tried with no result.


  iGUIObjectCountAsInteger     ' 0x44 (068d)  Number of Forms/UserControls/etc...
let's try to clear this count to zero.
I'll try it tomorrow, I'm busy today.

VB Header (Start Here)[size=1em]by MrUnleaded » Sat Sep 21, 2002 2:19 am
[vb]
  • Type VBHeader
  •   lSignature As Long             ' 0x00 (000d)  "VB5!" identifier
  •   iRuntimeBuild As Integer       ' 0x04 (004d)
  •   sLanguageDLLName(13) As Byte   ' 0x06 (006d)  0x2A=Default else NTS
  •   sSecLangDLLName(13) As Byte    ' 0x14 (020d)  0x7F=Default else NTS
  •   iRuntimeDLLVersion As Integer  ' 0x22 (034d)
  •   lLanguageID As Long            ' 0x24 (036d)
  •   lSecLanguageID As Long         ' 0x28 (040d)  (when Lang. DLL exists)
  • aSubMain As Long               ' 0x2C (044d)  If 0 then it's a load form
  •   aProjectInfo As Long           ' 0x30 (048d)
  •   fMDLIntObjs As Long            ' 0x34 (052d)
  •   fMDLIntObjs2 As Long           ' 0x38 (056d)
  •   lThreadFlags As Long           ' 0x3C (060d)
  •   lThreadCount As Long           ' 0x40 (064d)
  •   iGUIObjectCountAsInteger     ' 0x44 (068d)  Number of Forms/UserControls/etc...
  •   iComponentCount As Integer     ' 0x46 (070d)  Number of ActiveX components (eg. WinSock)
  •   lThunkCount As Long            ' 0x48 (072d)
  •   aGUIObjectArray As Long        ' 0x4C (076d)
  •   aComponentArray As Long        ' 0x50 (080d)
  •   aCOMRegData As Long            ' 0x54 (084d)
  •   oProjectExename As Long        ' 0x58 (088d)
  •   oProjectTitle As Long          ' 0x5C (092d)
  •   oHelpFile As Long              ' 0x60 (096d)
  •   oProjectName As Long           ' 0x64 (100d)
  •                                  ' 0x68 (104d) <-- Structure Size
  • End Type


回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2022-7-3 17:42

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