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

> ВНИМАНИЕ!

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

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Проблема с WinExec.
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






А ведь MSDN явно говорит:
Цитата
WinExec Function
Runs the specified application.

Note This function is provided only for compatibility with 16-bit Windows. Applications should use the CreateProcess function.


Цитата
Мне нужно так.
Это ты потом Майкрософту будешь говорить, что тебе ТАК нужно, когда в 64-битной версии Windows у тебя твой код вылетит с ошибкой (ибо там нет этого камня - обратной совместимости с 16-битными ОС)? Или что?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


mea culpa
*****

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

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


Почему камня?) Вообще, надо наверное на ShellExecute переделать (так же можно?).. Мне просто надо как бы от имени cmd запустить.


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


Гость






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

Цитата
надо наверное на 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)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


mea culpa
*****

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

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


Ну, в ShellExecute тоже можно указывать нужные параметры. Я с ней и сделал, в CreateProcess миллион входных параметров, долго разбираться..

shellexecute(form1.handle,'open','cmd.exe',pchar('/C "'+path+'ret.bat"'),nil,SW_HIDE);


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 24.12.2024 1:35
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name