Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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 внимательно изучил?


Наверх

Титульная страница Поиск, карта сайта Написать письмо