找回密码
 加入
搜索
查看: 3511|回复: 12

[AU3基础] 能否在一个程序中同时调用两个子函数

 火.. [复制链接]
发表于 2012-4-26 17:15:01 | 显示全部楼层 |阅读模式
本帖最后由 candy_王子 于 2012-5-17 15:12 编辑

在一个程序中调用子函数,通常顺序都是等一个函数执行完之后再再执行下一个函数。有没有办法能让两个子函数同时运行?
发表于 2012-4-26 18:59:54 | 显示全部楼层
程序同一时刻只能做一件事
发表于 2012-4-26 19:57:31 | 显示全部楼层
回复 1# candy_王子

这是属于多线程方面的知识, 楼主自行搜索吧, 论坛已经有很多这方面的讨论.
发表于 2012-4-26 20:01:40 | 显示全部楼层
子程序嵌套子程序算不算啊?
 楼主| 发表于 2012-4-27 07:48:43 | 显示全部楼层
回复 3# user3000

好吧,我找找看看
 楼主| 发表于 2012-4-27 07:50:19 | 显示全部楼层
回复 4# xms77


    嵌套的还是没有在同时运行呀,只是一个子程序中断之后再执行其他子程序
发表于 2012-4-27 17:12:15 | 显示全部楼层
回复 1# candy_王子

#include <Misc.au3>
#include <WinAPIEx.au3>

Opt('MustDeclareVars', 1)
Opt('TrayAutoPause', 0)

Global $hTimerProc = DllCallbackRegister('_TimerProc', 'none', 'hwnd;uint;uint_ptr;dword')
Global $hTimerProc2 = DllCallbackRegister('_TimerProc2', 'none', 'hwnd;uint;uint_ptr;dword')
Global $Count = 0, $Count2 = 0

_WinAPI_SetTimer(0, 0, 1000, DllCallbackGetPtr($hTimerProc))
_WinAPI_SetTimer(0, 0, 1000, DllCallbackGetPtr($hTimerProc2))

Do
        Sleep(100)
Until _IsPressed('1B') ;ESC

DllCallbackFree($hTimerProc)
DllCallbackFree($hTimerProc2)

Func _TimerProc($hWnd, $iMsg, $iTimerId, $iTime)
        $Count += 1
        ConsoleWrite($Count & @CR)
EndFunc   ;==>_TimerProc

Func _TimerProc2($hWnd, $iMsg, $iTimerId, $iTime)
        $Count2 += 1
        If Not WinExists('[CLASS:Notepad]') Then ShellExecute('notepad.exe')
        WinWait('[CLASS:Notepad]')
        ControlSend('[CLASS:Notepad]', '', 'Edit1', $Count2 & @CR)
EndFunc   ;==>_TimerProc2
发表于 2012-4-27 17:25:57 | 显示全部楼层
类似回调函数?
发表于 2012-4-27 19:01:58 | 显示全部楼层
回复 7# lixiaolong

这个貌似也不双线程同时进行。。

在    _TimerProc 函数中加
sleep(10*1000)

_TimerProc2就不是每少加1
发表于 2012-4-27 19:58:17 | 显示全部楼层
回复 9# auto

确实这样
发表于 2012-4-27 22:44:56 | 显示全部楼层
_winapi_creatsemiphore,随便建,忘了数量限制了
发表于 2012-4-27 23:35:39 | 显示全部楼层
回复 11# netegg


    这个是用作线程同步的吧?功能正好相反,一个线程执行完成,另一个线程才能执行。
发表于 2012-4-27 23:40:36 | 显示全部楼层
回复 12# pusofalse
说实话,这个并发访问对象,我也一直不太清楚,只看字面的意思的话,并发的话应该是同时,可是看例子的运行结果又似乎不太对
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-20 07:42 , Processed in 0.082809 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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