PDA

Visualizza versione completa : [ C ] Avviare un programma .exe


monelli
23-02-2005, 18.51.26
Devo creare un programma in c per DOS che con un menu permetta di aprire altri programmi *.exe posti in altre cartelle. Come posso fare?????

Grazie in anticipo

SkAkKo
23-02-2005, 21.04.33
usi la funzione system()
puoi fare in questo modo


#include <stdio.h>

char *pn[]={"path 1",
"path 2",
"path 3"};

void main()
{
int prg;
printf("\n1) path 1");
printf("\n2) path 2");
printf("\n3) path 3");
printf("\nScelta: ");
scanf("%d",&prg);
system(pn[--prg]);
}

dove path il percorso del file exe.. il path deve essere assoluto..poi devi mettere \\ ad esempio


char *pn[]={"C:\\mIRC\\mirc.exe",
"C:\\path 2",
"C:\\path 3"};

monelli
28-02-2005, 19.00.16
Si ma io non ho la certezza di essere in c:\

petrebbe essere un qualunque percorso

SkAkKo
28-02-2005, 19.15.16
scusa se hai detto che vuoi un menu con i programmi che vuoi far partire gi conosci il path del programma...non capisco allora :p

Semi.genius
28-02-2005, 20.59.35
potresti usare come stringa universale se non sai la locazione la variabile di sistema HOMEDRIVE (almeno in windows XP)

LoryOne
01-03-2005, 11.57.20
In pratica l'unica cosa che sapresti per certo sarebbe il nome del file eseguibile ma non dove si trova sull' hard disk ?
Se cos dovresti cominciare a scansionare l'hard disk dalla root alla ricerca del file eseguibile passando per ogni ramificazione delle varie directories e subdirectories.
Credo che tu debba creare la procedura ad hoc perch se non sbaglio non c' nessuna procedura in C gi pronta da richiamare atta allo scopo in nessuno degli header di riferimento :(

monelli
02-03-2005, 19.14.19
In pratica il mio problema questo:

pippo.exe (Per DOS) (da qua chiamo gli altri exe)
\cartella1\test1.exe
\cartella2\test2.exe

Il problema che il tutto potrebbe trovarsi o in C: o in
C:\cartella o in
D: ecc.

Cartella1 e Cartella2 io le conosco.

LoryOne
03-03-2005, 11.36.37
le conosci ma se scrivi:
\cartella1 questo implica che cartella1 si trovi nella root.
se scrivi:
.\cartella1 questo implica che cartella1 una sottodirectory della cartella che la contiene.
se scrivi:
..\cartella1 questo implica che cartella1 non fa parte della directory attuale ma una directory residente nella directory precedente.

A te non serve conoscere la cartella che contiene il tuo programma.
A te serve cercare dove risiede il programma che vuoi lanciare, altrimenti l'unica cosa che dovresti fare avvertire l'utente che ci che il programma che intendi lanciare da pippo.exe NON E' LA DOVE TU IMPONI CHE SIA. :)

monelli
03-03-2005, 17.00.34
Perfetto ora ho capito... missione compiuta. grazie