找回密码
 加入
搜索
查看: 1869|回复: 5

[已解决]使控件可用时,为什么窗口一直不停的闪动?

[复制链接]
发表于 2009-12-7 11:37:54 | 显示全部楼层 |阅读模式
本帖最后由 痒痒 于 2009-12-7 14:19 编辑

感谢asionwu 朋友!问题解决
#NoTrayIcon
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Timers.au3>
Global $time = 9
$Form1 = GUICreate("打开文件", 345, 120, -1, -1)
$Label2 = GUICtrlCreateLabel("9 秒后进入安装程序", 16, 76, 150, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$Button1 = GUICtrlCreateButton("浏览..", 272, 35, 57, 26,0)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
$Button2 = GUICtrlCreateButton("确定", 168, 72, 73, 33,$BS_DEFPUSHBUTTON);$BS_DEFPUSHBUTTON
GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
$Button3 = GUICtrlCreateButton("取消", 256, 72, 73, 33, 0)
GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
$Label1 = GUICtrlCreateLabel("选择文件位置", 17, 13, 76, 20)
GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
$Input1 = GUICtrlCreateInput("D:\SoftIns2.0\SoftIns2.0.exe", 16, 35, 249, 24)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)

AdlibEnable("_timer", 1000)
GUICtrlSetState($Button1,$GUI_DISABLE)
GUICtrlSetState($Button2,$GUI_DISABLE)
GUICtrlSetState($Input1,$GUI_DISABLE)
$timer1 = _Timer_Init()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
                Case $GUI_EVENT_CLOSE,$Button3
                                Exit
                Case $Button1
                         $var = FileOpenDialog("打开",@HomeDrive& "", _
                 "可执行文件 (*.exe;*.com;*.bat)",1+4,GUICtrlRead($Input1));,GUICtrlRead($Input1)
                                If @error Then
                                        Else
                                        GUICtrlSetData($Input1,$var)
                                EndIf
                Case $Button2
                        do 
                        $ba=GUICtrlRead($Input1)
                                If Not(FileExists($ba))Then
                                        MsgBox(0+64,"消息","未找到此文件,请重新输入!")
                                    ExitLoop
                            EndIf
                        Until  Run($ba) 
                                Exit;运行后此软件退出
EndSwitch

If $time <= 0 Then
                AdlibDisable()
                main()
        EndIf
        If _Timer_GetIdleTime() <= _Timer_Diff($timer1) Then 
                        AdlibDisable()
                        GUICtrlSetState($Button1,$GUI_ENABLE)
                        GUICtrlSetState($Button2,$GUI_ENABLE)
                        GUICtrlSetState($Label2,$GUI_DISABLE)
                        GUICtrlSetState($Input1,$GUI_ENABLE)
                EndIf
WEnd
AdlibDisable()
Exit


Func _timer()
        $time -= 1
        GUICtrlSetData($Label2, $time & " 秒后进入安装程序")
        If $time <= 0 Then 
                AdlibDisable()
                
EndIf
EndFunc   ;==>_timer

Func main()
        $ba=GUICtrlRead($Input1)
        If Not(FileExists($ba))Then
                MsgBox(0+64,"消息","未找到此文件,请重新输入!")
        EndIf
        Run($ba)
        Exit ;倒计时运行软件,此软件退出
EndFunc   ;==>main        
        
        
        
        
坛子里搜索不到答案,朋友们给看看,是是哪里出问题了,感谢!
发表于 2009-12-7 14:03:39 | 显示全部楼层
If _Timer_GetIdleTime() <= _Timer_Diff($timer1) Then
        AdlibDisable()
        GUICtrlSetState($Button1,$GUI_ENABLE)
        GUICtrlSetState($Button2,$GUI_ENABLE)
        GUICtrlSetState($Label2,$GUI_DISABLE)
        GUICtrlSetState($Input1,$GUI_ENABLE)
EndIf
注意你这里的代码
 楼主| 发表于 2009-12-7 14:12:41 | 显示全部楼层
确实是这里的问题,可这些代码又是必要的,不知如何处理,才能不在这个循环里。
发表于 2009-12-7 14:14:38 | 显示全部楼层
本帖最后由 asionwu 于 2009-12-7 14:16 编辑
#NoTrayIcon
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Timers.au3>
Global $time = 9
$Form1 = GUICreate("打开文件", 345, 120, -1, -1)
$Label2 = GUICtrlCreateLabel("9 秒后进入安装程序", 16, 76, 150, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$Button1 = GUICtrlCreateButton("浏览..", 272, 35, 57, 26,0)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
$Button2 = GUICtrlCreateButton("确定", 168, 72, 73, 33,$BS_DEFPUSHBUTTON);$BS_DEFPUSHBUTTON
GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
$Button3 = GUICtrlCreateButton("取消", 256, 72, 73, 33, 0)
GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
$Label1 = GUICtrlCreateLabel("选择文件位置", 17, 13, 76, 20)
GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
$Input1 = GUICtrlCreateInput("D:\SoftIns2.0\SoftIns2.0.exe", 16, 35, 249, 24)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)

AdlibEnable("_timer", 1000)
GUICtrlSetState($Button1,$GUI_DISABLE)
GUICtrlSetState($Button2,$GUI_DISABLE)
GUICtrlSetState($Input1,$GUI_DISABLE)
$timer1 = _Timer_Init()
$idle = 0
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE,$Button3
                        Exit
                Case $Button1
                         $var = FileOpenDialog("打开",@HomeDrive& "", _
                        "可执行文件 (*.exe;*.com;*.bat)",1+4,GUICtrlRead($Input1));,GUICtrlRead($Input1)
                        If @error Then
                        Else
                                GUICtrlSetData($Input1,$var)
                        EndIf
                Case $Button2
                        do
                        $ba=GUICtrlRead($Input1)
                                If Not(FileExists($ba))Then
                                        MsgBox(0+64,"消息","未找到此文件,请重新输入!")
                                        ExitLoop
                                EndIf
                        Until Run($ba)
                                Exit;运行后此软件退出
        EndSwitch

        If $time <= 0 Then
                AdlibDisable()
                main()
        EndIf
        If $idle = 0 And _Timer_GetIdleTime() <= _Timer_Diff($timer1) Then 
                AdlibDisable()
                GUICtrlSetState($Button1,$GUI_ENABLE)
                GUICtrlSetState($Button2,$GUI_ENABLE)
                GUICtrlSetState($Label2,$GUI_DISABLE)
                GUICtrlSetState($Input1,$GUI_ENABLE)
                $idle = 1
        EndIf
WEnd

AdlibDisable()
Exit

Func _timer()
        $time -= 1
        GUICtrlSetData($Label2, $time & " 秒后进入安装程序")
        If $time <= 0 Then 
            AdlibDisable()
                EndIf
EndFunc   ;==>_timer

Func main()
        $ba=GUICtrlRead($Input1)
        If Not(FileExists($ba))Then
                MsgBox(0+64,"消息","未找到此文件,请重新输入!")
        Else
                Run($ba)
        EndIf
        Exit ;倒计时运行软件,此软件退出
EndFunc   ;==>main        
发表于 2009-12-7 14:15:13 | 显示全部楼层
给你改了下 添加个判断就行了
发表于 2009-12-7 14:16:53 | 显示全部楼层
学习中,正需要这个
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2025-1-12 12:14 , Processed in 0.085684 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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