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

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

Почему не скрывается запущенная прога через CreateProcess? [D7, WinXP]


DDS ©   (2003-10-25 16:45:00) 

Функция должна запустить прогу (DOS-прога) и не показывая ее подождать ее завершения, но процедура зависает (WaitForSingleObject не заканчивается) если я ставлю si.wShowWindow := SW_HIDE. Помогите, вето процедура:

procedure ExeWait(CmdLine,CurDir,ErrStr:String);
var si:STARTUPINFO;
pi:PROCESS_INFORMATION;
begin
ZeroMemory(@si,sizeof(si));
si.cb:=SizeOf(si);
si.dwFlags := STARTF_USESTDHANDLES + STARTF_USESHOWWINDOW;
si.wShowWindow := SW_HIDE;
if not CreateProcessA(nil,PChar(cmdline),nil,nil,true,NORMAL_PRIORITY_CLASS,nil,Pchar(CurDir),si,pi)
then ShowMessage(errstr) else WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
end;


DDS   (2003-10-28 22:52:00) [1]

Попробую спасибо...


Rouse_   (2003-10-26 12:35:00) [2]

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure ExeWait(CmdLine,CurDir,ErrStr:String);
var
si:STARTUPINFO;
pi:PROCESS_INFORMATION;
begin
ZeroMemory(@si,sizeof(si));
si.cb:=SizeOf(si);
si.dwFlags := STARTF_USESTDHANDLES + STARTF_USESHOWWINDOW;
si.wShowWindow := SW_HIDE;
if not CreateProcessA(nil,PChar(cmdline),nil,nil,true,
NORMAL_PRIORITY_CLASS,nil,Pchar(CurDir),si,pi)
then
ShowMessage(errstr) else WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ExeWait("C:\Test.exe", "C:\", "Не могу поднять ногУ!!!");
end;

end.


Все работает...

Желаю успехов


DDS   (2003-10-26 11:48:00) [3]

DOS-овскую прогу


Игорь Шевченко   (2003-10-25 21:48:00) [4]

Чего запускаем ?


Наверх

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