Autorun

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

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

Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Зато представляется более полезным для продвинутого формирования данных для стандартных подсказок тотала на основе данных других плагинов, т. е. по типу super_wdx.
[cut="Из справки super_wdx"]Авторы ЗАПРЕЩАЮТ использовать любые файлы, входящие в инсталяционный архив, в так называемых "паках" (Total Commander XP, TC Power Pack и тому подобных). Мы не будем распространяться о законности и правильности составления и распространения таких "паков", скажем только, что относимся к этому крайне негативно. [/cut]
Наверное поэтому я никогда его не видел ни в каких "паках" :lol:

Loopback
В справке к FileGetAttr говорится о "N Нормальный T Временный". Но кажется, я никогда прежде не сталкивался с такими определениями. Что имеется в виду под "нормальный"? А то наводит тут на разные мысли :mrgreen:
https://www.youtube.com/watch?v=V5n8p8yApok
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Orion9 писал(а):Наверное поэтому я никогда его не видел ни в каких "паках"
Что-то я не нашел в справке плагина такого. Ну да ладно.
Orion9 писал(а):Что имеется в виду под "нормальный"?
Ничего такого, что могло бы навести на разные мысли :)

Нормальный в данном случае тот, у которого не установлено других атрибутов. Временный - я так понимаю, файл с этим атрибутом система будет стараться хранить в памяти, не записывая на носитель.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Loopback
В порядке информации: есть подобный запрет в справке этого плагина ("Описание и информация" — "Тоже важно:").
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Loopback
Баг с Usercmd.ini в AppData\Roaming\GHISLER\ успешно исправлен, только сейчас проверил - значки все на месте.

Надо было мне сразу, конечно, поглядеть (вроде читал не так давно, но как-то пропустил):
https://www.autohotkey.com/docs/v2/lib/ ... Attrib.htm
Но ваши пояснения всё-равно уместны. Теперь буду знать, что у меня куча нормальных файлов, ура! :lol:
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Avada
Запрет из категории "я плакал", но понятно, что это было очень давно и на тот момент (когда только начали появляться первые сборки) воспринималось несколько иначе.

Loopback
Плагин становится все мощнее и удобнее. Опробовал сейчас новый вызов (без сторонних утилит) небольшой функцией к плагину Similarity. Давно хотел к нему примочку на Autorune :)

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

RegisterCommand 60000 "Similarity"

Func Similarity(lParam)
Local out

   If Not FileExist("%TEMP%\~sim.vbs") Then
      ProcessExecGetOutput out %COMSPEC% '/c ECHO Wscript.Echo Inputbox("Phrase=","Similarity")>%TEMP%\~sim.vbs'
   Endif   
    ProcessExecGetOutput /OEM out "cscript.exe" "/nologo ~sim.vbs" %TEMP%
   
   If  out = "" Then Return
        
   IniWrite "%COMMANDER_PATH%\Plugins\wdx\Similarity\leven.ini" "Search" "Phrase" %out%
   Sleep(25)
   SendCommand cm_LeftSwitchToThisCustomView 13

EndFunc
Вызывается простым указанием номера команды в кнопке, что крайне удобно. Колонки в наборе у меня такие:

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

