Newsgroup: it.comp.lang.delphi
Titolo: Lanciare applicatico esterno, help

 end.
grazie

 cosa non và ?
WinExec è obsoleta.  CreateProcess troppo di basso livello.
ShellExecuteEx è un valido compromesso:
http://delphi.about.com/library/weekly/aa082499.htm

Ti conviene usare ShellExecute:
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
//             (bWait non funziona sotto Windows NT/2000)
// ----------------------------------------------------------------------
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;
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);   // Dimenzione
         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
                         nil,         // 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
  // (ATT: Non funziona sotto Windows NT/2000)
  // ------------------------------------------------
  If bWait Then WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
  Result := True;
End;
--
Ciao,
David (
www.utilityweb.net
)