PDA

Visualizza la versione completa : [c] chiudere file Exe con system()


DerLoweGiampo
05-01-2008, 00:42
Salve a tutti, sono alle prime armi con il C, ma essendo finito il corso al quale partecipavo ne sto continuando lo studio da solo tramite un piccolo manuale e la mia salvezza che Google :D , ora sto lavorando ad un piccolo progetto il mio problema e che non conosco le varie istruzioni di system.

Spiego meglio il mio problema, io devo aprire un file exe e lo ho aperto con un semplice
system( percorso\\file.exe ) ,ok fino a qui ci sono :zizi: , ora il mio problema e che non so come poterlo chiudere ovvero vorrei farlo aprire e poi ad un certo punto chiuderlo, mi hanno detto che si pu fare pure con system, ma non ho ben capito come.... :bh:
Qualcuno pu darmi una mano ? :D :)

j4ck_andros
05-01-2008, 00:57
quello che ti serve il comando che permette di killare(terminare) un programoma eseguibile(processo).
se sei su linux c' il comando kill,su windows prova a cercare su google...prova con "terminare processi windows".

DerLoweGiampo
05-01-2008, 01:30
Hmm...scusa ma non esiste una funzione tipo fclose ?
un system che serva a chiudere un file gia aperto ?

j4ck_andros
05-01-2008, 02:27
fclose fatta per i file...
e poi tu hai detto che vuoi terminare un .exe, e .exe nn un file ma un programma eseguibile e quindi a te server il comando per far terminare i programmi o meglio i processi.
aspetta la risposta di qualcuno altro che magari conosce il comando.

DerLoweGiampo
05-01-2008, 12:16
Si infatti questo il mio dilemma, so chiudere i file ma magari quelli testuali, ma non gli exe che ho aperto... :master:
Cmq grazie lo stesso intanto aspetto qualche risposta...

MItaly
05-01-2008, 17:05
Aprire un file di testo ed eseguire un file exe sono due operazioni che non c'entrano niente. Inoltre lanciando un eseguibile con la system() ti complichi inutilmente la vita per poi "manovrare" il processo creato. Se, come mi sembra di capire, lavori su Windows, devi usare le API di Windows per creare e terminare processi (nello specifico ti servono la CreateProcess e la TerminateProcess).


#include <stdio.h>
#include <windows.h>

int main(void)
{
STARTUPINFO si={0};
PROCESS_INFORMATION pi={0};
puts("Avvio la calcolatrice...");
si.cb=sizeof(si);
if(!CreateProcess(NULL,"calc.exe",NULL,NULL,FALSE,0,NULL,NULL,&si,&pi))
{
puts("Impossibile creare il processo.");
return 1;
}
puts("Ora aspetto 10 secondi...");
Sleep(10000);
puts("OK, ora di chiudere la calcolatrice.");
if(!TerminateProcess(pi.hProcess,0))
{
puts("Impossibile terminare il processo.");
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
return 2;
}
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
puts("Processo terminato.");
return 0;
}

Questo in realt non il modo pi ortodosso di terminare un processo; per le applicazioni dotate di finestra di solito conviene inviare un messaggio WM_QUIT ad una finestra dell'applicazione.

Loading