Autorun

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

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

Аватара пользователя
jentoso
Сообщения: 443
Зарегистрирован: Чт дек 20, 2007 01:36

Сообщение jentoso »

Orion9
С учётом нового ключа тоже ошибка

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

---------------------------
Autorun plugin error
---------------------------
Error in file: D:\TOTALCMD\plugins\WDX\Autorun\Autorun.aucfg

[58] ProcessExecGetOutput hl %uwdx% "/I NTLinks.wdx ""%f%"" HLNK_Count"
TC 11.58 combo, Windows 11 x64
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

jentoso
Такая ошибка выдается, когда CreateProcess не удалось создать процесс. В данном случае не вижу никаких препятствий, кроме несуществующего пути в переменной %uwdx%, нужно проверять его. Во всяком случае мне для достижения работоспособности пришлось только её исправить.
Orion9 писал(а):Вот тут uwdx выдает "Test file does not exists.", если под курсором не файл/каталог.
Я бы просто предварительно проверил наличие файла средствами Autorun:

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

If FileExists(%f%) Then
  ProcessExecGetOutput hl %uwdx% "/I NTLinks.wdx ""%f%"" HLNK_Count"
Else
 ...
Endif 
Аватара пользователя
jentoso
Сообщения: 443
Зарегистрирован: Чт дек 20, 2007 01:36

Сообщение jentoso »

Orion9
Loopback
С путями к uwdx у меня был "косяк", поправил и заработало.
TC 11.58 combo, Windows 11 x64
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Loopback
Пример из справки:

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

MyFunc(123, 456, 789)
 
Func MyFunc(...)
    For i = 1 To Args()
        MsgBox(Args(i), i)
    Next
EndFunc
Приводит к ошибке

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

---------------------------
Ошибка плагина Autorun
---------------------------
Ошибка в файле: C:\Portable\T 11 03\Ini\Autorun\Autorun.cfg

[115] MyFunc(123, 456, 789)

Слишком много актуальных параметров в вызове "MyFunc".
---------------------------
ОК   
---------------------------
Хотя потом отрабатывает как и должен, т.е. показывает MsgBox три раза.

jentoso
Я просто пример делал на скорую руку. Конечно, там должны быть проверки, как и писал выше автор плагина, плюс:

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

Local uwdx = %COMMANDER_PATH% & "\Plugins\uwdx\uwdx.exe"
   If Not FileExist(uwdx) Then   
      MsgBox("Не найден " & uwdx)
      Return 
   Endif
Аватара пользователя
jentoso
Сообщения: 443
Зарегистрирован: Чт дек 20, 2007 01:36

Сообщение jentoso »

Orion9
А что означают HLNK_Count и HLNK_Paths?
TC 11.58 combo, Windows 11 x64
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Доработал немного пример. Все это сыро еще, конечно, но уже поинтереснее. Теперь инфу об NTFS-потоках еще тянет.

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

