循环进度条的代码怎么使用?
本帖最后由 zzPhoenix 于 2010-11-28 22:43 编辑本人菜鸟,高手莫笑。我想写个脚本来判断电脑是否需要安装一些软件,软件有静默参数可以实现静默安装。但是不知道什么时候才能安装完,平时只是基本靠硬盘灯来判断安装完了没{:face (245):} 。今天从坛子里看到一段进度条代码很是有趣,想用这段代码来加个循环进度条。但是这段代码有点问题,位置是在左下角,但是这个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
Return SetError(4, 0, 0)
Case Else
Return 1
EndSelect
EndFunc ;==>_API_SetLayeredWindowAttributes
学习一下......... 沙发真是让我汗啊{:face (207):} 静默安装还需要提示。楼主真风趣。{:face (245):} 建议7z压缩。。。。安装快。不加静默安装参数。岂不更好? 我觉得进度条是不太现实的,但可以显示一个循环滚动的进度条,判断 RUN 返回的PID进程是否存在,如果不存在则表示安装完成了 回复 5# yhxhappy
对就是这个意思,这段代码就是这样的,但是
$pro= GUICtrlCreateLabel("□",40+$w*$i, 20, 135, 10)这个Label的位置不知道怎么改,还有就是不知道这个Function运行完了之后为什么不能退出? 安装软件一般都是通过判断进程是否存在 然后判断软件是否安装完毕。
另外软件安装器也一般都是绿色的软件 那做一个循环滚动的滚动条可以吧
#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
页:
[1]