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

[AU3基础] 循环进度条的代码怎么使用?

  [复制链接]
发表于 2010-11-26 16:25:28 | 显示全部楼层 |阅读模式
本帖最后由 zzPhoenix 于 2010-11-28 22:43 编辑

本人菜鸟,高手莫笑。我想写个脚本来判断电脑是否需要安装一些软件,软件有静默参数可以实现静默安装。但是不知道什么时候才能安装完,平时只是基本靠硬盘灯来判断安装完了没 。今天从坛子里看到一段进度条代码很是有趣,想用这段代码来加个循环进度条。但是这段代码有点问题,位置是在左下角,但是这个Label的位置不知道怎么改,而且还有就是软件都安装完了这个进度条还有?代码如下,请问如而后使用??或者说只要能有个进度条提示啥的都行!
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Run("L:\常用软件"&"\360安全卫士 7.0正式版.exe /S","",@SW_SHOW)
Opt("WinTitleMatchMode", 2)
$AForm2 = GUICreate("AForm1", 400,100,40,@DesktopHeight-50,$WS_POPUP, $WS_EX_LAYERED+$WS_EX_TOPMOST+$WS_EX_TOOLWINDOW)
GUISetBkColor(0xABCDEF)
for $i=0 to 9
$w=15
$pro= GUICtrlCreateLabel("□",40+$w*$i, 20, 135, 10)
GUICtrlSetBkColor($pro, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor($pro, 0xffffff)
Next
GUISetState(@SW_SHOW)
AdlibRegister("xh",3300)
Func xh()
$h=15
$i=0
Do
$i = $i + 1
$pro= GUICtrlCreateLabel("■",40+$h*($i-1), 20, 10, 10)
GUICtrlSetColor(-1, 0x00ff00)
Sleep(300)
GUICtrlDelete($pro)
if $i=10 Then ExitLoop
Until $i>=10
EndFunc
_API_SetLayeredWindowAttributes($AForm2, 0xABCDEF)
GUISetState(@SW_SHOW)
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exitloop
        EndSwitch
WEnd

Func _API_SetLayeredWindowAttributes($hwnd, $i_transcolor, $Transparency = 255, $isColorRef = False)

    Local Const $AC_SRC_ALPHA = 1
    Local Const $ULW_ALPHA = 2
    Local Const $LWA_ALPHA = 0x2
    Local Const $LWA_COLORKEY = 0x1
    If Not $isColorRef Then
        $i_transcolor = Hex(String($i_transcolor), 6)
        $i_transcolor = Execute('0x00' & StringMid($i_transcolor, 5, 2) & StringMid($i_transcolor, 3, 2) & StringMid($i_transcolor, 1, 2))
    EndIf
    Local $Ret = DllCall("user32.dll", "int", "SetLayeredWindowAttributes", "hwnd", $hwnd, "long", $i_transcolor, "byte", $Transparency, "long", $LWA_COLORKEY + $LWA_ALPHA)
    Select
        Case @error
            Return SetError(@error, 0, 0)
        Case $Ret[0] = 0
            Return SetError(4, 0, 0)
        Case Else
            Return 1
    EndSelect
EndFunc   ;==>_API_SetLayeredWindowAttributes 
发表于 2010-11-27 14:30:56 | 显示全部楼层
学习一下.........
 楼主| 发表于 2010-11-27 14:39:30 | 显示全部楼层
沙发真是让我汗啊
发表于 2010-11-28 00:20:52 | 显示全部楼层
静默安装还需要提示。楼主真风趣。   建议7z压缩。。。。安装快。不加静默安装参数。岂不更好?
发表于 2010-11-28 10:41:56 | 显示全部楼层
我觉得进度条是不太现实的,但可以显示一个循环滚动的进度条,判断 RUN 返回的PID进程是否存在,如果不存在则表示安装完成了
 楼主| 发表于 2010-11-28 22:38:10 | 显示全部楼层
回复 5# yhxhappy
对就是这个意思,这段代码就是这样的,但是
$pro= GUICtrlCreateLabel("□",40+$w*$i, 20, 135, 10)这个Label的位置不知道怎么改,还有就是不知道这个Function运行完了之后为什么不能退出?
发表于 2010-11-29 02:50:49 | 显示全部楼层
安装软件一般都是通过判断进程是否存在 然后判断软件是否安装完毕。
另外软件安装器也一般都是绿色的软件
发表于 2010-11-29 17:02:11 | 显示全部楼层
那做一个循环滚动的滚动条可以吧


#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <WindowsConstants.au3>
#Include <SendMessage.au3>

$Form1 = GUICreate("Form1", 406, 102, 192, 124)
$Progress = GUICtrlCreateProgress(24, 28, 361, 20, $PBS_MARQUEE)                                                ;样式必须为:$PBS_MARQUEE,否则看不到效果
$Button = GUICtrlCreateButton("开始", 124, 60, 100, 25)

GUISetState(@SW_SHOW)

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button
                        _SendMessage(GUICtrlGetHandle($Progress), $PBM_SETMARQUEE, True, 50)                ;向进度条发送数据,使之能一段一段的重复显示,数字越小,滚动越快
        EndSwitch
WEnd
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-20 00:38 , Processed in 0.080990 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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