Orion9

|
Posted: Sat Oct 03, 2026 11:39 Post subject: |
|
|
AkulaBig
Вариант с файлами нормальный, но он не гарантирует полную надежность, к сожалению.
Дело не только в файле exiftool_out.txt, который не успевает удаляться, но чаще сама exiftool не успевает закрыть файл, поэтому FileRead возвращает пусто.
В справке Autorun есть пример создания временного файла, можно им воспользоваться, чтобы решить проблему с удалением.
| Code: | Func GetTempFileName()
Local tmpfile
Do
tmpfile = TEMP & "\temp" & Hex(Random(1, 0xFFFFFF, 1), 6) & ".tmp"
Until Not FileExist(tmpfile)
Return tmpfile
EndFunc
|
И поставить первую задержку перед FileRead, а не после, чтобы уменьшить шанс пустого выхлопа. Полный фрагмент будет выглядеть так
| Code: | sExifOut = GetTempFileName()
Local sArgs = "-G0" & auCRLF & _
"-lang" & auCRLF & _
"ru" & auCRLF & _
"-W+!" & auCRLF & gExifOut & auCRLF & FileName & auCRLF & "-execute" & auCRLF
Static obj = BinaryFile(gExifArgs, "a")
obj.WriteStr(sArgs, "", "UTF-8")
ansi = "<time-out>"
For i = 1 To 10
Sleep(50)
If FileExist(gExifOut) Then
ansi = FileRead(gExifOut, 0, "UTF-8")
DllCall("kernel32.dll\DeleteFileW", "Wstr", gExifOut)
Break
EndIf
Next
Return ansi |
Это существенно увеличивает надежность, но вряд ли гарантирует ее полностью.
Чем больше задержки, тем выше надежность, но скорость при этом, конечно, теряется, хотя незначительно, на подказке это не сильно отразится.
У вас файлы для тестов есть? Можете на дропбокс скинуть? Я чуть позже отпишусь. |
|