AskParam - диалог запроса параметров командной строки
Select messages from
# through # FAQ
[/[Print]\]
Goto page 1, 2, 3 ... 18, 19, 20  Next  :| |:
Total Commander -> Плагины Total Commander

#1: AskParam - диалог запроса параметров командной строки Author: MVVLocation: Ростов-Дон PostPosted: Sat Aug 21, 2010 22:10
    —
Утилита писалась сравнительно давно, упоминалась неоднократно на страницах форума, но темы для нее не было.

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

Переменные окружения раскрываются везде: перед отображением предлагаемого текста, в пути к запускаемой программе, в строке параметров, передаваемых этой программе, а также в заголовке окна и подсказке.



Информация о последней версии

Версия: 1.0.6
URL: AskParam на wincmd.ru / AskParam на totalcmd.net

Требования: Windows 2000 и выше

Особенности:

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


Параметры командной строки:

/c"Привет" - устанавливает заданный заголовок окна
/t"Вариант ответа", /u"Выделенный вариант" - добавляют строки в выпадающий список (можно несколько раз указывать), /u также выделяет свой вариант
/p"Введите параметр:" - устанавливает текст приглашения, а также отображает диалог для запроса параметра (при этом предлагаемые значения, заголовок окна и прочие опции должны быть установлены заранее)
/r[-] - включает/выключает очистку выпадающего списка после ввода очередного параметра
/h[-] - включает/выключает режим ввода пароля (звездочки)
/q"^" - задает символ, который будет заменен на двойную кавычку внутри строк параметров /c, /t и /p
/s{0-8} - задает режим запуска процесса (0 - скрытый, 1 - нормальный, 2 - свернутый, 3 - развернутый)
/w - включает опцию ожидания завершения процесса

Параметры /c, /t, /u, /p, /r, /h, /q можно использовать любое число раз для запроса любого числа параметров. После параметров указывается строка для выполнения, в которой можно использовать переменные %1, %2 и т.д. для вставки текста, введенного пользователем в ответ на запрос соответствующего параметра. Максимальное число цифр номера параметра - 3. Если сразу после параметра нужно указать цифру, которую нужно передать запускаемому приложению, номер параметра нужно указывать трехзначным, добавив нулей слева, т.е. %001 вместо %1 (таким образом, если указать %0012, это будет означать вставку текста первого запрошенного параметра и цифры 2). Также можно использовать системные переменные окружения. Для вставки символа % нужно удвоить его.

При запуске с панели инструментов ТК нужно помнить, что для вставки в строку параметров символа % нужно удвоить его. А если этот символ % нужно передать запускаемому приложению, то нужно написать его 4 раза (тотал передаст половину символов %, а потом AskPAram еще в 2 раза сократит их число при анализе строки).


В качестве примеров использования можно привести запрос числа секунд до выключения компьютера, кнопки панели управления виртуальной панелью, кнопку архивирования с запросом пароля и другие. Также простенький демонстрационный пример AskParam показывает, если запускать ее без параметров (нижняя строчка сообщения).


Это описание параметров может быть полезным
Этот краткий перечень вариантов применения может быть интересным


Last edited by MVV on Tue May 17, 2016 12:17; edited 11 times in total

#2:  Author: MVVLocation: Ростов-Дон PostPosted: Sat Aug 21, 2010 22:19
    —
GGS wrote:
Вопрос по переменным окружения.
Для теста использую команду: AskParam /c /t"%TIME%" /p cd.

Если команда выполняется из консоли (cmd /c), то подсказка %TIME% раскрывается в своё значение.
Если из ком.строки ТС или из ТС-кнопки, то просто вижу %TIME% как текст.
Речь только об отображении в окне ввода, в качестве параметра %1 передаётся правильно. Аналогично с %DATE%.
Переменные %COMMANDER_PATH%, %TEMP% и пр. раскрываются в качестве подсказки в своё значение, а эти - нет.

Можно исправить положение?

Проблема в том, что %TIME% и %DATE% - псевдопеременные, о существовании которых знает лишь командный интерпретатор. Как официальные переменные окружения они не существуют. Вот почему другие программы не могут раскрыть их.

Но ты можешь запускать CMD, а из него AskParam. То есть, в данном случае потребуется лишь приписать строку cmd.exe /c перед путем к AskParam.exe: cmd.exe /c AskParam.exe /c /t"%TIME%" /p cd.
Единственный минус такого способа вызова - черное окно в фоне. Однако, если поставить галочку запуска программы в свернутом виде, оно будет запускаться в виде кнопки панели задач. Также можно создать ярлык для CMD.exe, в свойствах которого прописать запуск в свернутом виде и параметр /c - и запускать AskParam просто как параметр этого ярлыка. Тогда мы получим возможность задать значок и название кнопки на панели задачSmile
Кстати, еще минус такого способа - то, что CMD.exe иногда криво обрабатывает параметры, если имя программы для запуска заключено в кавычки (там целая система, благодаря которой CMD.exe работает намного тупее, чем если бы ее вообще не было).

#3:  Author: GGS PostPosted: Sun Aug 22, 2010 01:06
    —
MVV wrote:
CMD.exe работает намного тупее, чем если бы ее вообще не было

Да, намучился я с кавычками. Всё получилось, спасибо. Тестовая кнопка такая:
Code:
TOTALCMD#BAR#DATA
cmd /c start "" "%COMMANDER_PATH%\TOOLs\AskParam.exe"
/c"Заголовок" /t"%%TIME:~0,5%%" /p"Время:" cmd /k echo %%1
%COMMANDER_PATH%\TotalCmd.exe,3
AskParam TEST

1
-1


Last edited by GGS on Sun Aug 22, 2010 01:54; edited 1 time in total

