Hmm.. I don't know where those "3D"s came from :/
Just remove them all and you should be fine. Make sure you are using the windows unit.

Chris

> -----Original Message-----
> From: vss [mailto:vss@;vss.co.nz]
> Sent: Monday, 11 November 2002 3:44 p.m.
> To: Multiple recipients of list delphi
> Subject: RE: [DUG]: Execute and wait
> 
> 
> Hi Chris. I tried your code, but it failed here
> 
> cb :=3D SizeOf(TStartupInfo);
> 
> Jeremy
> 
> -----Original Message-----
> From: "Chris Milham" <[EMAIL PROTECTED]>
> To: Multiple recipients of list delphi <[EMAIL PROTECTED]>
> Date: Mon, 11 Nov 2002 15:13:44 +1300
> Subject: RE: [DUG]:  Execute and wait
> 
> > Try this one. I have just wrapped a version of 
> "WinExecAndWait32". This
> > =
> > one DEFINITELY waits correctly.
> > HTH
> > 
> > Chris
> > 
> > procedure ExecuteProgram(sPath: string; bWait: Boolean);
> >   function WinExecAndWait32(Path: PChar; Visibility: Word;
> >     Timeout: DWORD): integer;
> >   var
> >     WaitResult: integer;
> >     StartupInfo: TStartupInfo;
> >     ProcessInfo: TProcessInformation;
> >   begin
> >     FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
> >     with StartupInfo do
> >     begin
> >       cb :=3D SizeOf(TStartupInfo);
> >       dwFlags :=3D STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
> >     { you could pass sw_show or sw_hide as parameter: }
> >       wShowWindow :=3D visibility;
> >     end;
> >     if CreateProcess(nil, path, nil, nil, False,
> >       NORMAL_PRIORITY_CLASS, nil, nil,
> >       StartupInfo, ProcessInfo) then
> >     begin
> >       WaitResult :=3D WaitForSingleObject(ProcessInfo.hProcess, =
> > timeout);
> >       { timeout is in miliseconds or INFINITE if
> >       you want to wait forever }
> >       result :=3D WaitResult;
> >     end
> >     else
> >     { error occurs during CreateProcess see help for details }
> >       result :=3D GetLastError;
> >   end;
> > begin
> >   SetCurrentDir(ExtractFilePath(Application.ExeName)); {Set 
> this so =
> > relative paths will work}
> >   if not FileExists(sPath) then begin
> >     DlgError('Unable to run "' + sPath + '"'+NL+'The 
> program cannot be
> > =
> > found.');
> >   end else begin
> >     if bWait then begin
> >       WinExecAndWait32(PChar(sPath), SW_SHOW, INFINITE);
> >     end else begin
> >       WinExecAndWait32(PChar(sPath), SW_SHOW, 0);
> >     end;
> >   end;
> > end;
> > 
> > 
> > 
> > > -----Original Message-----
> > > From: vss [mailto:vss@;vss.co.nz]
> > > Sent: Monday, 11 November 2002 3:08 p.m.
> > > To: Multiple recipients of list delphi
> > > Subject: [DUG]: Execute and wait
> > >=20
> > >=20
> > > Hi All.
> > > I have a bit of code that does an execute and waits for the app.
> > to=20
> > > close.
> > > What I want to do is execute a game and know when its=20
> > > finished, BUT when=20
> > > I use my code, it starts to execute the app, but then it 
> stops and=20
> > > returns an error code of zero which means its finished...BUT it
> > never=20
> > > started.
> > > This is teh code I use. anyone got anything better?
> > >=20
> > > Jeremy
> > >=20
> > >=20
> > > function TfrmMain.WinExecAndWait32(Path: PChar; 
> Visibility: Word):=20
> > > integer;
> > > var Msg: TMsg;
> > >     lpExitCode: cardinal;
> > >     StartupInfo: TStartupInfo;
> > >     ProcessInfo: TProcessInformation;
> > > begin
> > >   FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
> > >   with StartupInfo do
> > >   begin
> > >     cb :=3D SizeOf(TStartupInfo);
> > >     dwFlags :=3D STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
> > >     wShowWindow :=3D visibility; {you could pass sw_show 
> or sw_hide
> > as =
> > 
> > > parameter}
> > >   end;
> > >=20
> > >   if CreateProcess(nil, path, nil, nil, False,
> > NORMAL_PRIORITY_CLASS,=20
> > > nil, nil, StartupInfo,
> > >                    ProcessInfo) then
> > >   begin
> > >     repeat
> > >       while PeekMessage(Msg, 0, 0, 0, pm_Remove) do
> > >       begin
> > >         if Msg.Message =3D wm_Quit then Halt(Msg.WParam);
> > >         TranslateMessage(Msg);
> > >         DispatchMessage(Msg);
> > >       end;
> > >       GetExitCodeProcess(ProcessInfo.hProcess,lpExitCode);
> > >     until lpExitCode <> Still_Active;
> > >=20
> > >     with ProcessInfo do {not sure this is necessary but seen=20
> > > in in some=20
> > > code elsewhere}
> > >     begin
> > >       CloseHandle(hThread);
> > >       CloseHandle(hProcess);
> > >     end;
> > >     Result :=3D 0; {success}
> > >   end else Result :=3D GetLastError;
> > > end;
> > >=20
> > > --------------------------------------------------------------
> > > -------------
> > >     New Zealand Delphi Users group - Delphi List -=20
> > > [EMAIL PROTECTED]
> > >                   Website: http://www.delphi.org.nz
> > > To UnSub, send email to: [EMAIL PROTECTED]=20
> > > with body of "unsubscribe delphi"
> > > Web Archive at: 
> http://www.mail-archive.com/delphi%40delphi.org.nz/
> > >=20
> > 
> --------------------------------------------------------------
> ---------
> > ----
> >     New Zealand Delphi Users group - Delphi List - 
> [EMAIL PROTECTED]
> >                   Website: http://www.delphi.org.nz
> > To UnSub, send email to: [EMAIL PROTECTED] 
> > with body of "unsubscribe delphi"
> > Web Archive at: http://www.mail-archive.com/delphi%40delphi.org.nz/
> 
> --------------------------------------------------------------
> -------------
>     New Zealand Delphi Users group - Delphi List - 
> [EMAIL PROTECTED]
>                   Website: http://www.delphi.org.nz
> To UnSub, send email to: [EMAIL PROTECTED] 
> with body of "unsubscribe delphi"
> Web Archive at: http://www.mail-archive.com/delphi%40delphi.org.nz/
> 
---------------------------------------------------------------------------
    New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
                  Website: http://www.delphi.org.nz
To UnSub, send email to: [EMAIL PROTECTED]
with body of "unsubscribe delphi"
Web Archive at: http://www.mail-archive.com/delphi%40delphi.org.nz/

Reply via email to