Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Autorun 
Author Message
Orion9



PostPosted: Fri May 08, 2026 13:01    Post subject: Reply with quote

AkulaBig
Вчера небольшую фигню написал.

Ошибка с доступом была не с FileWrite, а с FileAppend: именно эта функция предназначена для записи в конец файла, но через нее не удалось решить. Вероятно, есть какая-то проблема с правами, через BinaryFile получается же. В общем, это остается Loopback на заметку. Хотя если он вернётся, первым партийным заданием для него будет научить нейросеть работать с Autorun Very Happy Тогда код можно будет тянуть, как с конвеера ) Возможно, этот код не будет полностью рабочим, но в качестве заготовок сойдет.

Сейчас для Autohotkey эта схема работает идеально. Достаточно просто спростить, и будет ответ:

 Hidden text

А вот если бы он сразу выдавал готовый код, насколько это облегчило бы жизнь

 Hidden text

Я хотел было доделать этот пример до конца, но потом понял, что для работы с файлом ExifTool строку для записи надо еще в UTF-8 переводить. А объект BinaryFile сам это делает. В общем, решил в итоге перевести его в статик, чтобы он не создавался при каждом вызове, это должно немного поднять скорость. Сейчас весь фрагмент, очищенный от комментариев, выглядит так
Code:
If FileExist(gExifOut) Then
   DllCall("kernel32.dll\DeleteFileW", "Wstr", gExifOut)
EndIf
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 50
    If FileExist(gExifOut) Then
       ansi = FileRead(gExifOut, 0, "UTF-8")
       DllCall("kernel32.dll\DeleteFileW", "Wstr", gExifOut)
       Break
    EndIf
    Sleep(20)
Next
Return ansi

Работает значительно лучше и стабильнее, но все-равно могут прошмыгивать пустые позиции, хоть и мало.

AkulaBig wrote:
Зато теперь все понятно. Проблема Ауторан в том, что он почему-то выводит данные не для каждого файла, а для всех сразу.

Причем это характерно только для 64-битной версии, в 32-битной такого нет. Об этом я в свое время писал Loopback, но он тогда не ответил. Кроме того, в обеих версиях при прокрутке панели ползунком повляются белые прямоугольные артефакты и начинается какая-та "дичь". В общем, есть проблемы. Очень всё сыро выглядит.
AkulaBig wrote:
Break отлично работает. Нет файла, создает его. Есть файл, очищает его.

Хех. Не подвёл болван!
AkulaBig wrote:
Осталось только проверить работу с au3. Вдруг там что-то -stay_open изменит.

Изменит однозначно. Но я бы vbs не скидывал со счетов. И сильно по поводу отключения VBScript на некоторых машинах не парился. На таких компах и сборкам делать нечего.
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group