View previous topic :: View next topic |
Author |
Message |
[Yustas.NeO]
Joined: 12 Mar 2007 Posts: 265
|
Posted: Thu Jun 03, 2010 12:58 pm Post subject: Вызов Exec и двойные кавычки |
|
|
Как правильно составить вызов Exec, если вызываемая программа требует жестко "двойные кавычки" в параметре своей командной строки, а AkelPad воспринимает первую же из них как завершение параметров Exec? |
|
Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 6250
|
Posted: Thu Jun 03, 2010 3:14 pm Post subject: |
|
|
[Yustas.NeO]
Использовать ` и '. В документации к Exec() же есть примеры. |
|
Back to top |
|
 |
[Yustas.NeO]
Joined: 12 Mar 2007 Posts: 265
|
Posted: Fri Jun 04, 2010 9:43 am Post subject: |
|
|
Да, прошу прощения, недоглядел. |
|
Back to top |
|
 |
Fr0sT
Joined: 24 Jul 2007 Posts: 876
|
Posted: Fri Jun 04, 2010 11:54 am Post subject: |
|
|
А стандартный \" не работает? |
|
Back to top |
|
 |
FeyFre
Joined: 07 Aug 2007 Posts: 2240 Location: Vinnitsa, Ukraine
|
Posted: Fri Jun 04, 2010 1:46 pm Post subject: |
|
|
Fr0sT
Quote: | А стандартный \" не работает? | А не подскажите по какому стандарту? Даже если подскажите - вы уверенны что Интсруктор делает это именно по этому стандарту?
ESC последовательность \" описанная в стандартах C/C++ применима только для тех, кто пишет трансляторы C/C++. Это же касается других всевозможных стандартов. Инструктор вроде бы не заявлял что АкелПад подчиняется какому-то конкретному стандарту. Потому не стоит удивляться что оно не делает то, что не обязано делать(в данному случае не слэш назад ескейпит ограничитель литерала) |
|
Back to top |
|
 |
Fr0sT
Joined: 24 Jul 2007 Posts: 876
|
Posted: Sat Jun 05, 2010 11:03 am Post subject: |
|
|
FeyFre продолжаем цепляться к словам?
Стандарт для языка, на котором создан Акель, и для функций *printf, которые наверняка используются при преобразовании строки для Exec.
Кроме того, эскейп слэшами широко используется и в С-подобных языках, как-то JS, Php и др. |
|
Back to top |
|
 |
FeyFre
Joined: 07 Aug 2007 Posts: 2240 Location: Vinnitsa, Ukraine
|
Posted: Sat Jun 05, 2010 5:16 pm Post subject: |
|
|
Quote: | Стандарт для языка, на котором создан Акель, и для функций *printf, которые наверняка используются при преобразовании строки для Exec. | Не используют :Р Quote: | Кроме того, эскейп слэшами широко используется и в С-подобных языках, как-то JS, Php и др. | И?
Какое отношение имеет упомянутый стандарт к сабжу? Или быть может Вы ещё вспомните о стандарте составления чертежей, которым пользовались при проектировании стула, сидя на котором Инструктор писал АкелПад?
Ескейп последовательности С-стиля нигде не заявлены и не упомянуты. Более того в примерах четко поставлено ударение что для кавычко-содержащих аргументов нужно использовать альтернативные кавычки(что широко используется в тех же самых JS, PHP и др) |
|
Back to top |
|
 |
Fr0sT
Joined: 24 Jul 2007 Posts: 876
|
Posted: Mon Jun 07, 2010 6:41 am Post subject: |
|
|
Quote: | Какое отношение имеет упомянутый стандарт к сабжу? |
Думаю, не ошибусь, если скажу, что большинство активных пользователей сабжа, которые не ленятся править конфиги, так или иначе связаны с кодингом. А для кодера, по-моему, эскейпить слэшем - первое, что приходит в голову. Впрочем, если printf действительно не используется, то в самом деле не стоит напрягаться, чтобы включить поддержку слэшей. Я-то думал, это из коробки получится. |
|
Back to top |
|
 |
FeyFre
Joined: 07 Aug 2007 Posts: 2240 Location: Vinnitsa, Ukraine
|
Posted: Mon Jun 07, 2010 12:08 pm Post subject: |
|
|
Quote: | Думаю, не ошибусь, если скажу, что большинство активных пользователей сабжа, которые не ленятся править конфиги, так или иначе связаны с кодингом. | Согласен Quote: | А для кодера, по-моему, эскейпить слэшем - первое, что приходит в голову. | А вот тут не согласен. Кодеры, которые это в первое что приходит в голову(т.е. C/C++) в блокноте не пишут, а если и пишут, то им точно ескейпинг не требуется, ибо для более менее сложных задач они логично выбирают IDE. Не C/C++ кодеры же с ескейпингом встречаются очень и очень редко(и в PHP, и в JS они просто выбирают альтернативный вид кавычек, ибо нагромождение `\` - очень не читаемая вещь) Quote: | Впрочем, если printf действительно не используется, то в самом деле не стоит напрягаться, чтобы включить поддержку слэшей. Я-то думал, это из коробки получится. | Даже если бы использовалось, разницы никакой бы не было. \" - обрабатывается компилятором, а не libcmt, и в любом случае пришлось бы делать вручную.(Помоему Вы спутали уровни абстракции) |
|
Back to top |
|
 |
Fr0sT
Joined: 24 Jul 2007 Posts: 876
|
Posted: Tue Jun 15, 2010 10:59 am Post subject: |
|
|
Quote: | Кодеры, которые это в первое что приходит в голову(т.е. C/C++) в блокноте не пишут, а если и пишут, то им точно ескейпинг не требуется, ибо для более менее сложных задач они логично выбирают IDE |
Причем тут где они пишут? Я говорил о привычке.
Quote: | и в PHP, и в JS они просто выбирают альтернативный вид кавычек, ибо нагромождение `\` - очень не читаемая вещь |
Это субъективно, по мне уж лучше эскейпленные кавычки, чем мешанина из трёх видов.
Quote: | Даже если бы использовалось, разницы никакой бы не было. \" - обрабатывается компилятором, а не libcmt, и в любом случае пришлось бы делать вручную.(Помоему Вы спутали уровни абстракции) |
Вот здесь вообще ничего не понял, какие уровни абстракции, какой libcmt. |
|
Back to top |
|
 |
Andrey_A_A
Joined: 03 Jun 2010 Posts: 665 Location: Сочи, Хоста
|
Posted: Sun Jan 23, 2011 10:30 pm Post subject: Метод 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.`)
и ещё, если вставить это в меню в тулбар , то после этой команды другие не отображаются, как-то странно |
|
Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 3076 Location: Киев, Русь
|
Posted: Mon Jan 24, 2011 8:25 am Post subject: |
|
|
Я думаю, правильно будет так:
Code: | "Безопасное извлечение" Exec(`%WINDIR%\System32\rundll32.exe shell32.dll, Control_RunDLL hotplug.dll`) | т.е.
1. открывающий символ строки должен совпадать с закрывающим;
2. в конце строки не должно быть точки.
P.S. Думаю, что вопрос относится к ContextMenu-плагину. |
|
Back to top |
|
 |
Infocatcher
Joined: 06 Aug 2007 Posts: 1767
|
Posted: Mon Jan 24, 2011 4:58 pm Post subject: |
|
|
Тогда уж, на случай пробелов в %windir% (хотя их там быть, вроде бы, не должно):
Code: | "Безопасное извлечение" Exec(`"%WINDIR%\System32\rundll32.exe" shell32.dll, Control_RunDLL hotplug.dll`) |
|
|
Back to top |
|
 |
Andrey_A_A
Joined: 03 Jun 2010 Posts: 665 Location: Сочи, Хоста
|
|
Back to top |
|
 |
Andrey_A_A
Joined: 03 Jun 2010 Posts: 665 Location: Сочи, Хоста
|
Posted: Tue Aug 16, 2011 7:35 pm Post subject: |
|
|
Есть ли в методе Exec функция "запуск приложения в свёрнутом виде"
пример, я запускаю команду
"Завершить процесс Wscript.exe" Exec("%ComSpec% /c taskkill /f /im wscript.exe") Icon("%a\AkelPadImage.dll",528)
хотелось бы, чтобы командная консоль не появлялась центре окна, т.е. запуск в свёрнутом виде... |
|
Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|