Autorun

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9 писал(а): Скрытый текст
Я выше написал, что проверил vbs. Не работает даже сам скрипт. Код какой-то неправильный.
Orion9 писал(а):Для нормальной работы нужен отдельный wdx
Есть отдельный wdx, который работает в 10 раз медленней моего скрипта. Из-за временных интервалов, которые обязательно требуются при -stay_open.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

AkulaBig писал(а):Не работает даже сам скрипт. Код какой-то неправильный.
Мой скрипт работает, иначе зачем бы мне его выкладывать? И работает он быстро, но с косяками, которые были озвучены там же.

Хотел уже снести это дело, но потом подумал, почему бы не проверить через cscript.exe, заодно и скорость посмотреть. Снял комментарии в options.ini

Код: Выделить всё

vbs=%WINDIR%\system32\cscript.exe
vbsCmdArgs=//nologo
vbsVarFormat=filename="%s"
vbsDoubleSlashPath=0
vbsStdOutFormat=Wscript.echo %s
Ну что сказать. Работает. Теперь и удаление и sleep работают, но скорость значительно упала. Плюс появились кракозябры, но это, наверное, можно решить. Полный скрипт
[cut]

Код: Выделить всё

'Option Explicit

Dim fso, argFile, outFile
Set fso = CreateObject("Scripting.FileSystemObject")

argFile  = fso.GetSpecialFolder(2) & "\exiftool_args.txt"
outFile  = fso.GetSpecialFolder(2) & "\exiftool_out.txt"

'content  = GetExifTag(filename, "ImageSize") 
content = GetExifTag(filename, "FileName")

Function GetExifTag(fileName, tagName)
    Dim stream, result
   
    If fso.FileExists(outFile) Then fso.DeleteFile(outFile)
   
    Set stream = fso.OpenTextFile(argFile, 8) ' 8 = Append
    stream.WriteLine "-s3"
    'stream.WriteLine "-" & tagName
    stream.WriteLine "-W+!"
    stream.WriteLine outFile
    stream.WriteLine fileName    
    stream.WriteLine "-execute"
    stream.Close
   
    Dim timeout
    timeout = 0
    Do While Not fso.FileExists(outFile) And timeout < 50
        WScript.Sleep(10)
        timeout = timeout + 1
    Loop
   
    If fso.FileExists(outFile) Then
        Set stream = fso.OpenTextFile(outFile, 1)
        If Not stream.AtEndOfStream Then
            result = Trim(stream.ReadAll)
        Else
            result = "Empty"
        End If
        stream.Close
        GetExifTag = result
    Else
        GetExifTag = "Error: Timeout"
    End If
End Function
[/cut]
Можно, конечно, и дальше ловить рыбку в этой мутной воде, но, похоже, улов будет не тот, депрессивный. В общем, я пас.
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9 писал(а):Мой скрипт работает
Пришлось покопаться, но завел ваш скрипт. На vbs он не работает:
Изображение
А вот на cscript.exe действительно работает. Только убрал коммент с stream.WriteLine "-" & tagName
В общем ваш скрипт, видимо, написан под старый движок vbs. А у меня Винда 11 с последними обновлениями.
Перевод крякозябров я делал:

Код: Выделить всё

With CreateObject("ADODB.Stream")
	.Charset = "Windows-1251"
	.Open
	.WriteText objWshExec.StdOut.ReadAll
	.Position = 0
	.Charset = "UTF-8"
	content = .ReadText
End With
Но с налета привязать к вашему скрипту не получилось.
А теперь очень неприятное. Посмотрите, как отвратительно работает ваш вариант и как отлично мой. При этом вашим скриптом я вывожу только одно поле и без перекодировки. А мой скрипт выводит 35 полей и перекодирует текст. Так что искусственное задание временного интервала, это полное днище:
ваш
Изображение
мой
Изображение
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9
Ну наконец-то и у меня получилось на au3. Пока сделал для одного поля. Работает быстро. Теперь надо решить вопрос с запуском/закрытием ET. Если с Ауторан запускать, закрывается сам при выходе из ТС. Но все время висит в памяти. Если запускать из скрипта, не закрывается при выходе из ТС. Если закрывать в скрипте, работает медленнее. Ну это понятно. На каждом файле запускается/закрывается.
[cut]

Код: Выделить всё

#NoTrayIcon

If StringInStr(FileGetAttrib($filename), "D") Then Exit

Local $sExifPath = EnvGet("util_ET") ; Путь к exiftool
Global $sArgFile = @TempDir & "\exiftool_args.txt"
Global $sOutFile = @TempDir & "\exiftool_out.txt"

