Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [c] chiudere file Exe con system()

    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 , 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 , 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....
    Qualcuno può darmi una mano ?

  2. #2
    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".

  3. #3
    Hmm...scusa ma non esiste una funzione tipo fclose ?
    un system che serva a chiudere un file gia aperto ?

  4. #4
    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.

  5. #5
    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...

  6. #6
    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).
    codice:
    #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.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.