#include <StaticConstants.au3>
#include <GUIConstantsEx.au3>
#include <FileOperations.au3>
#include <Clipboard.au3>
#include <WinAPI.au3>
#include <FontConstants.au3>
#include <WindowsConstants.au3>
#include <APIConstants.au3>
#include <WinAPIEx.au3>
Opt("GUICloseOnESC", 0)
Opt("TrayAutoPause", 0)
OnAutoItExitRegister('OnAutoItExit')
Global $tag_RECT1 = "struct;long Left1;long Top1;long Right1;long Bottom1;endstruct"
Global $tag_RECT2 = "struct;long Left2;long Top2;long Right2;long Bottom2;endstruct"
Global $tag_RECT3 = "struct;long Left3;long Top3;long Right3;long Bottom3;endstruct"
Global $tag_RECT4 = "struct;long Left4;long Top4;long Right4;long Bottom4;endstruct"
Global $tag_RECT5 = "struct;long Left5;long Top5;long Right5;long Bottom5;endstruct"
Global $tag_RECT6 = "struct;long Left6;long Top6;long Right6;long Bottom6;endstruct"
Global $tag_RECT7 = "struct;long Left7;long Top7;long Right7;long Bottom7;endstruct"
Global $tRECT1, $tRECT2, $tRECT3, $tRECT4, $tRECT5, $tRECT6, $tRECT7, $hFont, $hOldFont, $hDC, $Count = 0
$tRECT1 = DllStructCreate($tag_RECT1)
DllStructSetData($tRECT1, "Left1", 14)
DllStructSetData($tRECT1, "Top1", 8)
DllStructSetData($tRECT1, "Right1", 150)
DllStructSetData($tRECT1, "Bottom1", 50)
$tRECT2 = DllStructCreate($tag_RECT2)
DllStructSetData($tRECT2, "Left2", 14)
DllStructSetData($tRECT2, "Top2", 40)
DllStructSetData($tRECT2, "Right2", 150)
DllStructSetData($tRECT2, "Bottom2", 100)
$tRECT3 = DllStructCreate($tag_RECT3)
DllStructSetData($tRECT3, "Left3", 14)
DllStructSetData($tRECT3, "Top3", 72)
DllStructSetData($tRECT3, "Right3", 150)
DllStructSetData($tRECT3, "Bottom3", 150)
$tRECT4 = DllStructCreate($tag_RECT4)
DllStructSetData($tRECT4, "Left4", 14)
DllStructSetData($tRECT4, "Top4", 104)
DllStructSetData($tRECT4, "Right4", 150)
DllStructSetData($tRECT4, "Bottom4", 200)
$tRECT5 = DllStructCreate($tag_RECT5)
DllStructSetData($tRECT5, "Left5", 14)
DllStructSetData($tRECT5, "Top5", 138)
DllStructSetData($tRECT5, "Right5", 100)
DllStructSetData($tRECT5, "Bottom5", 250)
$tRECT6 = DllStructCreate($tag_RECT6)
DllStructSetData($tRECT6, "Left6", 35)
DllStructSetData($tRECT6, "Top6", 240)
DllStructSetData($tRECT6, "Right6", 250)
DllStructSetData($tRECT6, "Bottom6", 300)
$tRECT7 = DllStructCreate($tag_RECT7)
DllStructSetData($tRECT7, "Left7", 187)
DllStructSetData($tRECT7, "Top7", 240)
DllStructSetData($tRECT7, "Right7", 260)
DllStructSetData($tRECT7, "Bottom7", 300)
Global $Form1 = GUICreate("CopyEX", 411, 270, -1, -1, $GUI_SS_DEFAULT_GUI, $WS_EX_TOPMOST)
Global $Progress1 = GUICtrlCreateProgress(16, 176, 374, 17)
Global $Label2 = GUICtrlCreateLabel("", 100, 136, 287, 20, $SS_RIGHT)
Global $Label7 = GUICtrlCreateLabel("", 290, 8, 100, 20, $SS_RIGHT)
Global $Label8 = GUICtrlCreateLabel("", 290, 40, 100, 20, $SS_RIGHT)
Global $Label9 = GUICtrlCreateLabel("", 290, 72, 100, 20, $SS_RIGHT)
Global $Label10 = GUICtrlCreateLabel("", 290, 104, 100, 20, $SS_RIGHT)
Global $Checkbox1 = GUICtrlCreateCheckbox("", 16, 240, 17, 17)
Global $Checkbox2 = GUICtrlCreateCheckbox("", 168, 240, 17, 17)
$Start = GUICtrlCreateButton("Старт", 16, 210, 75, 20)
$Stop = GUICtrlCreateButton("Стоп", 315, 210, 75, 20)
$Pause = GUICtrlCreateButton("Пауза", 168, 210, 75, 20)
GUISetState(@SW_SHOW)
$dialog = 'Введите новое имя или выберите папку для сохранения'
Global $hDC = _WinAPI_GetDC($Form1)
Global $hFont = _WinAPI_CreateFont(17, 0)
Global $hOldFont = _WinAPI_SelectObject($hDC, $hFont)
_DrawText()
Global $hDll = DllCallbackRegister('_WinProc', 'ptr', 'hwnd;uint;wparam;lparam')
Global $pDll = DllCallbackGetPtr($hDll)
Global $hProc = _WinAPI_SetWindowLongEx($Form1, $GWL_WNDPROC, $pDll)
$i = 0
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
OnAutoItExit()
ClipPut('')
$array = 0
GUIDelete()
ExitLoop
Case $Start
While 1
GUICtrlSetData($Label2,$i)
$i+=1
Sleep(100)
WEnd
If GUICtrlRead($Checkbox2) = $GUI_CHECKED Then
$Dest = FileSaveDialog('', @DesktopDir, '(*.*)', 16, $dialog, $Form1)
$delim = StringRegExpReplace($Dest, '.*\\', '')
$dest_replace = _FO_PathSplit($Dest)
If $delim = $dialog Then
$Dest = $dest_replace[0]
Else
$Dest = $dest_replace[0] & $dest_replace[1]
EndIf
Else
$Dest = FileSelectFolder('Выберите папку сохранения', '', 1 + 2 + 4, '', $Form1)
EndIf
GUICtrlSetState($Checkbox2, $GUI_DISABLE)
GUICtrlSetState($Start, $GUI_DISABLE)
GUICtrlSetState($Checkbox1, $GUI_DISABLE)
;If $Dest Then
; For $i = 0 To UBound($Source_array) - 1
; $Source_array[$i][1] = $Dest
; Next
; Else
; OnAutoItExit()
; ClipPut('')
; $array = 0
; GUIDelete()
; ExitLoop
; EndIf
ClipPut('')
If GUICtrlRead($Checkbox1) = $GUI_CHECKED Then
$rewrite = 1
Else
$rewrite = 0
EndIf
;$ret = _CopyDirCopyFile($Source_array, $rewrite, $rewrite, $Progress1, $Stop, $Pause, 'Далее')
$Source_array = 0
OnAutoItExit()
ClipPut('')
$array = 0
GUIDelete()
ExitLoop
EndSwitch
WEnd
Func _WinProc($hWnd, $iMsg, $wParam, $lParam)
Switch $iMsg
Case $WM_PAINT
If $Count = 0 Then
$Count += 1
Local $tPAINTSTRUCT, $DC
$DC = _WinAPI_BeginPaint($hWnd, $tPAINTSTRUCT)
_DrawText()
_WinAPI_EndPaint($hWnd, $tPAINTSTRUCT)
$Count -= 1
Return 0
EndIf
EndSwitch
Return _WinAPI_CallWindowProc($hProc, $hWnd, $iMsg, $wParam, $lParam)
EndFunc ;==>_WinProc
Func OnAutoItExit()
_WinAPI_SetWindowLongEx($Form1, $GWL_WNDPROC, $hProc)
DllCallbackFree($hDll)
_Exit()
EndFunc ;==>OnAutoItExit
Func _DrawText()
_WinAPI_DrawText($hDC, 'Общий объем', $tRECT1, $DT_LEFT)
_WinAPI_DrawText($hDC, 'Скопировано', $tRECT2, $DT_LEFT)
_WinAPI_DrawText($hDC, 'Скорость', $tRECT3, $DT_LEFT)
_WinAPI_DrawText($hDC, 'Процент', $tRECT4, $DT_LEFT)
_WinAPI_DrawText($hDC, 'Файл', $tRECT5, $DT_LEFT)
_WinAPI_DrawText($hDC, 'Перезапись', $tRECT6, $DT_LEFT)
_WinAPI_DrawText($hDC, 'Как файл', $tRECT7, $DT_LEFT)
EndFunc ;==>_DrawText
Func _Exit()
_WinAPI_SelectObject($hDC, $hOldFont)
_WinAPI_DeleteObject($hFont)
_WinAPI_ReleaseDC($Form1, $hDC)
_WinAPI_InvalidateRect($Form1, $tRECT1)
_WinAPI_InvalidateRect($Form1, $tRECT2)
_WinAPI_InvalidateRect($Form1, $tRECT3)
_WinAPI_InvalidateRect($Form1, $tRECT4)
_WinAPI_InvalidateRect($Form1, $tRECT5)
_WinAPI_InvalidateRect($Form1, $tRECT6)
_WinAPI_InvalidateRect($Form1, $tRECT7)
$tRECT1 = 0
$tRECT2 = 0
$tRECT3 = 0
$tRECT4 = 0
$tRECT5 = 0
$tRECT6 = 0
$tRECT7 = 0
EndFunc ;==>_Exit