AltRun - запуск программ по кнопке с ctrl, shift и не только
Select messages from
# through # FAQ
[/[Print]\]
Goto page 1, 2  Next  :| |:
Total Commander -> Плагины Total Commander

#1: AltRun - запуск программ по кнопке с ctrl, shift и не только Author: lz57005 PostPosted: Thu Jan 27, 2022 17:16
    —
Здравствуйте, собственно сделал утилиту, да так что теперь сложно описать, поэтому опишу процесс создания, что и зачем. Имеем ButtonBar Extended для создания многофункциональных кнопок в TC при кликах с зажатыми модификаторами ctrl, shift. Однако использовать её для запусков сторонних программ, скриптов и прочего не очень удобно, во-первых - приложения с интерфейсов при зажатом модификаторе запускаются не в фокусе, вкладка на панели задач есть, а само окно в фоне, во-вторых - хотелось бы настраивать функционал в самой кнопке, а не в отдельной ini, в-третьих - неплохо бы сохранить возможность drug’n’drop файлов на кнопку.

Вначале пришла идея примитивной утилиты, которую бы можно было использовать в bat файле, она банально передаёт через errorlevel какие модификаторы зажаты, но сразу столкнулся с первой проблемой при зажатом модификаторе окна отличные от консоли запускаются не в фокусе.

Пришлось написать полноценный лаунчер, который отслеживает окно запускаемой программы, т.к. через кнопку можно передать только аргументы запуска, то все настройки передаются именно ими. Ну а раз уж решил запускать программы, то сами нарисовались дополнительные функции и получился весьма странный лаунчер который можно использовать как совместно с TC, так и сам по себе. Из минусов отсутствует непосредственная интеграция с TC и запуск cm_ , em_ - комманд возможно только в связке например с TCFS2.

Итого:

AltRun - это прикладной лаунчер настраиваемый через ключи запуска

Основные функции:
- запуск программ, скриптов, пакетных файлов, открытие файлов в ассоциированных программах (далее цели запуска)
- передача параметров запуска и рабочего каталога запускаемому процессу
- запуск альтернативных целей при удерживании клавиш CTRL, ALT, SHIFT или правой кнопки мыши
- запуск дополнительных программ/скриптов до/после запуска основной цели
- запуск дополнительных программ/скриптов вместо запуска основной цели при её отсутствии или при наличии/отсутствии файла/папки триггера
- запрос прав администратора или подавление этого запроса
- запуск со свёрнутым или развёрнутым окном, скрытие окна
- системная блокировка клавиатуры/мыши на время запуска
- назначение переменных среды запускаемому процессу
- поддержка относительных путей и переменных среды в пути запуска
- запуск различных целей в зависимости от разрядности операционной системы
- автономный режим (возможность указать ключи запуска altrun в файле конфигурации или непосредственно в ресурсах altrun.exe используя любой редактор ресурсов исполняемых файлов)
- сквозная передача параметров запуска запускаемой программе/скрипту в автономном режиме

Вкратце можем получить, например, подобную кнопку:

Команда: altrun.exe
Параметры: --run=cmd.exe --ctrl=cmd.exe --ctrl-admin

Запустит cmd при клике и запустит cmd с запросом прав администратора про Ctrl+Клик

Репозиторий на гитхаб и страница релизов с последней версией и полной справкой

Надеюсь кому-либо пригодится, и заранее извиняюсь если ошибся разделом, т.к. хоть интеграции с TC и нет, но утилита создавалась именно для него изначально.

#2:  Author: Monarch-LFV PostPosted: Fri Jan 28, 2022 07:09
    —
lz57005
Спасибо, давно ждал такую утилиту. При тестировании нашел небольшой баг:
Code:
-r "%%windir%%\notepad.exe" -c "%%windir%%\notepad.exe"  -cp %P%N

