DyadyaGenya
Знающий
- Сообщения
- 300
- Репутация
- 10
Доброго времени суток. Пробую прикрутить ПрогрессБар к поиску файла после нажатия на кнопку, но ПрогрессБар висит поверх окна после завершения поиска, пока окно не свернешь. Вариант ПрогрессБара подсмотрел тут. Делаю так:
Надеюсь после разбора этого примера смогу разобраться с примерами на этой странице. Если нет, то тут же и продолжу.
Код:
#include <Array.au3>
#include <Standart_Func.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <WindowsConstants.au3>
#include <ProgressConstants.au3>
Global $hGUI = GUICreate("Окно поиска", 200, 200)
Global $ProgressBar
Local $Button_1
GUISetState(@SW_SHOW, $hGUI)
$Button_1 = GUICtrlCreateButton("Найти файл", 20, 50, 150, 100)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $Button_1
PoiskStat()
EndSwitch
WEnd
Func PoiskStat()
Local $iSleep = 20, $iWidth = 250, $iHeight = 25
Local $hGUI = GUICreate('', $iWidth, $iHeight, -1, -1, $WS_POPUP, $WS_EX_TOPMOST)
$ProgressBar = GUICtrlCreateProgress(0, 0, $iWidth, $iHeight, $PBS_MARQUEE)
GUISetState()
GUIRegisterMsg($WM_TIMER, "PlayProgressBar")
DllCall("user32.dll", "int", "SetTimer", "hwnd", $hGUI, "int", 0, "int", $iSleep, "int", 0)
Local $PathIni = @ScriptDir & "\Settings.ini"
ConsoleWrite($PathIni & @CR)
Local $aIni = IniReadSection($PathIni, "SektionMayBePathStat103")
Local $a = False
For $a=False To True
If $a = False Then
For $i = 1 To UBound($aIni)-1
If FileExists(Execute($aIni[$i][1])) Then
ConsoleWrite("существует такой путь : " & $aIni[$i][1] & @CR)
$a = True
ShellExecute(Execute($aIni[$i][1]))
ExitLoop
Else
ConsoleWrite("Не существует такой путь : " & $aIni[$i][1] & @CR)
; ShellExecute(@DesktopCommonDir & "\Программа.lnk")
EndIf
Next
Else
Local $path_0 = "C:"
Local $Mask_0 = "Программа.exe"
Local $aReturn = _FileSearch($path_0, $Mask_0)
;_ArrayDisplay($aReturn)
;ShellExecute($aReturn[1])
ConsoleWrite("поиск проги и полученный путь : " & $aReturn[1] & @CR)
Local $KeyIni = "MayBePathStat" & UBound($aIni)
Local $IndexIni = '"' & $aReturn[1] & '"'
IniWrite($PathIni, "SektionMayBePathStat", $KeyIni, $IndexIni)
ShellExecute($IndexIni)
EndIf
Next
GUIRegisterMsg($WM_TIMER, '')
EndFunc
Func PlayProgressBar()
GUICtrlSetData($ProgressBar, 0)
EndFunc ;==>PlayProgressBar
Func _FileSearch($sPath, $sFileMask)
Local $sOut = StringToBinary("0"& @CRLF, 2), $aOut
Local $hDir = Run(@ComSpec & ' /U/C DIR "'& $sPath &'\'& $sFileMask &'" /S/B/A-D', @SystemDir, @SW_HIDE, 6)
While 1
$sOut &= StdoutRead($hDir, False, True)
If @error Then ExitLoop
Wend
$aOut = StringRegExp(BinaryToString($sOut,2), "[^\r\n]+", 3)
If @error Then Return SetError(1)
$aOut[0] = UBound($aOut)-1
Global $IsOrNowFile = $aOut[0]
Return $aOut
EndFunc