Форум: "Начинающим";
Текущий архив: 2008.03.16;
Скачать: [xml.tar.bz2];
ВнизCreateProcess - флаги Найти похожие ветки
← →
Ega23 © (2008-02-14 19:17) [0]что-то никак не пойму: где в CreateProcess флаг поставить, аналог SW_HIDE в ShellExecute?
← →
Palladin © (2008-02-14 19:20) [1]startupinfo внимательно изучил?
← →
Ega23 © (2008-02-14 19:25) [2]
> startupinfo внимательно изучил?
>
wShowWindow := SW_HIDE?
← →
Palladin © (2008-02-14 19:27) [3]он еще переспрашивает :)
у тебя справка не работает? :)
← →
Leonid Troyanovsky © (2008-02-14 21:58) [4]
> Palladin © (14.02.08 19:27) [3]
> у тебя справка не работает? :)
Бывает и так - смотришь в книгу и видишь фигу.
Т.е., субъективные проблемы.
А для их разрешения общение незаменимо.
--
Regards, LVT.
← →
Ega23 © (2008-02-14 22:37) [5]
> он еще переспрашивает :)
Потому и переспрашиваю. Или у меня уже крыша едет, или одно из двух. Вроде, должно скрыться. Однако, окошки вижу (в фоновом режиме надо несколько файлов распаковать)
> Бывает и так - смотришь в книгу и видишь фигу.
фточку.
← →
ketmar © (2008-02-14 22:41) [6]>[5] Ega23 © (2008-02-14 22:37:00)
Олег, код давай! %-)
---
Understanding is not required. Only obedience.
← →
homm © (2008-02-14 22:44) [7]> [5] Ega23 © (14.02.08 22:37)
> Вроде, должно скрыться.
Ага, должно. Если создаваемый процесс достает этот флаг и с его учетом создает свои окна.
← →
Ega23 © (2008-02-14 22:48) [8]
> Олег, код давай! %-)
>
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;
← →
Игорь Шевченко © (2008-02-14 23:01) [9]
> Однако, окошки вижу (в фоновом режиме надо несколько файлов
> распаковать)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 23:05) [10]
> Игорь Шевченко © (14.02.08 23:01) [9]
За исходник спасибо.
Однако, всё-таки - что я делаю не так???
← →
Evgeny V © (2008-02-15 07:59) [11]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;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.03.16;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c