DyadyaGenya
Знающий
- Сообщения
- 300
- Репутация
- 10
Добрый день всем. Пробую выводить бегущие проценты, но почему-то выводиться цифра и тут же замирает. У других видел вроде бы тоже самое и проценты бегут. По идее этого достаточно
Привожу сразу весь кусок тренировачного кода, чтоб можно было попробовать
Код:
$iProcC = Number(StringRegExpReplace(WinGetTitle($hTitleProc), '[^\d]', '\1'))
GUICtrlSetData($Sekk, $iProcC)
Привожу сразу весь кусок тренировачного кода, чтоб можно было попробовать
Код:
#pragma compile(AutoItExecuteAllowed, true)
#RequireAdmin
#include <Clipboard.au3>
#include <Constants.au3>
#include <Date.au3>
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <Timers.au3>
#include <StaticConstants.au3>
#Include <ScreenCapture.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <WinAPIProc.au3>
Global $sIniFile = @ScriptDir & '\Setting.ini'
Global $timer, $Secs, $Mins, $Hour, $Time, $sTime, $TimeInf, $sPS, $sPD
Global $iPid, $iTM, $hTitleProc, $iProcWinH, $iProcWinW
Global $Counter = IniRead("Setting.ini","Statistika","Count","")
Global $sPathSC = @ScriptDir & '\screen' & $Counter+1 & '.bmp'
Global $ahWin, $ClassObj
$hGui = GUICreate('Секундомер', 700, 680, -1, -1, -1, $WS_EX_TOPMOST)
Local $btStart = GUICtrlCreateButton('Старт', 392, 8, 75, 25)
Local $sPathSS = GUICtrlCreateInput('', 8, 96, 325, 21)
Local $sPathDD = GUICtrlCreateInput('', 8, 128, 325, 21)
Local $sPathS = GUICtrlCreateButton('Откуда', 392, 96, 75, 25)
Local $sPathD = GUICtrlCreateButton('Куда', 392, 128, 75, 25)
Local $btClear = GUICtrlCreateButton('Очистить', 392, 630, 75, 25)
$LabelPic1 = GUICtrlCreateLabel('', 8, 370, 330, 25, $SS_CENTERIMAGE + $SS_CENTER, $WS_EX_STATICEDGE)
$LabelPic2 = GUICtrlCreateLabel('', 338, 370, 330, 25, $SS_CENTERIMAGE + $SS_CENTER, $WS_EX_STATICEDGE)
$LabelPic3 = GUICtrlCreateLabel('', 8, 600, 330, 25, $SS_CENTERIMAGE + $SS_CENTER, $WS_EX_STATICEDGE)
$LabelPic4 = GUICtrlCreateLabel('', 338, 600, 330, 25, $SS_CENTERIMAGE + $SS_CENTER, $WS_EX_STATICEDGE)
$Sekk = GUICtrlCreateLabel('', 8, 640, 75, 25, $SS_CENTERIMAGE + $SS_CENTER, $WS_EX_STATICEDGE)
GUISetState()
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ProcessClose($iPid)
Exit
Case $sPathS
GUICtrlSetData($sPathSS, '')
$sPS = FileSelectFolder('Выбор копируемой папки', '', 0, '', $hGui)
If Not @error Then GUICtrlSetData($sPathSS, $sPS)
Case $sPathD
GUICtrlSetData($sPathDD, '')
$sPD = FileSelectFolder('Выбор папки назначения', '', 0, '', $hGui)
If Not @error Then GUICtrlSetData($sPathDD, $sPD)
Case $btStart
_COPY()
Sleep(1000)
_SCREEN()
Case $btClear
GUICtrlSetData($sPathSS, '')
GUICtrlSetData($sPathDD, '')
_Clear()
EndSwitch
WEnd
Func _Clear()
Local $aRS = IniReadSection("Setting.ini", "Путь")
If Not @error Then
For $i = 1 To $aRS[0][0]
$aRS[$i][1] = ''
Next
IniWriteSection("Setting.ini", "Путь", $aRS)
EndIf
Local $LCC = IniReadSection("Setting.ini","Statistika")
If Not @error Then
For $j = 1 To $LCC[0][0]
$LCC[$j][1] = ''
IniWrite("Setting.ini","Statistika", $LCC[$j][0], '')
Next
EndIf
Local $IMG = IniReadSection("Setting.ini","ПутьСкрин")
If Not @error Then
For $k = 1 To $IMG[0][0]
$IMG[$k][1] = ''
FileDelete(IniRead("Setting.ini","ПутьСкрин", $IMG[$k][0], ''))
IniWrite("Setting.ini","ПутьСкрин", $IMG[$k][0], '')
Next
EndIf
EndFunc
Func _SCREEN()
AdlibRegister("$iPid", 100)
If Not WinExists("[class:OperationStatusWindow]") Then
MsgBox(4096, 'Сообщение', 'Окно не найдено, завершаем работу скрипта')
Exit
Else
$hWnd = WinGetHandle("[CLASS:OperationStatusWindow]")
$iProcC = Number(StringRegExpReplace(WinGetTitle($hTitleProc), '[^\d]', '\1'))
GUICtrlSetData($Sekk, $iProcC)
If $iProcC > 25 Then
Send("!{PRINTSCREEN}")
_ClipBoard_Open(0)
$hBitmap = _ClipBoard_GetDataEx($CF_BITMAP)
_ClipBoard_Close()
_GDIPlus_Startup()
$hImage = _GDIPlus_BitmapCreateFromHBITMAP($hBitmap)
_GDIPlus_ImageSaveToFile($hImage, @ScriptDir & "\screen.bmp")
_GDIPlus_BitmapDispose($hImage)
_GDIPlus_Shutdown()
Dim $Screen = @ScriptDir & "\screen.bmp"
ShellExecute($Screen)
EndIf
EndIf
EndFunc ;==>_SCREEN
Func _COPY()
FileDelete('copy.txt')
Local $aPosP = WinGetPos($hGui)
WinMove($hGui, '', $aPosP[0], $aPosP[1], $aPosP[2], $aPosP[3] - $iProcWinH)
If Not ProcessExists($iPid) Then
If FileExists($sPS) And FileExists($sPD) Then
GUICtrlSetData($TimeInf, '00:00:00')
FileWrite('copy.txt', "$Shell = ObjCreate('Shell.Application')" & @CRLF & "$Shell.NameSpace('" & $sPD & "').CopyHere('" & $sPS & "', 16)")
$timer = TimerInit()
$iTM = _Timer_SetTimer($hGui, 10, '_TIMER')
$iPid = Run(@AutoItExe & ' /AutoIt3ExecuteScript copy.txt')
If ProcessExists($iPid) Then
While 1
$ahWin = _WinAPI_EnumProcessWindows($iPid)
If Not @error Then
If Not StringInStr($ahWin[1][1], 'Autoit') Then
$hTitleProc = $ahWin[1][0]
$ClassObj = $ahWin[1][1]
EndIf
ExitLoop
EndIf
WEnd
EndIf
EndIf
EndIf
EndFunc