|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jan 2001
Città: Livorno
Messaggi: 1358
|
Avviare un .exe da un applicazione scritta in delphi
Come posso avviare un .exe da un applicazione scritta in delphi ?
Grazie |
![]() |
![]() |
![]() |
#2 |
Bannato
Iscritto dal: Oct 2004
Città: Roma
Messaggi: 124
|
con la funzione API CreateProcess; la trovi documentata nella documentazione Windows SDK alla quale puoi accedere direttamente da Delphi (menu Help), oppure da http://msdn.microsoft.com se vuoi qualcosa di aggiornato.
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Adesso non ricordo, mi sembra ci sia qualcosa in particolare nel linguaggio Delphi per avviare un eseguibile. Comunque, puoi usare le API di Windows. Cerca su MSDN le informazione per "ShellExecute", dovrebbe essere cio' che fa al caso tuo.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
![]() |
![]() |
![]() |
#4 |
Bannato
Iscritto dal: Oct 2004
Città: Roma
Messaggi: 124
|
Tieni anche presente che ShellExecute(Ex) è un po' diversa: a ShellExecute(Ex) puoi passare una generica stringa (non necessariamente il nome di un eseguibile) che viene a sua volta passata direttamente alla shell, quindi in questo modo ottieni quello che farebbe la shell se gli venisse passata quella stringa: nel caso del nome di un file o del nome di un link ad esso la shell aprirebbe il file col programma associato, nel caso del nome di un programma la shell lo avvierebbe, nel caso di un link ad una pagina Internet la shell aprirebbe il browser predefinito a quella pagina, e così via.
CreateProcess invece serve specificamente per avviare e controllare processi; se la ritieni troppo complicata e vuoi qualcosa di molto banale, puoi utilizzare invece WinExec, molto semplice, che è implementata come wrapper per CreateProcess. |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jan 2001
Città: Livorno
Messaggi: 1358
|
Grazie mille,
alla fine ho optato per shellexecute. Potreste spiegarmi anche come posso fare in modo che il mio programma delphi continui l'esecuzione solo dopo che il programma dos che ha appena lanciato si è chiuso ? Ciao |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jan 2001
Città: Livorno
Messaggi: 1358
|
up
|
![]() |
![]() |
![]() |
#7 |
Bannato
Iscritto dal: Oct 2004
Città: Roma
Messaggi: 124
|
Per fare quello che dici devi utilizzare CreateProcess; nelle process information che ti vengono restituite, c'è un handle al processo in questione; per interrompere l'esecuzione del tuo thread primario, usa WaitForSingleObject passandogli quell'handle; se poi vuoi evitare l'eventualità del blocco totale, usa WaitForMultipleObjects passandogli, oltre all'handle del processo avviato, anche un altro handle che possa risvegliare il tuo thread in qualche modo, ad esempio l'handle di un waitable timer.
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Jan 2001
Città: Livorno
Messaggi: 1358
|
Grazie, sono riuscito a risolvere il probl. Ciao
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:45.