MVV
|
Posted: Fri Jun 04, 2010 12:13 Post subject: |
|
|
Тут вопрос возник.
В 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… |
|