#4:  Author: Serge Yolkin PostPosted: Sun Aug 22, 2010 01:27
    —
Code:
cmd=cmd /v /c
param= (Echo Время: !TIME!)&(Echo Дата:  !DATE!)&(Set /p #= %N )&(If Not Defined # Set #= )&(%P%N !#!)

Исправлено
Дополнено


Last edited by Serge Yolkin on Sun Aug 22, 2010 02:54; edited 2 times in total

#5:  Author: GGS PostPosted: Sun Aug 22, 2010 02:00
    —
Serge Yolkin
Задача была видеть текущее значение (в данном примере время) с возможностью его корректировки и отправки в качестве параметра дальше. Редактировать поле ввода AskParam гораздо удобнее, чем в консоли.

#6:  Author: Serge Yolkin PostPosted: Sun Aug 22, 2010 02:42
    —
GGS
Зато дату/время передает...

#7:  Author: Infocatcher PostPosted: Sun Aug 29, 2010 00:33
    —
А можно наследовать системную тему оформления?
Было бы совсем замечательно. Smile

#8:  Author: MVVLocation: Ростов-Дон PostPosted: Sun Aug 29, 2010 02:15
    —
Наверн можно добавить файл манифеста, чтобы это заработало (попробовать создать по аналогии с другой программой). Я никогда не использую тем кроме классической, поэтому разницы нигде не вижу.

Декодируй, распакуй и положи AskParam.exe.manifest рядом с AskParam.exe:
Code:
MIME-Version: 1.0
Content-Type: application/octet-stream; name="AskParam.exe.manifest.7z"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="AskParam.exe.manifest.7z"

N3q8ryccAANeCYjFYAEAAAAAAABsAAAAAAAAAC8xtCkAHg/LhxHYzmaRD4Meyv17M9R/6bfaKDF2
JWYgTSoJbWr3KXA4QROVCIrQWx2TS+JShoUL9yq/xlgAFfVxB7m0LUKcUW+08Q3hbDV4eBstqWdT
OM/07c5ispOErlyzdE9T6EpPkxGG3WXErXanWcge0LIcd9TKSlb/UitpLVk8knC9m4Poq1+vL5RA
8kjlxvLXYw0xqrVnzWJvgU4hR8PzSUn42BNRaXCp+0sB1fRTOidFiD5t681N8jTDSNYBishdWbLi
FbTfNZy/RKf96FyEvVfG2RWu12huSbhJ3X6yUrhu3NkYFRrgxU0H0HkT5zl9uQ0Q1JLMwFFlGwK1
SFIm35nNOSfKrVxV+/n1Goc23Eu0B8KRkNy+V1Elf+8WOcNtit7er3baSgpkcyMAJHnxHZj0+FWV
PfHqc0MBR+t09AHR6rJ93hM3uhxZ/eBnFsj+9BT15E3uT7Jv7VFk0xkAAQQGAAEJgWAABwsBAAEj
AwEBBV0AAAEADIJOAAgKAaB40NUAAAUBES0AQQBzAGsAUABhAHIAYQBtAC4AZQB4AGUALgBtAGEA
bgBpAGYAZQBzAHQAAAAUCgEAEv3jDABHywEVBgEAIAgAAAAA


#9:  Author: Infocatcher PostPosted: Sun Aug 29, 2010 02:49
    —
Не помогло.
Или с AskParam.exe.manifest что-то не так, или все-таки одного его в данном случае недостаточно.

#10:  Author: GGS PostPosted: Sun Aug 29, 2010 08:48
    —
Infocatcher
У меня сработало, см. на кнопки
MVV, очередное спасибо.

#11:  Author: MVVLocation: Ростов-Дон PostPosted: Sun Aug 29, 2010 11:00
    —
У меня тоже вид элементов окна изменился, как справочного сообщения, так и диалога ввода - пришлось включить службу поддержки тем для проверки.

А теперь спросите небезызвестную корпорацию, почему умная система виндовс не может сама без этого стандартного файлика закруглить кнопочки. Very Happy

#12:  Author: GGS PostPosted: Sun Aug 29, 2010 11:10
    —
MVV
А может ну её, эту корпорацию, и интегрировать manifest в ресурсы. Я попробовал, всё OK.

P.S. Кстати, TotalCmd.exe имеет manifest в ресурсах, но, несмотря на это, и в виде отдельного файла. Зачем такое дублирование?


Last edited by GGS on Sun Aug 29, 2010 13:18; edited 1 time in total

#13:  Author: MVVLocation: Ростов-Дон PostPosted: Sun Aug 29, 2010 12:11
    —
Можно и в ресурсы, эффект одинаков. Но я не понимаю, зачем такую хрень встраивать в ресурсы.

Кстати, да, у тотала манифест и в ресурсах. Значит, файл можно безболезненно убить.

#14:  Author: GGS PostPosted: Sun Aug 29, 2010 12:49
    —
MVV wrote:
Но я не понимаю, зачем такую хрень встраивать в ресурсы.
Отдельным файлом может "потеряться". Размер на 1кБ увеличивается, но всё равно за пределы одного кластера программа вышла.

#15:  Author: CaptainFlintLocation: Москва PostPosted: Sun Aug 29, 2010 13:44
    —
GGS wrote:
P.S. Кстати, TotalCmd.exe имеет manifest в ресурсах, но, несмотря на это, и в виде отдельного файла. Зачем такое дублирование?

Из истории:
Quote:
21.06.06 Добавлено: Файл totalcmd.exe.manifest, поскольку Totalcmd в некоторых случаях не использовал стиль XP (внутренний manifest-ресурс игнорировался).



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


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

Goto page 1, 2, 3 ... 18, 19, 20  Next  :| |:
Page 1 of 20

Powered by phpBB © 2001, 2005 phpBB Group