; Подготовка файла аргументов
FileDelete($sArgFile)
FileWrite($sArgFile, "")

; Запуск процесса ExifTool (один раз)
If Not ProcessExists("exiftool.exe") Then
		; Используем $STDIN_CHILD + $STDOUT_CHILD для взаимодействия
		Global $iPID = Run($sExifPath & ' -stay_open True -@ "' & $sArgFile & '"', "", @SW_HIDE, 0x3)
EndIf

$content = GetTag($filename, "Title")
; MsgBox(64, "Результат", $content)

; Закрываем ExifTool
; Quit()

ConsoleWrite($content)

; --- Функция получения данных ---
Func GetTag($sFile, $sTag)
	If FileExists($sOutFile) Then FileDelete($sOutFile)

	; Формируем команду
	; -s3: только значение, -S: краткий формат, -echo4: выводит маркер в StdOut после завершения
	Local $sCmd = "-s3" & @LF & "-" & $sTag & @LF & "-W+!" & @LF & $sOutFile & @LF & $sFile & @LF & "-execute" & @LF

	; Записываем команду в файл аргументов
	Local $hFile = FileOpen($sArgFile, 1) ; 1 = Write mode (append)
	FileWrite($hFile, $sCmd)
	FileClose($hFile)

	Local $hFile
	Local $sOut = ""

	While 1
		$hFile = FileOpen($sOutFile)
		If $hFile <> -1 Then
			$sOut = FileRead($hFile)
			FileClose($hFile)
			FileDelete($sOutFile)
			ExitLoop
		EndIf
	WEnd

	Return $sOut
EndFunc

; --- Функция закрытия ---
Func Quit()
	Local $hFile = FileOpen($sArgFile, 1)
	FileWrite($hFile, "-stay_open" & @LF & "False" & @LF)
	FileClose($hFile)
	ProcessWaitClose("exiftool.exe")
	FileDelete($sArgFile)
EndFunc
[/cut]
Обратите внимание, надо полностью убрать задержку. Тогда все хорошо работает, а не читаемые данные обрабатываются правильно. Так что ничего не виснет.
Сейчас в первую очередь приделаю все поля и перекодировку. А потом начну до ума доводить.
Вот-бы разобраться с -@ -. Там вообще временные файлы не используются что ли. Не понятно, куда тогда аргументы пишутся.
Ну и в преспективе разобраться-бы с потоками для au3.
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9
Все-же пришлось применить временный интервал и подобрать задержку. Иначе не подхватывались данные из файла, следующим за косячным.
[cut]

Код: Выделить всё

; Проверяем наличие файла для записи данных
While 1
	If FileExists($sOutFile) Then ExitLoop
	; Если появляется ошибка Время ожидания операции истекло"
	; без задержки минимум 20 мс данные следующего файла пропускаются,
	; а при большей задержки медленнее обрабатываются
	Sleep(20)
WEnd

Local $sOutput = ""

; Читаем данные из файла
$hFile = FileOpen($sOutFile)
If $hFile <> -1 Then
	$sOutput = FileRead($hFile)
	FileClose($hFile)
	FileDelete($sOutFile)
EndIf
[/cut]
Но теперь надо понять, можно ли самому обработать ошибку "Время ожидание операции истекло":
Изображение
Дело в том, что файл данных-то создается и в нем есть рабочие поля, которые плагин ExifToolWDX выводит:
Изображение
Но файл создается после вывода сообщения об ошибки. Вот важный момент.
В плагине эта проблема решена не очень. Он дергает каждое поле и кривой файл обрабатывается несколько минут. Выше я писал об этом.
Может у вас есть идеи как перехватить обработку ошибки?
Кстати, это и для Ауторан понадобится. Алгоритм ведь останется этим. А закрытие ET я сделал через цикл ожидания, применив новшества ТС 11.57. Да еще и при выходе из ТС обработал. Так что сейчас ничего лишнего в памяти не висит.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

AkulaBig
Бросайте вы это дело, к чему такая куча костылей? Вы серьезно собрались 30 полей что ли выводить :shock: Ну come on же... Всё, что требует горизонтального проручивания неюзабельно, будь то браузер, текстовый редактор или панель ТС.

