Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    [c++] Ho la necessità di startare 3 file exe in sequenza...

    Posso richiamarli in un file .cpp in qualche modo?

    Se si poi compilerei quest'ultimo che li richiamerebbe tutti...

    Grazie


  2. #2
    Non ho molto esperienza di C++ sinceramente... ma con il C nelle librerie standard (stdio.h) hai la funzione:

    codice:
    system("comando");
    che esegue da terminale ciò che viene passato in "comando"!
    Salute a voi, da Laikius!

    --> Faber est suae quisque fortunae <--

  3. #3
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    quindi...

    Originariamente inviato da Laikius91
    Non ho molto esperienza di C++ sinceramente... ma con il C nelle librerie standard (stdio.h) hai la funzione:

    codice:
    system("comando");
    che esegue da terminale ciò che viene passato in "comando"!

    Se fosse così anche in c++ basterebbe ad es. mettere nel codice .cpp che richiama i tre .exe :


    system("1.exe");
    system("2.exe");
    system("3.exe");

    ???

    Grazie!




  4. #4
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Esatto, ma la system è deprecata per svariati motivi.

    Ho sentito che puoi usare anche la API ShellExecute, ma non usando spesso il C++ non so quale sia la soluzione migliore.

    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

  5. #5
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    Dunque ho provato con ShellExecute e andrebbe bene se...

    Originariamente inviato da ShaleN
    Esatto, ma la system è deprecata per svariati motivi.

    Ho sentito che puoi usare anche la API ShellExecute, ma non usando spesso il C++ non so quale sia la soluzione migliore.

    Non si fermasse.. al 20° exe...

    Mi spiego meglio... sperando che qualcuno mi sappia dare la spiegazione della non esecuzione dei restanti exe in cascata:

    codice:
    #include <windows.h>
    #include <stdlib.h>
    
    using namespace std;
     
    int main() {
    
    ShellExecute(NULL,NULL,"1.exe",NULL,"cartella",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"2.exe",NULL,"cartella",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"3.exe",NULL,"cartella",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"4.exe",NULL,"cartella",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"5.exe",NULL,"cartella",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"6.exe",NULL,"cartella",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"7.exe",NULL,"cartella",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"8.exe",NULL,"cartella",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"9.exe",NULL,"cartella",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"10.exe",NULL,"cartella",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"11.exe",NULL,"cartella",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"12.exe",NULL,"cartella",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"13.exe",NULL,"cartella",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"14.exe",NULL,"cartella",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"15.exe",NULL,"cartella",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"16.exe",NULL,"cartella",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"17.exe",NULL,"cartella",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"18.exe",NULL,"cartella",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"19.exe",NULL,"cartella",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"20.exe",NULL,"cartella",SW_MAXIMIZE); //arriva ad eseguire fino a qui...
    ShellExecute(NULL,NULL,"SCREMA1.exe",NULL,"cartella",SW_MAXIMIZE);//il resto non lo esegue...
    ShellExecute(NULL,NULL,"SCREMA2.exe",NULL,"cartella",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"SCREMA3.exe",NULL,"cartella",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"SCREMA4.exe",NULL,"cartella",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"SCREMA5.exe",NULL,"cartella",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"UNISCITUTTIGLISCREMATI.exe",NULL,"cartella",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"TROVAONOAMBATARILEVATA.exe",NULL,"cartella",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"SOLOPRESENZE0.exe",NULL,"cartella",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"SCREMATURAFINALISSIMA.exe",NULL,"cartella",SW_MAXIMIZE);
    
    }
    Tutto bene fino al 20° exe poi il resto non lo considera...


  6. #6
    debugga

    controlla il return value delle singole funzioni (anche stampandolo ogni volta a video)

    return values

  7. #7
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    Come posso debuggare?

    Originariamente inviato da Celebron
    debugga

    controlla il return value delle singole funzioni (anche stampandolo ogni volta a video)

    return values
    Mi scriveresti il codice con returnvalues così che ti possa postare il debug?

    Grazie



    ps: Gli exe che lo shellexecute non mi starta se cliccati singolarmente funzionano benissimo... quindi sembra proprio che shellexecute non possa eseguire più di un tot di exe... Potrebbe essere? Ci potrebbe essere un parametro che condiziona il tempo di esecuzione di shellexecute?


  8. #8
    non ho ben capito cosa chiedi
    comunque nella pratica ti basta mettere un variabile int che riceve il valore di ogni shellexecute e poi te lo stampi a video (o alternativamente, usando il debuggar, controlli passo passo quel valore)

    nota: If the function succeeds, it returns a value greater than 32

    comunque ti sto parlando da profano, nel senso che non ho mai usato questa funzione

  9. #9
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725
    codice:
    #include <windows.h>
    #include <stdlib.h>
    
    using namespace std;
     
    int main() {
    
    ShellExecute(NULL,NULL,"STARTA1.exe",NULL,"fscommand",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"STARTA2.exe",NULL,"fscommand",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"STARTA3.exe",NULL,"fscommand",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"STARTA4.exe",NULL,"fscommand",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"STARTA5.exe",NULL,"fscommand",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"STARTA6.exe",NULL,"fscommand",SW_MAXIMIZE);
    
    
    }
    Se clicco singolarmente i 6 file .exe tutto ok.. ognuno funziona a meraviglia mentre se eseguo
    il file .exe che li richiama in sequenza con shellExecute STARTA5.exe e STARTA6.exe non vengono minimamente considerati...


  10. #10
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    Se interessasse ad altri

    Originariamente inviato da freetom
    codice:
    #include <windows.h>
    #include <stdlib.h>
    
    using namespace std;
     
    int main() {
    
    ShellExecute(NULL,NULL,"STARTA1.exe",NULL,"fscommand",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"STARTA2.exe",NULL,"fscommand",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"STARTA3.exe",NULL,"fscommand",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"STARTA4.exe",NULL,"fscommand",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"STARTA5.exe",NULL,"fscommand",SW_MAXIMIZE);
    ShellExecute(NULL,NULL,"STARTA6.exe",NULL,"fscommand",SW_MAXIMIZE);
    
    
    }

    Se clicco singolarmente i 6 file .exe tutto ok.. ognuno funziona a meraviglia mentre se eseguo
    il file .exe che li richiama in sequenza con shellExecute STARTA5.exe e STARTA6.exe non vengono minimamente considerati...


    Ho risolto con la funzione Sleep(10000) tra un shellexecute e l'altro

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.