Newsgroup: it.comp.lang.delphi
Titolo: Avviare un EXE

Ciao a tutti, dovrei realizzare un piccolo software ceh all pressione di un 
tasto mi esegua un file eseguibile posto in una certo percorso ( es: 
"c:\programmi\prova\test.exe") qualcuno di voi mi saprebbe indicare un 
comando adatto a fare ciň?
TNX
 
Lorenzo Mendini Iz2FOS - K2FOS - II2S
http://www.iz2fos.it
 (Home Page)
 
Questo messaggio e-mail puň contenere informazioni riservate ESCLUSIVAMENTE 
AL DESTINATARIO. Il RICEVENTE, se diverso dal DESTINATARIO, č avvertito che 
qualunque utilizzazione, divulgazione o copia di questa comunicazione 
comporta violazione delle disposizioni di Legge sulla tutela dei dati 
personali, ed č pertanto rigorosamente vietata.
Grazie per la collaborazione. 
 

 comando adatto a fare ciò?
 
Sarò sintetico. :)
http://lmgtfy.com/?q=eseguire+programma+delphi
 
 
-- 
Marco Breveglieri
   (
http://www.marco.breveglieri.name
)

Facile facile...
Type
   TPriority = (tpBassa, tpNormale, tpAlta, tpRealTime);
// ----------------------------------------------------------------------
// Esegue un programma esterno (anche non .EXE [Esempio .HLP, .BMP, ...])
//
// Programma : Eseguibile
// Params    : Parametri aggiuntivi
// Priorita  : Priorita' di esecuzione
// bWait     : Se deve attendere la fine del programma
//
// Nota : se si esegue un programma non eseguibile e si vuole attendere
//        la fine delle eventuali modifiche sullo stesso, chiamare la
//        funzione passandogli l'eseguibile di default
//        (vedi funzione FindExecutable sull'help di Windows)
// ----------------------------------------------------------------------
Function WExec32(Const Programma : String;
                  Const Params    : String;
                        Priorita  : TPriority;
                        bWait     : Boolean) : Boolean;
Var
   lpCmdLine   : Array[0..500] Of Char;
   Priority    : DWord;
   StartupInfo : TStartupInfo;
   ProcessInfo : TProcessInformation;
   Risultato   : Cardinal;
Begin
   Result := False;
   // ----------------------------------
   // Linea di comando
   // ----------------------------------
   StrPCopy(lpCmdLine, Programma + ' ' + Params);
   // ----------------------------------
   // Settaggio priorita' di esecuzione
   // ----------------------------------
   Case Priorita of
        tpBassa    : Priority := IDLE_PRIORITY_CLASS;
        tpNormale  : Priority := NORMAL_PRIORITY_CLASS;
        tpAlta     : Priority := HIGH_PRIORITY_CLASS;
        tpRealTime : Priority := REALTIME_PRIORITY_CLASS;
        Else
          Priority := NORMAL_PRIORITY_CLASS;
   End;
   // ----------------------------------
   // Azzeramento dati di ritorno
   // ----------------------------------
   FillChar(ProcessInfo, SizeOf(ProcessInfo), 0);
   // -----------------------------------
   // Preparazione dati di Start-Up
   // -----------------------------------
   FillChar(StartupInfo, SizeOf(StartupInfo), #0);
   With StartupInfo Do
        Begin
          cb          := SizeOf(StartupInfo);   // Dimensione
          dwFlags     := STARTF_USESHOWWINDOW;  // Ignora parametri avanzati
          wShowWindow := SW_SHOWNORMAL;         // Visualizzazione normale
        End;
   // -----------------------------------------------------------
   // Se e' un'applicazione console -> crea una nuova console
   // -----------------------------------------------------------
   Priority := Priority Or CREATE_NEW_CONSOLE;
   // ------------------------------
   // Lancia l'applicazione
   // ------------------------------
   Try
     If Not CreateProcess(nil,                   // Nessun modulo
                          lpCmdLine,             // Linea di comando + ' 
' + parametri
                          nil,                   // No Security Attributes
                          nil,                   // No Thread Security 
Attributes
                          FALSE,                 // Nuovo Handle
                          Priority,              // Parametri di Start-Up
                          getEnvironmentStrings, // Usa le Enviroment 
del chiamante
                          nil,                   // Nessuna directory di 
default
                          StartupInfo,           // punta alla struttura 
StartupInfo
                          ProcessInfo)           // punta alla struttura 
ProcessInfo
     Then
       Begin
         Result := (ShellExecute(Application.handle, 'open', lpCmdLine, 
Nil, Nil, SW_SHOW) > 32);
         Exit;
       End;
   Except
     Exit;
   End;
   // ------------------------------------------------
   // Se con attesa -> attende la fine del processo
   // ------------------------------------------------
   If (bWait) Then
      Begin
        WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
        GetExitCodeProcess(ProcessInfo.hProcess, Risultato);
      End;
   Result := True;
End;