Вызов Exec и двойные кавычки
- Author
- Message
-
Offline
- Posts: 267
- Joined: Mon Mar 12, 2007 3:45 pm
Вызов Exec и двойные кавычки
Как правильно составить вызов Exec, если вызываемая программа требует жестко "двойные кавычки" в параметре своей командной строки, а AkelPad воспринимает первую же из них как завершение параметров Exec?
-
Offline
- Posts: 2247
- Joined: Tue Aug 07, 2007 2:03 pm
- Location: Vinnitsa, Ukraine
Fr0sT
ESC последовательность \" описанная в стандартах C/C++ применима только для тех, кто пишет трансляторы C/C++. Это же касается других всевозможных стандартов. Инструктор вроде бы не заявлял что АкелПад подчиняется какому-то конкретному стандарту. Потому не стоит удивляться что оно не делает то, что не обязано делать(в данному случае не слэш назад ескейпит ограничитель литерала)
А не подскажите по какому стандарту? Даже если подскажите - вы уверенны что Интсруктор делает это именно по этому стандарту?А стандартный \" не работает?
ESC последовательность \" описанная в стандартах C/C++ применима только для тех, кто пишет трансляторы C/C++. Это же касается других всевозможных стандартов. Инструктор вроде бы не заявлял что АкелПад подчиняется какому-то конкретному стандарту. Потому не стоит удивляться что оно не делает то, что не обязано делать(в данному случае не слэш назад ескейпит ограничитель литерала)
-
Offline
- Posts: 876
- Joined: Tue Jul 24, 2007 8:54 am
-
Offline
- Posts: 2247
- Joined: Tue Aug 07, 2007 2:03 pm
- Location: Vinnitsa, Ukraine
Не используют :РСтандарт для языка, на котором создан Акель, и для функций *printf, которые наверняка используются при преобразовании строки для Exec.
И?Кроме того, эскейп слэшами широко используется и в С-подобных языках, как-то JS, Php и др.
Какое отношение имеет упомянутый стандарт к сабжу? Или быть может Вы ещё вспомните о стандарте составления чертежей, которым пользовались при проектировании стула, сидя на котором Инструктор писал АкелПад?
Ескейп последовательности С-стиля нигде не заявлены и не упомянуты. Более того в примерах четко поставлено ударение что для кавычко-содержащих аргументов нужно использовать альтернативные кавычки(что широко используется в тех же самых JS, PHP и др)
-
Offline
- Posts: 876
- Joined: Tue Jul 24, 2007 8:54 am
Думаю, не ошибусь, если скажу, что большинство активных пользователей сабжа, которые не ленятся править конфиги, так или иначе связаны с кодингом. А для кодера, по-моему, эскейпить слэшем - первое, что приходит в голову. Впрочем, если printf действительно не используется, то в самом деле не стоит напрягаться, чтобы включить поддержку слэшей. Я-то думал, это из коробки получится.Какое отношение имеет упомянутый стандарт к сабжу?
-
Offline
- Posts: 2247
- Joined: Tue Aug 07, 2007 2:03 pm
- Location: Vinnitsa, Ukraine
СогласенДумаю, не ошибусь, если скажу, что большинство активных пользователей сабжа, которые не ленятся править конфиги, так или иначе связаны с кодингом.
А вот тут не согласен. Кодеры, которые это в первое что приходит в голову(т.е. C/C++) в блокноте не пишут, а если и пишут, то им точно ескейпинг не требуется, ибо для более менее сложных задач они логично выбирают IDE. Не C/C++ кодеры же с ескейпингом встречаются очень и очень редко(и в PHP, и в JS они просто выбирают альтернативный вид кавычек, ибо нагромождение `\` - очень не читаемая вещь)А для кодера, по-моему, эскейпить слэшем - первое, что приходит в голову.
Даже если бы использовалось, разницы никакой бы не было. \" - обрабатывается компилятором, а не libcmt, и в любом случае пришлось бы делать вручную.(Помоему Вы спутали уровни абстракции)Впрочем, если printf действительно не используется, то в самом деле не стоит напрягаться, чтобы включить поддержку слэшей. Я-то думал, это из коробки получится.
-
Offline
- Posts: 876
- Joined: Tue Jul 24, 2007 8:54 am
Причем тут где они пишут? Я говорил о привычке.Кодеры, которые это в первое что приходит в голову(т.е. C/C++) в блокноте не пишут, а если и пишут, то им точно ескейпинг не требуется, ибо для более менее сложных задач они логично выбирают IDE
Это субъективно, по мне уж лучше эскейпленные кавычки, чем мешанина из трёх видов.и в PHP, и в JS они просто выбирают альтернативный вид кавычек, ибо нагромождение `\` - очень не читаемая вещь
Вот здесь вообще ничего не понял, какие уровни абстракции, какой libcmt.Даже если бы использовалось, разницы никакой бы не было. \" - обрабатывается компилятором, а не libcmt, и в любом случае пришлось бы делать вручную.(Помоему Вы спутали уровни абстракции)
-
Offline
- Posts: 670
- Joined: Thu Jun 03, 2010 8:47 am
- Location: Сочи, Хоста
- Contact:
Метод Exec(...)
Можно ли подправить метод, чтобы запускались команды подобные этим
Exec('%WINDIR%\System32\services.msc`)
Exec('%WINDIR%\SYSTEM32\control.exe userpasswords`)
Exec('%WINDIR%\system32\Firewall.cpl`)
Exec('%WINDIR%\system32\control.exe /name Microsoft.WindowsDefender`)
Exec('%WINDIR%\System32\perfmon.exe /rel`)
Exec('%WINDIR%\SYSTEM32\control.exe admintools`)
Exec('%WINDIR%\SYSTEM32\rundll32.exe shell32,Control_RunDLL appwiz.cpl,,2`)
или может я не правильно записываю, тогда подскажите синтаксис
ещё один нюанс. некоторые команды срабатывают не правильно
к примеру
"Безопасное извлечение" Exec('%WINDIR%\System32\rundll32.exe shell32.dll,Control_RunDLL hotplug.dll.`)
и ещё, если вставить это в меню в тулбар , то после этой команды другие не отображаются, как-то странно
Exec('%WINDIR%\System32\services.msc`)
Exec('%WINDIR%\SYSTEM32\control.exe userpasswords`)
Exec('%WINDIR%\system32\Firewall.cpl`)
Exec('%WINDIR%\system32\control.exe /name Microsoft.WindowsDefender`)
Exec('%WINDIR%\System32\perfmon.exe /rel`)
Exec('%WINDIR%\SYSTEM32\control.exe admintools`)
Exec('%WINDIR%\SYSTEM32\rundll32.exe shell32,Control_RunDLL appwiz.cpl,,2`)
или может я не правильно записываю, тогда подскажите синтаксис
ещё один нюанс. некоторые команды срабатывают не правильно
к примеру
"Безопасное извлечение" Exec('%WINDIR%\System32\rundll32.exe shell32.dll,Control_RunDLL hotplug.dll.`)
и ещё, если вставить это в меню в тулбар , то после этой команды другие не отображаются, как-то странно
-
Offline
- Posts: 3217
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
Я думаю, правильно будет так:
т.е.
1. открывающий символ строки должен совпадать с закрывающим;
2. в конце строки не должно быть точки.
P.S. Думаю, что вопрос относится к ContextMenu-плагину.
Code: Select all
"Безопасное извлечение" Exec(`%WINDIR%\System32\rundll32.exe shell32.dll, Control_RunDLL hotplug.dll`)
1. открывающий символ строки должен совпадать с закрывающим;
2. в конце строки не должно быть точки.
P.S. Думаю, что вопрос относится к ContextMenu-плагину.
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
Тогда уж, на случай пробелов в %windir% (хотя их там быть, вроде бы, не должно):
Code: Select all
"Безопасное извлечение" Exec(`"%WINDIR%\System32\rundll32.exe" shell32.dll, Control_RunDLL hotplug.dll`)
-
Offline
- Posts: 670
- Joined: Thu Jun 03, 2010 8:47 am
- Location: Сочи, Хоста
- Contact:
Спасибо, разобрался! Выложил системное меню
с почти со всеми разными вариантами Exec(...)
viewtopic.php?p=11127#p11127
с почти со всеми разными вариантами Exec(...)
viewtopic.php?p=11127#p11127
-
Offline
- Posts: 670
- Joined: Thu Jun 03, 2010 8:47 am
- Location: Сочи, Хоста
- Contact:
Есть ли в методе Exec функция "запуск приложения в свёрнутом виде"
пример, я запускаю команду
"Завершить процесс Wscript.exe" Exec("%ComSpec% /c taskkill /f /im wscript.exe") Icon("%a\AkelPadImage.dll",528)
хотелось бы, чтобы командная консоль не появлялась центре окна, т.е. запуск в свёрнутом виде...
пример, я запускаю команду
"Завершить процесс Wscript.exe" Exec("%ComSpec% /c taskkill /f /im wscript.exe") Icon("%a\AkelPadImage.dll",528)
хотелось бы, чтобы командная консоль не появлялась центре окна, т.е. запуск в свёрнутом виде...