Пареметры без кавычек, но при этом пути и файлы с пробелами отрабатывает как надо, но если в файле есть двойной пробел (да, такое тоже бывает), то в параметр передается только один пробел, второй куда-то отбрасывает. Например файл: "D:\test files\1 этаж__коридор между корпусами.txt"
Двойной пробел заменил подчеркиванием.
Насколько нужен файл "altrun_dbg.exe" в релизе? Какова его роль?

#3:  Author: lz57005 PostPosted: Fri Jan 28, 2022 09:03
    —
Monarch-LFV wrote:
lz57005
Пареметры без кавычек, но при этом пути и файлы с пробелами отрабатывает как надо

Это потому что в случае с TC в %P%N он сам добавляет кавычки если в пути есть пробелы.
Monarch-LFV wrote:
lz57005
Насколько нужен файл "altrun_dbg.exe" в релизе? Какова его роль?

Исключительно для отладки сложных кнопок и понимания какие параметры передаются и в каком виде, например вы можете приложить скрин бага с двумя пробелами.

#4:  Author: Monarch-LFV PostPosted: Fri Jan 28, 2022 09:36
    —
lz57005
Ну скрин бага прикладывать бессмысленно, сам прочитал что там, все то же, что и говорил: файл с двумя пробелами в имени лишается одного пробела и в параметрах передается только с одним пробелом. В багрепорте пишется файл с одним пробелом, при дальнейшем нажатии на Enter выводится сообщение, что такого файла не существует и указано имя с одним пробелом - оно и понятно.
Если рядом положить файл с таким же именем, но с одним пробелом, а курсор тем временем оставить на первом (с двумя пробелами) файле, то при нажатии на ctrl запустится файл с одним пробелом... вот такие фокусы))

#5:  Author: lz57005 PostPosted: Fri Jan 28, 2022 10:20
    —
Monarch-LFV
Что-то начудил, с парсингом командной строки, буду разбираться.

#6:  Author: Monarch-LFV PostPosted: Fri Jan 28, 2022 11:16
    —
lz57005
Еще, если возможно, может сделать синтаксис чуть попроще, вроде, конечно, и этот несложный, но было бы лучше, если б параметры можно было записывать без дополнительных ключей типа -p, -cp и т.п.
То есть, на прошлом примере, что-то вроде этого:
Code:
-r "%%windir%%\notepad.exe" -c "%%windir%%\notepad.exe %P%N"

#7:  Author: lz57005 PostPosted: Fri Jan 28, 2022 12:15
    —
Monarch-LFV
Баг, с несколькими пробелами решил, немного потестирую и выложу, спасибо за тест и фидбек.
По поводу упрощения подумаю, если не словлю quotes-hell), потому что уже пришлось ввести одинарные кавычки которые объединяют двойные, например -p '%P%S' для случая когда в списке выделенных файлов часть путей без пробела и без кавычек, а часть с пробелом и кавычками, аналогично если нужно передать программе некоторые собственные ключи с кавычками, и всё выглядит просто только в простейшем примере предложенном вами, а вот как только переходим к более сложным вещам разбор каждого ключа содержащего и программу и её собственные ключи и по разному раскрывающиеся переменные усложняет всю логику разбора, хотя возможно не с того угла смотрю, изначальный вариант показался логичным так как путь, параметры, рабочий каталог это базовые переменные на входе функции ShellExecuteEx, с помощью которой всё и запускается.

#8:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Sun Jan 30, 2022 21:13
    —
Я пользуюсь аналогичной утилитой Pressed (автор Zmy). Заточена под ТС: запуск разных em_ и cm_ команд при зажатых модификаторах Ctrl, Alt, Shift и Win в разных комбинациях.

#9:  Author: Monarch-LFV PostPosted: Mon Jan 31, 2022 02:46
    —
