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
MVV



PostPosted: Fri Jun 04, 2010 12:13    Post subject: Reply with quote

Тут вопрос возник.
В Readme-файле кто-то wrote:
ShellExec <имя файла> [<параметры> [<рабочая папка> [<отображение=1>]]]

Вопрос вот в чем - как плагин узнает, где заканчиваются параметры и начинается рабочая папка? Логично предположить, что параметры, как и рабочую папку, надо брать в кавычки. Но тогда имеем следующий нюанс - получается, нельзя передавать как параметр строку, содержащую кавычки. Или можно?
Например, мне надо передать следующую строку как параметр:
Code:
/t"ку ка ре ку" /c"бла бла бла" /p"хренотень"

И при этом указать рабочую папку "C:\Documents and Settings\All Users". Это реально?

Проблема в том, что открывающая кавычка неразличима с закрывающей, и понять, закрываем ли мы параметр, или указываем открывающую вложенную кавычку, невозможно. Пока я не додумался юзать фигурные скобки для задания вложенности скриптов в Virtual Panel, это было реальной проблемой.
Когда я писал AskParam, я тоже сталкивался с подобной проблемой, когда нужно было установить в предлагаемый текст строку с кавычками, для этого пришлось добавлять специальный символ ^, который заменяется на кавычку (и параметр для его переназначения при необходимости).
Здесь, кстати, возможен еще вариант эскейпинга символов. То есть, для указания кавычки внутри параметра использовать последовательность \". Здесь это возможно, потому что строка параметров задается в конфиге, а не передается от другой программы. При использовании этого приема строка вызова программы с вышеуказанными параметрами и рабочей папкой будет выглядеть следующим образом:
Code:
ShellExec что-то-там.exe "/t\"ку ка ре ку\" /c\"бла бла бла\" /p\"хренотень\"" "C:\Documents and Settings\All Users"

_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
View user's profile Send private message ICQ Number


Powered by phpBB © 2001, 2005 phpBB Group