找回密码
 加入
搜索
查看: 2388|回复: 7

关于多线程的疑惑...

[复制链接]
发表于 2009-10-9 22:18:22 | 显示全部楼层 |阅读模式
刚刚在前一个帖子里学到了adlib..觉得很好用.然后忽然看到我的记事本自动保存的文件证在被杀毒软件疯狂的扫描..每秒钟扫描N多次..我那个汗啊...因为每几十毫秒就自动保存一次...(不保存也会读取一下.一样被杀毒软件逮到)
于是就准备把自动保存的部分分离出来,弄个adlib,每1min保存一次
然后发现记事本的作者已经用了一个adlib.毫无疑问..adlib只能用一次...
然后我就搜索到了这个帖子...这个帖子里的五楼说的计时器.跟adlib类似吗?
还搜索到这个大牛的帖子..可惜没看懂这个多线程是怎么实现的...不过效果似乎达成了...
发表于 2009-10-9 23:08:14 | 显示全部楼层
AdlibRegister
发表于 2009-10-9 23:10:00 | 显示全部楼层
Adlib不是多线程 如果只要简单的重复动作 就用Adlib好了

3.3.1.0以上 改为AdlibRegister 了  可以用多个 相当于 定时器了
发表于 2009-10-9 23:11:52 | 显示全部楼层
楼上理解错了

lou楼主,我上次说的减法就能解决你的问题

但要是你不想,可以

$Timer = DllCallbackRegister("Timer", "int", "hwnd;uint;uint;dword")
$TimerDLL = DllCall("user32.dll", "uint", "SetTimer", "hwnd", 0, "uint", 0, "int", 5000,"ptr", DllCallbackGetPtr($Timer))
$Timer2 = DllCallbackRegister("Timer", "int", "hwnd;uint;uint;dword")
$Timer2DLL = DllCall("user32.dll", "uint", "SetTimer", "hwnd", 0, "uint", 0, "int", 8000, "ptr", DllCallbackGetPtr($Timer2))
$Timer3 = DllCallbackRegister("Timer", "int", "hwnd;uint;uint;dword")
$Timer3DLL = DllCall("user32.dll", "uint", "SetTimer", "hwnd", 0, "uint", 0, "int", 10000, "ptr", DllCallbackGetPtr($Timer3))
While 1
        GUIGetMsg()
WEnd
Func Timer($hWnd, $uiMsg, $idEvent, $dwTime)
        If $idEvent = $TimerDLL[0] Then
                MsgBox(0,"","线程1")
        ElseIf $idEvent = $Timer2DLL[0] Then
                MsgBox(0,"","线程2")
        ElseIf $idEvent = $Timer3DLL[0] Then
                MsgBox(0,"","线程3")
        EndIf
EndFunc

红色字就是毫秒
发表于 2009-10-9 23:14:03 | 显示全部楼层
某段源码


GUISetState(@SW_SHOW)
AdlibEnable("_abc",50)
$Timer = DllCallbackRegister("Timer", "int", "hwnd;uint;uint;dword")
$TimerDLL = DllCall("user32.dll", "uint", "SetTimer", "hwnd", 0, "uint", 0, "int", 999, "ptr", DllCallbackGetPtr($Timer))

Func _nowdate()
        Local $now = "   现在是:"&@HOUR&":"&@MIN&":"&@SEC
        GUICtrlSetData($data,$now)
EndFunc
Func Timer($hWnd, $uiMsg, $idEvent, $dwTime)
        If $idEvent = $TimerDLL[0] Then _nowdate()
EndFunc
 楼主| 发表于 2009-10-10 07:32:18 | 显示全部楼层
我明白了~~我换新版去..
我也知道不是多线程...但是差不多实现了那个功能..
发表于 2009-10-10 10:56:53 | 显示全部楼层
囧 我觉得新版的AdlibRegister和timer在应用层上 没啥区别了
 楼主| 发表于 2009-10-10 11:20:00 | 显示全部楼层
不过adlib要方便很多...
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-22 18:59 , Processed in 0.077026 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表