Использование команды ЗапуститьПриложение
Здравствуйте! У меня установлена 64 разрядна Windows, onescript 32. При использовании команды ЗапуститьПриложение("C:\Program Files\Internet Explorer\IEXPLORE.EXE") выходит ошибка: Внешнее исключение (System.ComponentModel.Win32Exception): Не удается найти указанный файл} При этом платформа (32 разрядная) 1С может запустить это приложение. Может подскажете как быть?
Может подскажете как быть?
Пока не знаю, надо думать. @dmpas @nixel2007 есть идеи?
@kain559 Файл по пути "C:\Program Files\Internet Explorer\IEXPLORE.EXE" точно существует?
Проблема из-за пробела в пути.
На данный момент метод ExtractExecutableName возвращает в качестве имени кусок пути до первого пробела, то есть C:\Program.
Как обход, можно запускать так
ЗапуститьПриложение("""C:\Program Files\Internet Explorer\IEXPLORE.EXE"" ya.ru");
или так
ЗапуститьПриложение("IEXPLORE.EXE ya.ru");
Действительно, платформа 1С умеет корректно отличать пробел межу запускаемым файлом и аргументами от пробела в пути файла.
То есть такой запуск проходит корректно:
ЗапуститьПриложение("C:\Program Files\Internet Explorer\IEXPLORE.EXE ya.ru");
Но не понятно, как это повторить в оскрипте.
Платформа 1С (если нет кавычек) последовательно ищет слева направо в переданной в ЗапуститьПриложение() строке пробел и слэш и проверяет существование файла. В данном примере:
C:\Program
C:\Program.exe
C:\Program Files\Internet
C:\Program Files\Internet.exe
C:\Program Files\Internet Explorer\iexplore.exe
Как только файл найден, он вызывается, а остаток строки передается как параметр.
Если файл не найден, то всё равно выполняется попытка запуска со всей строкой.
В ExtractExecutableName() такое тоже можно сделать.
Хитро. Только вместо поиска exe надо взять список допустимых разрешений, которые считаются исполняемыми файлами в командной оболочке. В винде, кажется, этот список лежит в переменной среды
Расширения запускаемых - в PATHEXT. 1C это игнорирует, и получается нестандартное поведение:
ЗапуститьПриложение("c:\Windows\System32\slmgr");
открывает папку в проводнике вместо того, чтобы запустить c:\Windows\System32\slmgr.vbs
КомандаСистемы("c:\Windows\System32\slmgr"); вызывает скрипт
В Oscript отсутствует КомандаСистемы() ?!
В Oscript отсутствует КомандаСистемы()
Да, и возможно, даже есть на это issue. А может и нет...