Newsgroup: it.comp.lang.c++
Titolo: Lanciare applicazioni da un programma in c++

Come si può fare a lanciare una applicazione da un programma in c++?
ho provato con system() ma agisce solo su file nella directory di
windows e non supporta il path.
Sono ancora un novellino...


La funzione per lanciare un'applicazione é "CreateProcess".
Se la trovi troppo complicata nei suoi parametri, allora puoi usare:
    WinExec( LPCSTR lpCmdLine , UINT uCmdShow );
Questa funzione é messa a disposizione per compatibilità con
le precedenti versioni di Windows, ma funziona benissimo, inoltre,
internamente non fa altro che usare ad ogni modo "CreateProcess".
I parametri di WinExec sono:
    lpCmdLine => Filename dell'applicazione più eventuali parametri
                         per la CommandLine (separati da spazi).
   uCmdShow => Modo in cui l'applicazione aprirà la sua window
                          principale, le seguenti costanti si dovrebbero
                          commentare da sole:
                              SW_HIDE
                              SW_RESTORE
                              SW_SHOW
                              SW_SHOWMAXIMIZED
                              SW_SHOWMINIMIZED
                              etc. (vedi help-in-line della funzione).
Saluti, Neil

 
Tieni presente che MS consiglia l'uso di WinExec... il che
potrebbe voler dire che usando la CreateProcess in futuro il
tuo applicativo potrebbe non funzionare piu`.
Paolo

 
Immagino che tu intenda dire esattamente il contrario. WinExec sta ancora 
li' unicamente per compatibilita' con l'API a 16 bit.
Un'alternativa da considerare puo' essere quella di usare ShellExecute o 
ShellExecuteEx, che ti permettono di specificare anche il nome di un 
file di dati (non-eseguibile) da aprire (in questo caso la shell lancia 
automaticamente l'applicazione associata con il file dato).
Ciao,
Antonello
-- 
// --------------------------------------------------------
// Antonello Salvatucci, Software Engineer
// LEGO Media International
// Klovermarken 120, 7190 Billund DENMARK
//
// antonello at digi. lego. com         
http://www.lego.com

 
Forse era proprio questa...
Paolo

Caro Antonello, se leggi più attentamente il mio messggio originale,
vedrai che é proprio quello che ho scritto, e cioé che WinExec é
rimasta per compatibilità con le precedenti versioni di Windows.
La parte che segue non l'ho scritta io:
  >> Tieni presente che MS consiglia l'uso di WinExec... il che
  >> potrebbe voler dire che usando la CreateProcess in futuro il
  >> tuo applicativo potrebbe non funzionare piu`.
Infatti é errata, se guardi il mio messggio originale questa parte non c'é
ma compare solo nel tuo "reply", nessuna idea della sua origine.
Per quanto riguarda ShellExecute/ShellExecuteEx, pienamente d'accordo.
Saluti, Neil

Ciao a tutti,
    dalla documentazione MS:
"The WinExec function runs the specified application.
This function is provided for compatibility with earlier versions of
Windows. For Win32-based applications, use the CreateProcess function."
Alla prossima :)
Marco Abis su IRCnet #C++Warriors
http://www.geocities.com/SiliconValley/Foothills/6336
 interamente dedicato
al C++
ca...@technologist.com
Paolo Marotta ha scritto nel messaggio ...
