找回密码
 加入
搜索
查看: 2641|回复: 3

[网络通信] 針對(一个Msgbox倒计时的例子)改訊息方式-已解決

[复制链接]
发表于 2021-7-18 15:17:58 | 显示全部楼层 |阅读模式
本帖最后由 yohoboy 于 2021-7-18 23:48 编辑


嘗試將板上的一個例子作改良 一个Msgbox倒计时的例子
發現到怎麼弄無法針對MSGBOX的標誌設為1 時,隨時按下確定鈕或取消鈕或等計時到時
將Msbbox取回正確的返回值,總是返回上一次操作狀態的返回值。
例如第一次按下確定鈕,返回值是1,但是第二次按下取消鈕返回值還是1
第三次按下確定鈕返回值是2 ,怎麼調整代碼或是新增其他代碼判斷都無效。
所以上來請教大神怎麼改善這問題,謝謝抽空回覆。

附上代碼

#include "CoProc.au3" ;需另外加入擴充UDF
;_CoProc("Count_Down_0") ;測試過ok
_CoProc("Count_Down_1") ;有問題無法改善取回正確返回值

Func Count_Down_0()
        $respond = MsgBox(0,"Count_Down_0", "_Count_Down_0")
        While Not WinExists("Count_Down_0", "")
    WEnd
        $whd = WinGetHandle("Count_Down_0", "")
    $n = 10
    While $n > 0 And WinExists($whd)
        $n = $n-1
        ControlSetText($whd, "", "Button1", "確定["&$n&"]")
                Sleep(1000)
        WEnd
    If WinExists($whd) Then ;用以非激活(啟用)狀態時,強制激活關閉視窗
                WinActivate($whd)
        ControlClick($whd, "", "Button1")
        EndIf
        MsgBox(0, "$respond", $respond)
EndFunc

Func Count_Down_1()
        Global $whd= "", $respond = ""
        $respond = MsgBox(1,"Count_Down_1", "_Count_Down_1")
        While Not WinExists("Count_Down_1", "")
    WEnd
        $whd = WinGetHandle("Count_Down_1", "")
    $n = 10
    While $n > 0 And WinExists($whd)
        $n = $n-1
        ControlSetText($whd, "", "Button1", "確定["&$n&"]")
                ;ControlSetText($whd, "", "Button2", "取消["&$n&"]")
                Sleep(1000)
        WEnd
        If WinExists($whd) Then ;用以非激活(啟用)狀態時,強制激活關閉視窗
                WinActivate($whd)
                ControlClick($whd, "", "Button1")
        EndIf
        If $respond = 1 Then
                MsgBox(0, "確定", $respond)
        ElseIf         $respond = 2 Then
                MsgBox(0,"取消",$respond)
        EndIf
        MsgBox(0,"主回應",$respond)
EndFunc


 楼主| 发表于 2021-7-18 23:48:11 | 显示全部楼层
本帖最后由 yohoboy 于 2021-7-19 00:05 编辑

自己回答,已解決。還真的不要簡略源碼,嘗試整合在一起。
#include "CoProc.au3"
Global $q
_CoProc("_haha")
_hehe()

Func _haha()
        While Not WinExists("haha","haha")
        WEnd
        $whd=WinGetHandle("haha","haha")
        WinSetTitle($whd,"","哈哈~~")
        $n=10
        While $n>0 And WinExists($whd)
                $n=$N-1
                ControlSetText($whd,"","Button1","是["&$n&"]")
                Sleep(1000)
        WEnd
        If WinExists($whd) Then
                WinActivate($whd)
                ControlClick($whd,"","Button1")
                EndIf

EndFunc

Func _hehe()
     $q = MsgBox(3,"haha","haha") ;<--問題核心
         MsgBox(0,"$q",$q)
EndFunc
发表于 2021-7-23 16:49:43 | 显示全部楼层
_msgboxDJS_UDF.au3

这个UDF可以了解一下,我用了一次感觉非常爽...
发表于 2021-7-24 07:58:04 | 显示全部楼层
这个不错,很实用
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-19 14:51 , Processed in 0.072272 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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