Даже если вы оставите неколько полей, которые будут помещаться на экран, всё-равно овчинка выделки не стоит. Что такого уникального может предложить exifool, чтобы так загоняться?
AkulaBig писал(а): Может у вас есть идеи как перехватить обработку ошибки?
Речь идет о плагине, или о скрипте? А то я что-то запутался. Если дергание каждого поля приводит к такому результату (а оно судя по всему приводит, я же не зря закомметировал вывод одиночного поля), то единственным выходом остается получать весь выхлоп от утилиты и разбирать его на отдельные поля.
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9 писал(а):30 полей что ли выводить
Нет, конечно. Вывожу 34 поля :)
Orion9 писал(а):Всё, что требует горизонтального проручивания неюзабельно
Почему? Размеры экранов девайсов на всех гаджетах разные.
Orion9 писал(а):Что такого уникального может предложить exifool, чтобы так загоняться?
Например, сейчас я заменил 4 плагина для показа документов на один. И для других расширений заменю.
Orion9 писал(а):Речь идет о плагине, или о скрипте?
Сравниваю плагин китайца с моим скриптом.
Orion9 писал(а): Если дергание каждого поля приводит к такому результату (а оно судя по всему приводит, я же не зря закомметировал вывод одиночного поля)
Действительно запутались. Плагин ExifToolWDX от китайца как-то обрабатывает ошибку сам и выдает свое сообщение. При этом поля, которые он может прочитать, он показывает. Дергает, это просто выражение. На экране ничего не дергается. Я имею ввиду каждое поле перебирается по очереди. В ET есть временной интервал, за который ET старается прочитать файл. Где-то около 1 сек. И вот если я в скрипте устанавливаю временной интервал 2 с, то через 1 с выдается ошибка от ET. А мой код не обрабатывается. Но в плагине как-то эта ошибка перехватывается. Самое обидное, что файл с данными при этом создается. Посмотрите, ET почему-то выдает ошибку о времени, но после этого создается файл с правильными данными.
А у китайца сообщение не как у меня. Текст свой на английском. И данные выводятся. То-есть он как-то перехватывает ошибку ET^
Изображение
А вот как работает плагин:
Изображение
Эта строка появляется через пару минут. То-есть, насколько я понимаю, плагин обрабатывает каждое поле и только после этого выводит данные. Таким образом задержка ET около двух секунд умноженная на 34 поля, дает около 2 мин.

Добавлено спустя 2 часа 13 минут:

Кажется становится понятным возникновение ошибки. Ошибка плагина со скрина Warning [minor], это ошибка самого ET. Она считается незначительной, поэтому плагин продолжает работать. А вот ошибка с гифки на русском языке непонятно чья.
Последний раз редактировалось AkulaBig Чт май 21, 2026 09:35, всего редактировалось 1 раз.
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9
Еще вопрос. Решил проверить ваш скрипт:
[cut]

Код: Выделить всё

#Requires AutoHotkey v2.0

; 1. Конфигурация путей
exiftoolPath := "c:\PortablePrograms\FileManagers\TotalCommanderPortable\Plugins\wlx\ExifToolView\exiftool.exe"

; 2. Формируем список аргументов (строго по одному на строку)
; Опция -S делает вывод компактным (Тег: Значение)
argsContent :=
(
"-f"
"-s3"
"-Title"
)
; Добавляем путь к файлу в конец списка команд
argsContent := "`n" filename

; 3. Запускаем процесс ExifTool с флагами чтения из stdin (-@ -)
shell := ComObject("Wscript.Shell")
exec := shell.Exec('"' exiftoolPath '" -@ -')

; 4. Отправляем команды в поток stdin программы
exec.StdIn.WriteLine(argsContent)
exec.StdIn.Close() ; Закрываем поток, чтобы ExifTool понял, что передача команд окончена, и начал выполнение

; 5. Считываем результат работы (stdout) из ExifTool в переменную
content := exec.StdOut.ReadAll()

; 6. Показываем результат
; MsgBox(output, "Результат ExifTool")
[/cut]
Выдает ошибку:
Изображение
Можете подсказать, что неправильно?

Добавлено спустя 1 час 33 минуты:

Orion9
Ну вот и все. Решил проблему ошибки. Подумал, а что может выдавать ошибку на русском языке? Скорей всего оська. А значит надо смотреть исходники WinScriptsAdv. И точно, в плагине забит код, что если операция не выполняется 2 сек, процесс плагина закрывается. Стоило установить задержку побольше и все заработало. Теперь надо решить, как поизящней переделать этот код.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

