IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> Проблема с WinExec.
Unconnected
сообщение 12.03.2010 17:31
Сообщение #1


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Привет всем.

Весь день бьюсь с WinExec. Допустим, код winexec('cmd /C ret.bat',SW_HIDE); батник открывает. А вот winexec(pchar('cmd /C '+path+'ret.bat'),SW_HIDE); нифига не открывает! Хотя, по логике вещей просто обязан. В path ТОЧНО лежит правильный путь. Может, с типами проблема, подскажите..

Да-да, я знаю, что WinExec устарел, и что можно обойтись без cmd /C вовсе. Мне нужно так.

Добавлено через 4 мин.
Чёрт возьми. Ужасно извиняюсь. Как обычно бывает, после создания темы на решение проблемы, над которой думал полдня, уходит минута. Для пути нужны были кавычки (что логично, в нём есть пробелы).

winexec(pchar('cmd /C "'+path+'ret.bat"'),SW_HIDE);

Можно удалить в принципе..


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 12.03.2010 18:07
Сообщение #2


Гость






Цитата
Почему камня?
Потому что тянет назад и не дает двигаться вперед.

Цитата
надо наверное на ShellExecute переделать (так же можно?)
"Можно и зайца научить курить" (С) "Служебный роман".

В смысле, функция ShellExecute() может, конечно, запускать на выполнение какую-то программу, но предназначена она не для этого, а для того, чтобы для заданного типа файлов выполнить определенное действие. Вот если у тебя задача - открыть HTML-файл браузером по умолчанию, то это как раз задача, которая решается через ShellExecute, а не ползанием по реестру и вычислением, какой там браузер установлен дефолтным, а потом - запуском его с твоим файлом.

А если тебе надо запустить батник - то твой случай описан прямо в справке по CreateProcess:

Цитата
lpApplicationName [in, optional]

The name of the module to be executed. This module can be a Windows-based application. It can be some other type of module (for example, MS-DOS or OS/2) if the appropriate subsystem is available on the local computer.

<...>

To run a batch file, you must start the command interpreter; set lpApplicationName to cmd.exe and set lpCommandLine to the following arguments: /c plus the name of the batch file.

(CreateProcess Function)
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 25.07.2025 18:09
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"