![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблемы с CreateProcess [D7, WinXP]
TuronixL © (2003-11-25 18:37:00)
Здравствуйте Мастера. Не подскажите почему не запускается следующие приложение:
procedure TForm1.Button1Click(Sender: TObject);
var
sinfo : STARTUPINFO;
pinfo : PROCESS_INFORMATION;
begin
sinfo.cb := sizeof(sinfo);
sinfo.wShowWindow := SW_SHOWNORMAL;
CreateProcess(nil,"autoweb.exe", nil, nil, false, 0, nil, nil, sinfo, pinfo);
end;
Возникает следующее сообщение: "Ошибка при инициализации приложения (0хс0000142)"
panov (2003-11-25 19:26:00) [1]
Структуру STARTUPINFO, помнится, обнулять надо...
Нижеприведеннй код работает без проблем:
procedure ExecCmd(const aCommand: String;const aShow, aWaitExit: Boolean);
var
pi:PROCESS_INFORMATION;
si:STARTUPINFO;
cmdLine,Path: String;
begin
ZeroMemory(@si,sizeof(si)); Память надо обнулить
si.cb:=SizeOf(si);
si.dwFlags := STARTF_FORCEONFEEDBACK+STARTF_USESHOWWINDOW;
if aShow then si.wShowWindow := SW_SHOWNORMAL else si.wShowWindow := SW_HIDE;
Path := ExtractFilePath(aCommand);
cmdLine := aCommand;
if CreateProcess( nil, // No module name (use command line).
PChar(cmdLine), // Command line.
nil, // Process handle not inheritable.
nil, // Thread handle not inheritable.
False, // Set handle inheritance to FALSE.
0, // No creation flags.
nil, // Use parent"s environment block.
PChar(Path), // Use parent"s starting directory.
si, // Pointer to STARTUPINFO structure.
pi ) // Pointer to PROCESS_INFORMATION structure.
then
begin
if aWaitExit then WaitForSingleObject( pi.hProcess, infinite );
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess)
end;
end;