You can use ShellExececute WinApi Call,
there is a function called ExecuteFile included with the fmxUtils.pas file.

Below is a function that waits until the program has terminated before
allowing control back to the main program. Also has an example of how to use
CreateProcess - which is another way of Executing a file.


function DOSExec( const ProgName   : String;
                         const Wait       : Boolean;
                         const Visibility : TDOSWindowState;
                         var Msg          : String ) : Boolean;
{ Executes external DOS program with Params. }
{ Visibility is
{ Returns Msg and True/False depending on Success }
{ NOTE - ProgName must include PATH }
var
   CmdLine     : String;
   CmdShow     : Integer;
   StartupInfo : TStartupInfo;
   ProcessInfo : TProcessInformation;
   ResultWait  : Integer;
   ErrorCode   : Integer;
   Rslt        : LONGWORD;
begin
   Result := False;
   Msg := '';
   CmdLine := ProgName;
   Case Visibility of
      dwMinimized : CmdShow := SW_SHOWMINIMIZED;
      dwNormal    : CmdShow := SW_SHOWNORMAL;
      dwMaximized : CmdShow := SW_SHOWMAXIMIZED;
   else
      CmdShow := SW_SHOWNORMAL;
   end;
   FillChar( StartupInfo, sizeof( StartupInfo ), 0 );
   with StartupInfo do begin
      cb := sizeof( StartupInfo );
      dwFlags := STARTF_USESHOWWINDOW;
      wShowWindow := CmdShow;
   end;
   Result := CreateProcess( Nil, PChar( CmdLine ),Nil, Nil, False,
                            NORMAL_PRIORITY_CLASS, Nil, Nil,
                            StartupInfo, ProcessInfo );
   If not Result then begin
      ErrorCode := GetLastError;
      Msg := Format( 'Create Process Error %d', [ ErrorCode ] );
      Exit;
   end;
   Application.ProcessMessages;
   if Wait then begin
      Repeat
         // Wait for External Process but give App Repaint time etc every
100ms
         ResultWait := WaitforSingleObject(ProcessInfo.hProcess,100);
         Application.ProcessMessages;
         GetExitCodeProcess(ProcessInfo.hProcess, Rslt);
      Until not ( Rslt = STILL_ACTIVE );
   end;
   CloseHandle( ProcessInfo.hProcess );
   CloseHandle( ProcessInfo.hThread );
end;

-----Original Message-----
From: Leo Ramakers [mailto:[EMAIL PROTECTED]]
Sent: Friday, 21 July 2000 11:10
To: Multiple recipients of list delphi
Subject: [DUG]: How to execute a windows program from within an
application


{a Slight variation to Brett Lins question}
How can I call a windows program from within an application. I vaguely
recall it used to be something like
begin
 execute('c:\path\myprog.exe param1 param2').
end;


best regards
Leo


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



CAUTION - This message may contain privileged and confidential information intended 
only for the 
use of the addressee(s) named above.  If you are not the intended recipient of this 
message you are 
hereby notified that any use, dissemination, distribution or reproduction of this 
message is prohibited.  
If you have received this message in error please notify Progressive Enterprises Ltd. 
immediately via 
email at [EMAIL PROTECTED]  Any views expressed in this message 
are those of the 
individual sender and may not necessarily reflect the views of Progressive Enterprises 
Ltd.

This footnote also confirms that Progressive Enterprises Ltd. has swept this email 
message for the 
presence of computer viruses.  This does not guarantee this message is virus free.

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

Reply via email to