![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
CreateProcess - флаги
Ega23 © (2008-02-14 19:17:00)что-то никак не пойму: где в CreateProcess флаг поставить, аналог SW_HIDE в ShellExecute?
Evgeny V (2008-02-15 07:59:00) [1]Ega23 © (14.02.08 22:48) [8]
Забыл флаг установить dwFlags в StartupInfo
> dwFlags
>
> This is a bit field that determines whether certain STARTUPINFO
> members are used when the process creates a window. Any
> combination of the following values can be specified:
>
> Value Meaning
> STARTF_USESHOWWINDOW If this value is not specified, the
> wShowWindow member is ignored.
StartupInfo.cb := sizeof(STARTUPINFO);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := SW_HIDE;
Ega23 (2008-02-14 23:05:00) [2]
> Игорь Шевченко © (14.02.08 23:01) [9]
За исходник спасибо.
Однако, всё-таки - что я делаю не так???
Игорь Шевченко (2008-02-14 23:01:00) [3]
> Однако, окошки вижу (в фоновом режиме надо несколько файлов
> распаковать)
function RunAndWait (const ExeName, ParamString: string;
QuoteParams: Boolean = true): Integer;
var
ShellInfo: TShellExecuteInfo;
ExitCode: DWORD;
begin
ShellInfo.cbSize := SizeOf(ShellInfo);
ShellInfo.fMask := SEE_MASK_NOCLOSEPROCESS;
ShellInfo.Wnd := HWND_DESKTOP;
ShellInfo.lpVerb := 'open';
ShellInfo.lpFile := PChar(ExeName);
if QuoteParams then
ShellInfo.lpParameters := PChar('"'+ParamString+'"')
else
ShellInfo.lpParameters := PChar(ParamString);
ShellInfo.lpDirectory := PChar(ExtractFilePath(ExeName));
ShellInfo.nShow := SW_HIDE;
if not ShellExecuteEx(@ShellInfo) then
RaiseLastOSError;
if ShellInfo.hProcess <> 0 then
try
WaitForSingleObjectEx(ShellInfo.hProcess, INFINITE, false);
GetExitCodeProcess(ShellInfo.hProcess, ExitCode);
Result := ExitCode;
finally
CloseHandle(ShellInfo.hProcess);
end
else
Result := -1;
end;
......
ExCode := RunAndWait ('unzip', FileName, false);
if ExCode <> 0 then
begin
writeln('*** unzip '+FileName);
writeln(Format('*** failed with code %d', [ExCode]));
end
Как раз недавно себе делал программку, распаковывающую все найденные архивы.
Ega23 (2008-02-14 22:48:00) [4]
> Олег, код давай! %-)
>
var
cmd : string;
ProcessInfo: TProcessInformation;
StartupInfo: TStartupInfo;
begin
cmd := 'unzip.exe -q -o .......';
FillChar(StartupInfo, SizeOf(StartupInfo), 0);
StartupInfo.wShowWindow := SW_HIDE;
StartupInfo.cb := SizeOf(StartupInfo);
try
if not CreateProcess(nil, PChar(cmd), nil, nil, False, 0,
nil, nil, StartupInfo, ProcessInfo) then Exit;
WaitForSingleObject(ProcessInfo.hProcess, 2000);
finally
CloseHandle(ProcessInfo.hProcess);
CloseHandle(ProcessInfo.hThread);
end;
homm (2008-02-14 22:44:00) [5]> [5] Ega23 © (14.02.08 22:37)
> Вроде, должно скрыться.
Ага, должно. Если создаваемый процесс достает этот флаг и с его учетом создает свои окна.
ketmar (2008-02-14 22:41:00) [6]>[5] Ega23 © (2008-02-14 22:37:00)
Олег, код давай! %-)
---
Understanding is not required. Only obedience.
Ega23 (2008-02-14 22:37:00) [7]
> он еще переспрашивает :)
Потому и переспрашиваю. Или у меня уже крыша едет, или одно из двух. Вроде, должно скрыться. Однако, окошки вижу (в фоновом режиме надо несколько файлов распаковать)
> Бывает и так - смотришь в книгу и видишь фигу.
фточку.
Leonid Troyanovsky (2008-02-14 21:58:00) [8]
> Palladin © (14.02.08 19:27) [3]
> у тебя справка не работает? :)
Бывает и так - смотришь в книгу и видишь фигу.
Т.е., субъективные проблемы.
А для их разрешения общение незаменимо.
--
Regards, LVT.
Palladin (2008-02-14 19:27:00) [9]он еще переспрашивает :)
у тебя справка не работает? :)
Ega23 (2008-02-14 19:25:00) [10]
> startupinfo внимательно изучил?
>
wShowWindow := SW_HIDE?
Palladin (2008-02-14 19:20:00) [11]startupinfo внимательно изучил?