AkulaBig писал(а):Нет, конечно. Вывожу 34 поля
Ну и как, удобно по ним перемещаться?
AkulaBig писал(а):Почему? Размеры экранов девайсов на всех гаджетах разные.
Имеенно об этом и речь. Хотя не только об этом.
AkulaBig писал(а):Например, сейчас я заменил 4 плагина для показа документов на один. И для других расширений заменю.
Зачем? У меня больше 50 wdx установлено, жить они мне не мешают.
AkulaBig писал(а):Самое обидное, что файл с данными при этом создается. Посмотрите, ET почему-то выдает ошибку о времени, но после этого создается файл с правильными данными.
У меня сейчас много других дел, т.ч. в ближайшее время точно посмотреть не смогу, да и большого желания нет, если честно, разбираться, что там делал китаец 10 лет назад.
AkulaBig писал(а):А у китайца сообщение не как у меня.
Прежде, чем делать плагин, автор (китаец) наверняка изучил всю документацию exiftool, а вы, если я правильно понимаю, хотите заменить целых 4 плагина (или даже больше), но изучать документацию при всем при этом не желаете :lol:

Ну никто, кроме вас, заниматься реверс инженегрингом все-равно не будет )

Но есть и хорошая новость. Китайцу 10 лет назад было сложнее. Тогда ИИ не было. Сейчас из болвана можно хоть целые плагины выбивать.
AkulaBig писал(а):Я имею ввиду каждое поле перебирается по очереди.
Я это понял. Не знаю, как там сделано в плагине, но если вернуться к vbs, то: когда нет нужного тега, exiftool не создает файл с выводом, отсюда и таймаут на вашем первом скрине. Когда нужные теги есть и нет таймаута, работает быстро. Именно поэтому я закомментировал строку stream.WriteLine "-" & tagName в скрипте — чтобы был полный выхлоп, который можно затем построчно разобрать.

Возможно, в exiftool все предусмотрено и все решается, но это нужно изучать ее доки, причем досконально.
AkulaBig писал(а): Можете подсказать, что неправильно?
Возможно, в файл .ahk нужно добавить FileEncoding 65001 и в конфиге плагина включить опцию CheckUTF8Result=1, которую делал Progman13
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9 писал(а):Ну и как, удобно по ним перемещаться?
Хм, удивлен. Вообще никаких проблем ползунок туда-сюда гонять.
Orion9 писал(а):У меня больше 50 wdx установлено, жить они мне не мешают.
Жить не мешают, но инфы выдают меньше, чем одна ET.
Orion9 писал(а):в ближайшее время точно посмотреть не смогу
Я про гифку :)
Orion9 писал(а):Но есть и хорошая новость.
Есть. Все получилось :)
Orion9 писал(а):в файл .ahk
А как знак присвоения значения с этим связан? Ладно, разобраться с опцией -@ - следующий этап. Пока я очень доволен полученным результатом. Хорошо, что автор WinScriptsAdv выложил исходники. Изящно решить проблему не удалось. Сильно ковыряться нужно. Поставил тайм-аут вместо 2000 20000 и на этом закончу. Мой тестовый файл отрабатывает. Думаю на этом можно остановиться. Смотрите, как теперь классенько, по сравнению со скрином выше:
Изображение
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

AkulaBig писал(а):Вообще никаких проблем ползунок туда-сюда гонять.
Оно и видно по этим двум скринам :lol:
Скрин 1
Скрин 2
Ладно, это шутка была, как и многое другое ранее ) Но мы сильно отклонились от темы. От Autorun, как я понимаю, вы уже все что нужно взяли — завершение процесса по таймеру (хорошая идея, кстати). WinScriptAdv это все-таки отдельная тема. Или переходите сюда со временем, если захотите.
AkulaBig писал(а):Я про гифку
Лоханулся, признаю.
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9 писал(а):Оно и видно по этим двум скринам
Извините, в следущий раз обязательно выложу 3 листа очень необходимой инфы, без которой эти скрины непонятны :twisted:
Orion9 писал(а):От Autorun, как я понимаю, вы уже все что нужно взяли — завершение процесса по таймеру
Кстати, вот код:

Код: Выделить всё

# QuitExifTool.aucfg
# ================================   Описание   ================================
# Закрывает программу ExifTool, если нет активных пользовальских колонок.
# ================================   Аргументы   ===============================
# Отсутствуют.
# ==========================   Возвращаемое значение   =========================
# Отсутствует.
# =================================   Примеры   ================================
# Включает QuitExifTool.aucfg в файл autorun.cfg.
# Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\QuitExifTool.aucfg
# ==============================================================================

# ===============================   Description   ==============================
# Closes ExifTool program if there are no active user columns.
# ================================   Arguments   ===============================
# No arguments.
# =============================   Returned value   =============================
# No return value.
# =================================   Examples   ===============================
# Includes QuitExifTool.aucfg in autorun.cfg file.
# Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\QuitExifTool.aucfg
# ==============================================================================

