![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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