Hi, Have you tried running another app (eg. notepad) with the code? (obvious but worth asking) What OS are you using? Maybe there's an issue there. Maybe the game has smarts that stops people doing what you're trying to do ;) ?!? I think the curr dir suggestion that Corey mentioned is worth pursuing too. Signing off on this one.
Chris > -----Original Message----- > From: vss [mailto:vss@;vss.co.nz] > Sent: Monday, 11 November 2002 4:39 p.m. > To: Multiple recipients of list delphi > Subject: RE: RE: [DUG]: Execute and wait > > > might have been a mailserver somewhere doing it. > Anyway, your code does the same thing....hmmm...weired. > > Jeremy > > -----Original Message----- > From: "Chris Milham" <[EMAIL PROTECTED]> > To: Multiple recipients of list delphi <[EMAIL PROTECTED]> > Date: Mon, 11 Nov 2002 15:59:07 +1300 > Subject: RE: RE: [DUG]: Execute and wait > > > 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 > > >=20 > > >=20 > > > Hi Chris. I tried your code, but it failed here > > >=20 > > > cb :=3D3D SizeOf(TStartupInfo); > > >=20 > > > Jeremy > > >=20 > > > -----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 > > >=20 > > > > Try this one. I have just wrapped a version of=20 > > > "WinExecAndWait32". This > > > > =3D > > > > one DEFINITELY waits correctly. > > > > HTH > > > >=20 > > > > Chris > > > >=20 > > > > 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 :=3D3D SizeOf(TStartupInfo); > > > > dwFlags :=3D3D STARTF_USESHOWWINDOW or > > STARTF_FORCEONFEEDBACK; > > > > { you could pass sw_show or sw_hide as parameter: } > > > > wShowWindow :=3D3D visibility; > > > > end; > > > > if CreateProcess(nil, path, nil, nil, False, > > > > NORMAL_PRIORITY_CLASS, nil, nil, > > > > StartupInfo, ProcessInfo) then > > > > begin > > > > WaitResult :=3D3D > WaitForSingleObject(ProcessInfo.hProcess, = > > =3D > > > > timeout); > > > > { timeout is in miliseconds or INFINITE if > > > > you want to wait forever } > > > > result :=3D3D WaitResult; > > > > end > > > > else > > > > { error occurs during CreateProcess see help for details } > > > > result :=3D3D GetLastError; > > > > end; > > > > begin > > > > SetCurrentDir(ExtractFilePath(Application.ExeName)); {Set=20 > > > this so =3D > > > > relative paths will work} > > > > if not FileExists(sPath) then begin > > > > DlgError('Unable to run "' + sPath + '"'+NL+'The=20 > > > program cannot be > > > > =3D > > > > 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; > > > >=20 > > > >=20 > > > >=20 > > > > > -----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 > > > > >=3D20 > > > > >=3D20 > > > > > Hi All. > > > > > I have a bit of code that does an execute and waits > for the app. > > > > to=3D20 > > > > > close. > > > > > What I want to do is execute a game and know when its=3D20 > > > > > finished, BUT when=3D20 > > > > > I use my code, it starts to execute the app, but then it=20 > > > stops and=3D20 > > > > > returns an error code of zero which means its > finished...BUT it > > > > never=3D20 > > > > > started. > > > > > This is teh code I use. anyone got anything better? > > > > >=3D20 > > > > > Jeremy > > > > >=3D20 > > > > >=3D20 > > > > > function TfrmMain.WinExecAndWait32(Path: PChar;=20 > > > Visibility: Word):=3D20 > > > > > integer; > > > > > var Msg: TMsg; > > > > > lpExitCode: cardinal; > > > > > StartupInfo: TStartupInfo; > > > > > ProcessInfo: TProcessInformation; > > > > > begin > > > > > FillChar(StartupInfo, SizeOf(TStartupInfo), 0); > > > > > with StartupInfo do > > > > > begin > > > > > cb :=3D3D SizeOf(TStartupInfo); > > > > > dwFlags :=3D3D STARTF_USESHOWWINDOW or > > STARTF_FORCEONFEEDBACK; > > > > > wShowWindow :=3D3D visibility; {you could pass sw_show=20 > > > or sw_hide > > > > as =3D > > > >=20 > > > > > parameter} > > > > > end; > > > > >=3D20 > > > > > if CreateProcess(nil, path, nil, nil, False, > > > > NORMAL_PRIORITY_CLASS,=3D20 > > > > > nil, nil, StartupInfo, > > > > > ProcessInfo) then > > > > > begin > > > > > repeat > > > > > while PeekMessage(Msg, 0, 0, 0, pm_Remove) do > > > > > begin > > > > > if Msg.Message =3D3D wm_Quit then Halt(Msg.WParam); > > > > > TranslateMessage(Msg); > > > > > DispatchMessage(Msg); > > > > > end; > > > > > GetExitCodeProcess(ProcessInfo.hProcess,lpExitCode); > > > > > until lpExitCode <> Still_Active; > > > > >=3D20 > > > > > with ProcessInfo do {not sure this is necessary > but seen=3D20 > > > > > in in some=3D20 > > > > > code elsewhere} > > > > > begin > > > > > CloseHandle(hThread); > > > > > CloseHandle(hProcess); > > > > > end; > > > > > Result :=3D3D 0; {success} > > > > > end else Result :=3D3D GetLastError; > > > > > end; > > > > >=3D20 > > > > > -------------------------------------------------------------- > > > > > ------------- > > > > > New Zealand Delphi Users group - Delphi List -=3D20 > > > > > [EMAIL PROTECTED] > > > > > Website: http://www.delphi.org.nz > > > > > To UnSub, send email to: [EMAIL PROTECTED]=3D20 > > > > > with body of "unsubscribe delphi" > > > > > Web Archive at:=20 > > > http://www.mail-archive.com/delphi%40delphi.org.nz/ > > > > >=3D20 > > > >=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 -=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/