Headers13=Размер\nAvg.\nsLev\ns1\ns2\nsRO\n=
Contents13=[=tc.size.bkMG2]\n[=similarity.average]\n[=similarity.similarityLev]\n[=similarity.simil1]\n[=similarity.simil2]\n[=similarity.similRO]\n[=similarity.contains
Только один вопрос. А разве в Autorun нет сейчас возможности вызвать команду типа OPENCUSTOMVIEW с параметрами? Было бы хорошо иметь что-то вроде CommandExec OPENCUSTOMVIEW "Схожесть имён"
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Avada
Orion9
О как, у него и справка, оказывается, есть. Отдельно на странице плагина, не в архиве... Столько времени не замечал. Да, действительно есть такой пункт.
Orion9 писал(а):А разве в Autorun нет сейчас возможности вызвать команду типа OPENCUSTOMVIEW с параметрами?
Хороший вопрос... Пошел проверять, и похоже, отправка WM_COPYDATA не работает с этими и другими командами "с параметрами". CommandExec сделан через него. Проверил функцией на Autoit, тоже не работает. Ни при задании строкой, ни числом.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Loopback
Можно, конечно, сделать вызов em_ команды, вроде CommandExec em_fields_similarity, где:

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

[em_fields_similarity]
cmd=OPENCUSTOMVIEW Схожесть имён
menu=Схожесть имён
Но при вызове из Autorun cm_ команды следующие за этой строкой, похоже, не дожидаются ее выполнения, а срабатывают раньше, чем нужно (может быть это как раз связано с WM_COPYDATA). Поэтому оставил пока переключение на 13-й набор и доделал немного код. Вот теперь окончательный вариант с двумя кнопками. Одна меняет набор колонок, вторая - запускает шаблон поиска в текущем каталоге. Прикольный плуг Similarity. Жаль, что часто забываешь о его пользе.

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

RegisterCommand 60000 "Similarity" 0
RegisterCommand 60001 "Similarity" 1

Func Similarity(lParam, nParam)
Local out, phrase, vbs

   IniRead phrase "%COMMANDER_PATH%\Plugins\wdx\Similarity\leven.ini" "Search" "Phrase" "text"
   vbs = '/c ECHO Wscript.Echo Inputbox("Sort objects by name similar to","Similarity","' & phrase & '")>%TEMP%\~sim.vbs'
   
   ProcessExecGetOutput out %COMSPEC% %vbs%
   ProcessExecGetOutput /OEM out "cscript.exe" "/nologo ~sim.vbs" %TEMP%
   
   If  out = "" Then Return
   
   IniWrite "%COMMANDER_PATH%\Plugins\wdx\Similarity\leven.ini" "Search" "Phrase" %out%
   Sleep(25)
   
   If nParam = 1 Then
      CommandExec em_search_similarity
   Endif
   
   SendCommand cm_LeftSwitchToThisCustomView 13
   SendCommand cm_SrcSortByCol4
   SendCommand cm_SrcNegOrder   

EndFunc

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

[em_search_similarity]
cmd=LOADSEARCH ="Схожесть имён"
menu=Схожесть имён (Average > 30)
button=Wcmicons.dll,47

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

Схожесть имён_SearchFor=
Схожесть имён_SearchIn=
Схожесть имён_SearchText=
Схожесть имён_SearchFlags=0|002002000020|||||||||0000|||
Схожесть имён_plugin=similarity.average > 30
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Loopback
Решил сделать небольшую поправку в коде (так будет все-таки правильнее):

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

If RequestCopyDataInfo("A") = "L" Then
   SendCommand cm_LeftSwitchToThisCustomView 13
Else
   SendCommand cm_RightSwitchToThisCustomView 13   
Endif 
Но заметил, что в справке к RequestCopyDataInfo имеется пример:
RequestCopyDataInfo("ST") ; --> текущий путь в целевой панели
Здесь опечатка, наверное. Ведь имеется в виду RequestCopyDataInfo("TP"). А функция 🔥 очень удобная. Еще понравилось, что FileExist корректно переменные %окружения% теперь раскрывает 👍
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Orion9 писал(а): Ведь имеется в виду RequestCopyDataInfo("TP")
Конечно, откуда я вообще этот ST взял? :? Исправил.
Orion9 писал(а):корректно переменные %окружения% теперь раскрывает
По факту это пережиток старой командной архитектуры, но раз уж заявлено, должно работать.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Loopback
GetState тоже огонь 🔥🔥

Хотя у меня не получилось отобразить информацию о глобальных переменных. При этом локальные переменные функция GetState показывает, если вставить ее вызов отдельной строкой в тело требуемой функции.

Но вообще, хотелось бы получать информацию о глобальных переменных через кнопку, например:

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

RegisterCommand 70000 "AutorunStatus"

Func AutorunStatus(lParam)
    MsgBox(GetState("vars"))
EndFunc
Было бы классно.

Остальные идентификаторы повесил пока на функциональную кнопку "Alt+F4 Выход" внизу экрана.

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

ControlSetHint /F /B:7 17 "HintFunc"
 
Func HintFunc()
   If IsPressed (0x10) Then Return GetState("libs")
   If IsPressed (0x11) Then Return GetState("threads") & auCR & GetState("procs")
   Return GetState("paths")
EndFunc
С форматом вывода пока не заморачивался, но уже смотрится здорово. Минимум кода, максимум информации. Спасибо )

Еще бы имя кнопки "Alt+F4 Выход" заменить на "Autorun" и вообще чётенько было бы :lol:
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Orion9 писал(а):GetState тоже огонь
Ну по правде-то пока всё сыровато. Надо как-то вывод причесать, чтобы читабельно было и в едином стиле. И наверно желательно, чтобы вывод можно было более-менее легко парсить.
Orion9 писал(а):Хотя у меня не получилось отобразить информацию о глобальных переменных.
Для этого запланирован флаг (локальные, глобальные, все вместе), но он не доделан. Потому и предупреждение висит :)
Orion9 писал(а):Еще бы имя кнопки "Alt+F4 Выход" заменить на "Autorun" и вообще чётенько было бы
Не, это сделать это не получится. Оно и к лучшему :)
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Orion9 писал(а):имя кнопки "Alt+F4 Выход" заменить на "Autorun"
Строка 1078="Alt+F4 Выход" из lng-файла разве не подойдёт для замены?
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

sa писал(а):Строка 1078="Alt+F4 Выход" из lng-файла разве не подойдёт для замены?
А я и не знал, что так просто! :shock:

Спасибо большое! :D

P.S.

А можно, чтобы еще при нажатии на неё что-то своё запускалось, а не выход из ТС был? ))

Loopback
Очень надеюсь, что со временем доделате - уж больно функция хороша! Особенно смотрится на панели функциональных кнопок вместо Alt+F4 после правки lng-файла ))

P.P.S

Блин, как же красиво смотрится кнопка "Autorun" всместо стандарной "Alt+F4 Выход", прям насмотрется не могу! :mrgreen: Уже руки чешутся сделать какое-нибудь контекстное меню для неё, и очень бы хотелось, чтобы при нажатии на нее кастомная функция срабатывала!
Аватара пользователя
jentoso
Сообщения: 443
Зарегистрирован: Чт дек 20, 2007 01:36

Сообщение jentoso »

Orion9 писал(а): А можно, чтобы еще при нажатии на неё что-то своё запускалось, а не выход из ТС был? ))
Ghisler по данному вопросу давно сказал однозначное нет
TC 11.58 combo, Windows 11 x64
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Orion9 писал(а):чтобы еще при нажатии на неё что-то своё запускалось
ControlSetMouseAction ?
Ответить