1 (изменено: Logonius, 2022-06-03 14:53:17)

Тема: AHK: Прогресс бар

Добрый день.
Перечитал кучу материала, но так и не понял как привязать прогресс бар к копированию файлов и вообще к любому действию по кнопке, смотрел примеры, но они простые(например показать прогресс бар при пересчете файлов в папке), а более сложные не нашел чтоб понять или не дошло просто.

Код к которому нужно привязать прогресс бар, который будет выплывать как отдельное окно, пример >>>

+ открыть спойлер

https://i.imgur.com/6wh5OlD.png

ErrorCount := CopyFilesAndFolders2("test\*.*", A_Desktop "\")
if ErrorCount <> 0
      MsgBox %ErrorCount%, Файл(ы) или папка(и) не могут быть скопированы, скорей всего они заблолкированы или используются. `n`nВосстановление продолжается, не закрывайте программу.

CopyFilesAndFolders2(SourcePattern, DestinationFolder, DoOverwrite = true)
{
   FileCopy, %SourcePattern%, %DestinationFolder%, %DoOverwrite%
   ErrorCount := ErrorLevel

   Loop, %SourcePattern%, 2
   {
      FileCopyDir, %A_LoopFileFullPath%, %DestinationFolder%\%A_LoopFileName%, %DoOverwrite%
      ErrorCount += ErrorLevel
      if ErrorLevel
         MsgBox Не удалось скопировать %A_LoopFileFullPath% в %DestinationFolder%.
   }
   return ErrorCount
}

Спасибо.

2

Re: AHK: Прогресс бар

Для работы с прогрессбаром нужно как минимум знать две переменные - сколько файлов всего и сколько уже обработал скрипт.

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

3

Re: AHK: Прогресс бар

Разберитесь сначала на простом. Вот цитата из справки:

GuiControl,, MyProgress, 50 ; Устанавливаем текущую позицию на 50.

Теперь Вы знаете, как визуально изменять шкалу прогресса. Далее вместо 50 подставим какую-нибудь переменную. Таким образом команда при каждом вызове будет "заглядывать" в содержимое этой переменной:

GuiControl,, MyProgress, N ; Устанавливаем текущую позицию на N

Вам остаётся периодически вычислять N и вслед за этим выполнять вышеуказанную команду.