Func ShowFileInfo
Local f, p, hl, links, linkout
Local uwdx = %COMMANDER_PATH% & "\Plugins\uwdx\uwdx.exe"
   If Not FileExist(uwdx) Then   
      MsgBox("Не найден " & uwdx)
      Return 
   Endif
   f = StrPart(ItemAtCursor('text'), auTAB, 1)
   p = SendMessage(RequestInfo(ItemAtCursor('panel') + 8), 13, 500, "" , 2)
   p = StrLeft(p, StrPos(p, "\", -1))
   f = p & f   
   ProcessExecGetOutput hl %uwdx% "/I NTLinks.wdx ""%f%"" HLNK_Count"
   if (hl+0) = 0 then 
       MsgBox(hl)
      Return 
   endif   
   ProcessExecGetOutput links %uwdx% "/I /C:1251 NTLinks.wdx ""%f%"" HLNK_Paths 0"
   linkout = "Hard Links: "  & hl & auCRLF
   linkout = linkout & auCRLF
   for i=1 to hl
      linkout = linkout & StrTrim(StrPart(links, ',', i)) & auCRLF
      i = i + 1
   next
   ProcessExecGetOutput stream %uwdx% "/I NTFSFileStreams.wdx ""%f%"" ""Streams Count"""
   if stream > 0 then 
      linkout = linkout & auCRLF & auCRLF & "NTFS Streams: "  & stream & auCRLF
      linkout = linkout & auCRLF
      ProcessExecGetOutput streams %uwdx% "/I /C:1251 NTFSFileStreams.wdx ""%f%"" ""All Streams One Line"""
      for i=1 to stream
         linkout = linkout & StrTrim(StrPart(streams, ';', i)) & auCRLF
         i = i + 1
      next
      ProcessExecGetOutput size %uwdx% "/I /C:1251 NTFSFileStreams.wdx ""%f%"" ""All Streams Size"""
      linkout = linkout & auCRLF & "Streams Size " & size
   endif
   MsgBox(linkout)
EndFunc
jentoso
В плагине NTLinks есть некое описание, но его действительно маловато. Лучше все же почитать теорию где-нибудь, например, в справке к утилите от CaptainFlint
https://flint-inc.ru/rus/info/ntfslinks.html
Именно этой утилитой я и пользуюсь, в основном, для создания NTFS ссылок.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Orion9
Теперь скрипт просто добавляет полезную информацию к заголовку ТС, не трогая оригинального текста.
Попробовал. В целом работает. Заметил, что при перезапуске TC (cm_exit 9), в заголовке почему-то исчезает номер копии.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Orion9 писал(а):Приводит к ошибке
К сожалению, пока просто не пользоваться открытым списком. Проблема исправлена, но версия еще не готова к выкладыванию.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

sa
Да, неприятная проблема.

Если в aucfg-файле сразу вслед за строчкой объявления переменных добавить MsgBox:

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

Global JustTitle = WinGetText(), VarTitle = JustTitle
MsgBox(JustTitle)

То при перезагрузке командой cm_Exit 9 (в новых окнах ТС) можно увидеть, что текст сообщения в MsgBox не соответствует тексту заголовка. Похоже, функция WinGetText() где-то не так срабатывает, т.е. проблема не в скрипте (его можно совсем отключить, закомментировав вызов TitleLaunch в конфиге Autorun) а на более низком уровне.

Кстати, заметил, что при таком вызове MsgBox, она действительно не всегда показывается в 64-х битном Тотале.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Orion9
Добавил Sleep(250) в начало autorun.cfg – помогло.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

sa
Отличное решение!
Еще не успел опробовать, но ради корректной работы можно даже и пол(!)секундой пожертвовать :)
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

sa
Решение действительно рабочее, спасибо за вашу смекалку - избавили от лишней головной боли :D Видимо, Autorun получает текст заголовка раньше, чем Тотал его окончательно выстраивает, поэтому небольшое ожидание здесь как никогда уместно.
Аватара пользователя
yozhik
Сообщения: 353
Зарегистрирован: Вс май 04, 2014 20:34
Откуда: Электросталь

Сообщение yozhik »

Сердечно рады свершившемуся возобновлению хотелки о всплывающих подсказках! И мы когда-то с этой же скромной просьбой здесь стучались :) Но тогда время ещё не пришло. Так быть может сейчас оно поспело? На всякий случай: мой большой плюс к данному начинанию всегда наготове. А я всё так пока и пользуюсь своим au3-скриптом для этих целей. Таким образом, у нас назрели уже две насущные области применения tooltip'ов: 1) для функц-х клавиш подсказок куда-чего повесил; 2) описанный Orion9. Плюс ещё то, что было в мыслях у Loopback, когда tooltip'ы появились в «списке с приоритетом "подумать когда-нибудь"». В общем, если что-то получится, то будет, мне кажется, вполне востребовано.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

yozhik
Спасибо за отсылку к старым постам. Я давно хотел почитать страниц 10 последних, но так и не добрались руки. Отвлекся тут на новый скрипт Autorun + AutoHotKey :D Если все получится как надо, скину в скором времени.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

yozhik
Тултип или что-то похожее скорее всего будет, но вот со способами показа пока не до конца ясно. С помощью кликов или горячих клавиш вроде проблем быть не должно, но с наведением всё несколько сложнее. В функционал ControlSetMouseAction оно не укладывается. Но посмотрим.
Ответить