Func ThreadWatchQuitExifTool
	# Получить текущий режим просмотра
	# Если он меньше 6, то это не пользовательский режим, завершаем процесс ExifTool
	# Get current view mode
	# ЕIf it is less than 6, then this is not user mode, terminate ExifTool process
	If SendMessage(AUTORUN_TCHANDLE, 1074, 1015) < 6 And SendMessage(AUTORUN_TCHANDLE, 1074, 1016) < 6 Then
		If ProcessExist("exiftool.exe") Then
			ProcessTerminate("~/A /W", "exiftool.exe")
			DllCall("kernel32.dll\DeleteFileW", "Wstr", TEMP & "\ET_DOCS_args.txt")
			DllCall("kernel32.dll\DeleteFileW", "Wstr", TEMP & "\ET_DOCS_out.txt")
		EndIf
	EndIf
EndFunc
Использован новый функционал ТС11.57.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

AkulaBig писал(а):в следущий раз обязательно выложу
Не стоит :) Предыдущие скрины хорошо демонстрируют желание обычного пользователя уместить все на одном экране, что нормально. Это естественный ход вещей, от которого никуда не деться.
AkulaBig писал(а): Использован новый функционал ТС11.57.
Первые плоды услилий Flasher? :) Приятно видеть.

Функция вызывается в отдельном потоке? С каким интервалом?
AkulaBig
Сообщения: 639
Зарегистрирован: Ср дек 03, 2008 11:48

Сообщение AkulaBig »

Orion9 писал(а):Первые плоды услилий Flasher?
Я не в курсе. Это его предложение?
Orion9 писал(а):С каким интервалом?
Да у меня один дополнительный поток на все. Просто добавляю туда новые функции:

Код: Выделить всё

Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\CloseNagScr.aucfg
Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\IcoNumber.aucfg
Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\MediaInfo.aucfg
Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\QuitExifTool.aucfg
Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\Restart.aucfg
Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\SetTransparency.aucfg
Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\SwitchAssoc.aucfg
Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\SwitchColor.aucfg
Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\SwitchDrivesIcon.aucfg
Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\SwitchFilesIcon.aucfg
Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\SwitchIniSect.aucfg
Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\SwitchLang.aucfg
Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\SwitchLangUtils.aucfg
Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\SwitchLangWCXPlg.aucfg
Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\SwitchLangWFXPlg.aucfg
Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\SwitchLangWLXPlg.aucfg
Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\SwitchSound.aucfg
Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\SwitchTitleInfo.aucfg
Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\SwitchTypeHints.aucfg
Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\uCharDet.aucfg

RunThread ThreadWatch

Func ThreadWatch
	Local cpu, mls
	While 1
		ThreadWatchLang
		ThreadWatchQuitExifTool
		ThreadWatchTitleInfo
		ThreadWatchUtilsLang
		ThreadWatchWCXPlgLang
		ThreadWatchWFXPlgLang
		ThreadWatchWLXPlgLang
		# Отключаем пункты подменю "О сборке" меню "Запуск"
		# Disconnect items "About assembly" menu "Start"
		DisableMarkedMenuItems "█"

		cpu = GetCPUUsage()
		If cpu < 60 Then
			mls = 500
		ElseIf cpu < 90 Then
			mls = 700
		Else
			mls = 900
		EndIf
		Sleep(mls)
		# OutputDebugString("Autorun: AUTORUN_TCLANGFILE = " & AUTORUN_TCLANGFILE)
	Wend
EndFunc

# After this line all actions are performed when TC closing
Pragma AutorunFinalizeSection
# RegDelete("HKCU\Environment", "OIT_DATA_PATH")
ShellExec(COMMANDER_PATH & "\Utils\Everything\Everything.exe", "-exit")
ProcessTerminate("~/A /W", "exiftool.exe")
DllCall("kernel32.dll\DeleteFileW", "Wstr", TEMP & "\ET_DOCS_args.txt")
DllCall("kernel32.dll\DeleteFileW", "Wstr", TEMP & "\ET_DOCS_out.txt")
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

AkulaBig писал(а): Я не в курсе. Это его предложение?
Я пристально не следил, хотел потом с этим разобраться, но кажется, это он запрашивал функционал, как и остальные "плюшки" в помощь автоматизции.
AkulaBig писал(а):Да у меня один дополнительный поток на все
Вспомнил теперь. Когда-то держать отдельный поток казалось роскошью, теперь становится необходимостью. Классно, когда в фоне что-то крутится и отслеживает состояние ТС изнутри. Спасибо Autorun )
Ответить