Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

CreateProcess или что делаю не так?


BillyJeans ©   (2003-07-01 09:23:00) 

Подскажите, почему не работает следующий код?

procedure TMainForm.StartClick;
var
FileName: String;
si: STARTUPINFO;
pi: PROCESS_INFORMATION;
begin
FileName := "Start.bat"#0;
ZeroMemory(@si, SizeOf(STARTUPINFO));
si.cb := SizeOf(STARTUPINFO);
si.wShowWindow := SW_HIDE;
si.dwFlags := STARTF_USESHOWWINDOW;
CreateProcess(nil, PChar(FileName), nil, nil, False,
IDLE_PRIORITY_CLASS or DETACHED_PROCESS,
( pi.hThread)

Подскажите, почему не работает следующий код?

procedure TMainForm.StartClick;
var
FileName: String;
si: STARTUPINFO;
pi: PROCESS_INFORMATION;
begin
FileName := "Start.bat"#0;
ZeroMemory(@si, SizeOf(STARTUPINFO));
si.cb := SizeOf(STARTUPINFO);
si.wShowWindow := SW_HIDE;
si.dwFlags := STARTF_USESHOWWINDOW;
CreateProcess(nil, PChar(FileName), nil, nil, False,
IDLE_PRIORITY_CLASS or DETACHED_PROCESS,
nil, nil, si, pi);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
end;


Morfein   (2003-07-01 16:22:00) [1]

А причём здесь вообще CreateProcess()?

uses
ShellAPI;

begin
ShellExecute(0, nil, "start.bat", nil, nil, SW_SHOWNORMAL);
end;


BillyJeans   (2003-07-01 13:24:00) [2]

из флагов оставил только DETACHED_PROCESS, вроде даже заработало!
Но под w98 в памяти после выполнения батника остается процесс :(
Под w2000 батник отработав выгружается из памяти нормально.


Lord Warlock   (2003-07-01 10:03:00) [3]

Еще вызывают подозрение флаги, лично я выставляю 0.


BillyJeans   (2003-07-01 09:47:00) [4]

я уже пробовал
FileName := "c:\Start.bat"#0;
и всеравно :(


Lord Warlock   (2003-07-01 09:33:00) [5]

может вот по этому:

FileName := "Start.bat"#0;

тк CreateProcess - API функция, ей надо передавать полный путь к файлу.
А еще посмотри, что возвращает CreateProcess, True или False


Наверх

Титульная страница Поиск, карта сайта Написать письмо