![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Какой Exec лучше? [Delphi, Windows]
Vadim S © (2003-09-30 17:35:00)
var
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
exitc: cardinal;
begin
1) способ
ShellExecute(Application.Handle,"open",Pchar(FileName),nil,
Pchar(ExtractFileDir(FileName)),SW_SHOWNORMAL);
2) способ
WinExec(Pchar(FileName),sw_SHOW);
3) способ
FillChar(StartupInfo, sizeof(StartupInfo), 0);
with StartupInfo do begin
cb := Sizeof(StartupInfo);
dwFlags := STARTF_USESHOWWINDOW;
wShowWindow := SW_SHOW;
end;
CreateProcess(nil, PChar(RTEXT), nil, nil, false,
CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil,
StartupInfo, ProcessInfo);
Какой способ лучше и чем они отличаются???
clickmaker (2003-10-01 12:00:00) [1]
> Германн © (01.10.03 05:10) [2]
Только в исходниках Винды, а не Дельфи :) А откуда они у тебя, кстати ? :)
Германн (2003-10-01 05:10:00) [2]
Собс-но ответ на сей сабж можно легко прочитать в исходниках Дельфи. В которых видно, что всеэти варианты в конце концов приводятся к вызову CreateProcess. Только вот первые два способа ограничены в возможностях.
pasha (2003-10-01 03:18:00) [3]
WinExec уходит своими корными ещё во время Delphi 1, и сейчас поддерживаэтся с соображений совместимости Delphi 1
ShellExecute это "нормальная" WIN32 ф-ция с расширеным набором параметров(можно указать открыть, редактировать, распечатать обект Windows). Если не нужно указывать какихто спец. параметров, или получить инфу от запускаемого процеса, то ф-ция ShellExecute наилучший вариант.
От ф-ции CreateProcess можно получить вот что:
записать весь консольный вывод процеса в буффер, запустить процесс и дождаться его завершения и так дальше.
Если понадобиться ети достоинства от CreateProcess то мыль на DeveloperUA@ukr.net договоримся. Удачи