Что нового

Копирование папки, отображение процесса загрузки буфера и подсчет времени потраченного на процесс (секундомер)

Автор
D

DyadyaGenya

Знающий
Сообщения
300
Репутация
10
Буфер это участок виртуальной памяти. Что оперативка компа, что оперативка hdd.
Но виртуальная память не может быть больше физической. В крайнем случае используется файл подкачки. Но насколько такое правомерно к hdd?
Насчет скрина, то это не тот вариант, который можно назвать надежным
Смотря что понимать под надежностью. Если получение скрина графика скорости на последнем мгновении процесса, то вроде вполне надежно. Если в плане получения дополнительной инфы, то конечно нужно заморочиться на составление своего графика. Но это видимо надолго. А результат хочется хотя бы промежуточный уже сейчас
Чтобы это работало в том первом коде, где была запись в файл
Не совсем понял о каком посте и варианте ты говоришь. На данный момент меня интересует как запустить скрин в посте http://autoit-script.ru/threads/kop...nnogo-na-process-sekundomer.27742/post-152876. Подписи к скринам я уже сделал. Мучаю, чтоб они автоматически обновлялись. Пока срабатывают при перезапуске окошка скрипта.
Сообщение автоматически объединено:

можно до десяти мегабайт считывания сделать
Тоесть FileOpen читает только 10мб?
 
Последнее редактирование:

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
надежность это первое, к чему нужно стремиться. процесс копирования нужно запускать в отдельном модуле, ибо будет блокироваться основной.
при возникновении любого окна во время скрина будет "дефект" изображения. это главный недостаток. даже если заставить окно выйти в топ, то все равно может внезапно появиться любое уведомление, которое закроет наше окно. смотри скрин
этот скрин сделан твоей функцией. я просто переместил окно.
а при малых объемах, и если эти файлы уже копировались недавно, то окно прогресса может и не появиться.
поэтому я и говорю, что это костыльный метод. ну да решать тебе
 

Вложения

  • screen.jpg
    screen.jpg
    39.7 КБ · Просмотры: 6
Автор
D

DyadyaGenya

Знающий
Сообщения
300
Репутация
10
а при малых объемах, и если эти файлы уже копировались недавно, то окно прогресса может и не появиться.
Тут да. При малых объемах оно не появляется. Но папку меньше чем 20гб пока не собираюсь копировать. Да и таскать окна тоже не особо планирую. Сообщения о перезаписи подавляются параметром 16. Заменил с 24, чтоб не создавались копии. Пока особых угроз в этом плане не вижу.
Но у меня возник другой вопрос. Пробовал прикрутить к "своему интерфейсу" твой скрин и пока не получается вставлять в подготовленные ячейки хоть один скрин. А ведь ещё нужно с помощью счетчика добавлять 1 к названию скрина. Ну или какой другой способ может быть, чтоб в подготовленные 4-6 ячеек вставлялись скрины?
Пы.Сы. Пути в лэйбл и сам счетчик записываю в ini-файл
Сообщение автоматически объединено:

Ну, если нравятся такие костыли, то почему бы нет.
Так подскажешь, как встроить твою или мою функцию скрина в "мой интерфейс"?
Сообщение автоматически объединено:

надежность это первое, к чему нужно стремиться
Заметил такую вещь: при скрине твоей функцией даже в формат bmp получается хуже качество. И когда твой скрин сделанный твоей функцией вставляется в "мой интерфейс" то трудно читабельно. Если сравнивать размеры файла скрина, то 515мб bmp моих против 380мб bmp твоих. Про jpg и так понятно. Хотя в твоей интерфес картинка встраивается большим размером (площадью) и читабельность лучше. И ещё. На аналогично маленьких объемах копирования обе наши функции не успевают среагировать, хотя у тебя и есть "заморозка"
Сообщение автоматически объединено:

надежность это первое, к чему нужно стремиться
Раньше не проверял. Сегодня твоей функцией тоже получилось наложение
 

Вложения

  • screen1111.jpg
    screen1111.jpg
    32.3 КБ · Просмотры: 1
Последнее редактирование:

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
вот поэтому я и говорил, что не стоит тратить на это время.
 
Автор
D

DyadyaGenya

Знающий
Сообщения
300
Репутация
10
вот поэтому я и говорил, что не стоит тратить на это время
Если я на это столько времени потратил, то сколько ж времени уйдет на написание своего графика? И тогда опять встает вопрос получения изменения скорости... Как отследить? И будет ли график рисоваться динамично?
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
я же дал примерный вариант отслеживания копирования и проценты. осталось нарисовать. за это время, уже можно было бы накопать в эту сторону)
я более прагматик в программировании чем дизайнер. все эти плюшки отображения зачастую хлам.
а свою прогу тебе еще долго пилить. даже не сомневайся)
 
Автор
D

DyadyaGenya

Знающий
Сообщения
300
Репутация
10
можно до десяти мегабайт считывания сделать
Решил вернуться к этой фразе. Так и не понял. Имеется ввиду, что команда чтения за один цикл больше 10мб физически не может прочитать?
Сообщение автоматически объединено:

внес еще правки.
И раньше замечал странность, но думал, что она связана со вставкой скрина. Но последнее время скрином не занимаюсь, а проблема осталась. После второго, третьего копирования окно как бы сплющивается, становиться меньше по высоте. После третьего копирования нижняя часть перекрывает даже секундомер. Видимо проблема в этом куске, но я не могу его подправить.
Код:
Case $btStart
                      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
                            Local $ahWin = _WinAPI_EnumProcessWindows($iPid)
                            If Not @error Then
                                If Not StringInStr($ahWin[1][1], 'Autoit') Then
                                    $hTitleProc = $ahWin[1][0]
                                    Local $aPosC = WinGetPos($hTitleProc)
                                    $iProcWinW = $aPosC[2]
                                    $iProcWinH = $aPosC[3]
  ;                                  GUICtrlSetPos($Pic4, 20, 170, $iProcWinW, $iProcWinH)
                                    WinMove($hTitleProc, '', $aPosP[0] + 15, $aPosP[1] + $aPosP[3])
                                    WinSetOnTop($hTitleProc, '', 1)
                                EndIf
                                ExitLoop
                            EndIf
                        WEnd
                    EndIf

                EndIf
            EndIf
 
Последнее редактирование:
Верх