Вахмурка
У упомянутой утилиты pressed основной недостаток - то, что приходится заводить много пользовательских команд в ini. В утилите AltRun настройка происходит в самой кнопке, что очень удобно. Пытался ещё давно написать zmy, но сообщение оставалось непрочитанным больше года. А утилиту AltRun совместными усилиями можно довести до идеала.

#10:  Author: lz57005 PostPosted: Tue Feb 01, 2022 20:25
    —
Monarch-LFV wrote:
А утилиту AltRun совместными усилиями можно довести до идеала.

Ну собственно, баг с пробелами пофиксил, объединять параметры запуска ради экономии на паре символов в кнопке думаю лишнее, а вот как реализовать запуск cm_, em_ нужен пример или описание логики.

#11:  Author: Monarch-LFV PostPosted: Wed Feb 02, 2022 09:26
    —
lz57005
1. По запуску cm_, em_ не подскажу. ТС, к сожалению, не имеет параметров запуска для встроенных и пользовательских команд (наподобе totalcmd.exe /O /S /T). Можно попытаться реализовать как-то через командную строку ТС, там все команды воспринимаются.
2. А вот по поводу:
Quote:
приложения с интерфейсов при зажатом модификаторе запускаются не в фокусе, вкладка на панели задач есть, а само окно в фоне

Можно ли решить проблему? Действительно, не совсем удобно.
3. Еще, есть command line программы, которые в параметрах позволяют задавать произвольные данные вводимые пользователем. Например, у Winrar ключ -v создаёт многотомный архив, с ожиданием ввода размера разбития архива. Может сделать какой-нибудь ключ input для ввода пользовательских данных в параметры? Ну и пользовательское описание, в данном примере что-то типа "Введите размер тома:"

#12:  Author: lz57005 PostPosted: Wed Feb 02, 2022 10:19
    —
Monarch-LFV wrote:
Можно попытаться реализовать как-то через командную строку ТС, там все команды воспринимаются.

Например? Как я понял в том же tcfs2 используется winapi SendMessage, PostMessage для отправки сообщения с кодом команды TC, но моих навыков не достаточно чтобы с наскока разобраться в этом.
Monarch-LFV wrote:
Можно ли решить проблему? Действительно, не совсем удобно.

А у вас с этим проблемы? у меня 1 раз из 10 окно в фоне, что мог то сделал и так процесс altrun ожидает окно запускаемой программы и пытается несколькими командами вывести его в фокус, так же посылаются команды родительскому окну что-бы переместить его в фон.
Monarch-LFV wrote:
Может сделать какой-нибудь ключ input для ввода пользовательских данных в параметры? Ну и пользовательское описание, в данном примере что-то типа "Введите размер тома:"

хм, если осилю окно запроса на голом winapi, попробую, потому что если подключать визуал LCL в Lazarus, то это сразу + 1,8мб к размеру программы ради одного окошка.

#13:  Author: Monarch-LFV PostPosted: Wed Feb 02, 2022 11:38
    —
lz57005 wrote:
А у вас с этим проблемы? у меня 1 раз из 10 окно в фоне

У меня где-то 50/50. Не понимаю от чего зависит, то ли от задержки, то ли еще от чего.
По вопросу InputBox - не обязательно, это просто предложение. Это вполне можно реализовать через батник и запускать его по альтернативному запуску.

#14:  Author: lz57005 PostPosted: Mon Apr 25, 2022 17:33
    —
Monarch-LFV wrote:
У меня где-то 50/50. Не понимаю от чего зависит, то ли от задержки, то ли еще от чего.

Проверьте свежую версию, увеличил количество сообщений окнам и повторил после того как клавиша модификатор "отжата".

#15:  Author: Monarch-LFV PostPosted: Tue Apr 26, 2022 01:46
    —
lz57005
Спасибо, потестил немного, вроде пока отлично работает. Прошлый глюк с запуском в фоне пропал!



Total Commander -> Плагины Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page 1, 2  Next  :| |:
Page 1 of 2

Powered by phpBB © 2001, 2005 phpBB Group