If you have the process handle then there is a value you can set if you call
ExitProcess to shut down the process, this I presume is the same thing but I
do not know as I have never tried it.

> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On
> Behalf Of John Christenhusz
> Sent: Tuesday, 8 June 1999 15:57
> To: Multiple recipients of list delphi
> Subject: [DUG]: Application Return Code - 2
>
>
> Hi folks,
>
> It may look like an easy one, but it isn't.
>
> My original question was:
>
> Can anybody tell me how to get an application to return a (DOS) Return
> Code (number) ?
> E.g. when a sub-application can't find a file, it should pass on the DOS
> Return Code (2) back to the main-program. But also when it fails of any
> sub-application specific issue, it should return its own error code
> (e.g. from number 1000 onwards).
>
> One of the reply was
>  Halt(x)
>
> According to the help on Halt() it should work, but it doesn't. I've
> included the code that I use to run the EXE.
> I suppose it is not 100%.
>
> Thank for any comment.
>
> John Christenhusz.
>
> function ProcessExecute(sCommandLine, sParams: string; vtRunMode:
> tRunMode; vtStartMode : tStartMode): integer;
> {Function:
>  Launch application by path\name using optional parameters.
>  This method encapsulates the call to CreateProcess()
>  Calling program is suspended till:
>  if vtRunMode = tWaitTillFinished : till after task is completed,
>  if vtRunMode = tReturnAfterStart : till after initialization is
> completed,
>  with a max of 10 seconds.
> Entry parameters:
>  sCommandLine : command line,
>  sParams : list of parameters,
>  vtRunMode : tWaitTillFinished or tReturnAfterStart.
>  vtStartMode : minimised or normal
> Returns:
>  0 if successful,
>  DOS error code if unsuccessful }
> var
>  vtStartUpInfo : TStartUpInfo; // help available under StartUpInfo
>  vtProcessInfo : TProcessInformation; // help available under
> PROCESS_INFORMATION
>  pCommandLine : array[0..255] of char;
>  pParams : array[0..255] of char;
> begin
>  if fileExists(sCommandLine) then
>  begin
>  { Clear the vtStartUpInfo structure }
>  fillChar(vtStartUpInfo, SizeOf(TStartupInfo), 0);
>  with vtStartUpInfo do
>  begin
>  cb := SizeOf(TStartupInfo); // Specify size of structure
>  dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
>  wShowWindow := SW_SHOWDEFAULT;
>  case vtStartMode of
>  tNormal : wShowWindow := sw_ShowNormal;
>  tMinimised : wShowWindow := SW_ShowMinNoActive;
>  end;
>  end;
>
>  { Create the process by calling CreateProcess(). Detailed information
>  is provided in the Win32 online help for the TProcessInfo structure
>  under PROCESS_INFORMATION.}
>  strPCopy(pCommandLine, sCommandLine);
>  strPCopy(pParams, sCommandLine + ' ' + sParams);
>
>  application.processMessages;
>  if createProcess(pCommandLine,
>  pParams,
>  nil,
>  nil,
>  false,
>  NORMAL_PRIORITY_CLASS or NORMAL_PRIORITY_CLASS,
>  nil,
>  nil,
>  vtStartUpInfo,
>  vtProcessInfo) then
>  with vtProcessInfo do
>  begin
>  if vtRunMode = tWaitTillFinished then
>  while waitForInputIdle(hProcess, INFINITE) = 0 do
>  application.processMessages
>  else
>  waitForInputIdle(hProcess, 10000); // wait until initialized (max 10
> seconds)
>
>  if waitForInputIdle(hProcess, INFINITE)  -1 then
>  result := 0 // set to zero, meaning successful run
>  else
>  result := getLastError; // get error number from called EXE
>
>  closeHandle(hThread); // free the hThread handle
>  closeHandle(hProcess); // free the hProcess handle
>  end
>  else
>  result := getLastError; // Set result to the error code.
>  end
>  else
>  result := 2; // file not found
> end;{ProcessExecute}
> ------------------------------------------------------------------
> ---------
>     New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
>                   Website: http://www.delphi.org.nz
>

---------------------------------------------------------------------------
    New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
                  Website: http://www.delphi.org.nz

Reply via email to