Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    487

    [C++] Attendere chiusura di un software

    Ciao ragazzi se eseguo questo programma:

    codice:
    #include <windows.h>
    
    int main()
    {
    Sleep(10000);
    return 999;
    }
    utilizzando la shellexecute(), come faccio a sapere quando è terminata l'esecuzione del programma e a sapere il valore ritornato dal software (999)?

    Grazie ciao

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Intendi da un altro programma C o da un batch o da altro ... ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Originariamente inviato da oregon
    Intendi da un altro programma C o da un batch o da altro ... ?
    dovresti utilizzare le fork e wait o waitpid

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non avevo letto "dalla shellexecute" ...

    Comunque, dato che mi pare che parliamo di Windows, ti consiglio di usare le API

    CreateProcess
    WaitForSingleObject
    GetExitCodeProcess

    Troverai documentazione su MSDN
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    487

    ok grazie

    Ciao grazie dopoprovo entrambi i metodi grazie ancora

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    487

    Eccomi qui

    Eccomi.... tra l'altro c'era un pezzo di codice già fatto xD

    codice:
    #include <windows.h>
    #include <stdio.h>
    #include <tchar.h>
    #include <conio.h>
    
    int _tmain( int argc, TCHAR *argv[] )
    {
    STARTUPINFO si;
    PROCESS_INFORMATION pi;
    STARTUPINFO sj;
    PROCESS_INFORMATION pj;
    
    ZeroMemory( &si, sizeof(si) );
    si.cb = sizeof(si);
    ZeroMemory( &pi, sizeof(pi) );
    
    ZeroMemory( &sj, sizeof(sj) );
    sj.cb = sizeof(sj);
    ZeroMemory( &pj, sizeof(pj) );
    
    if(!CreateProcess(TEXT("C:\\a.gdb"), NULL, NULL, NULL, FALSE, 0, NULL, NULL, &sj, &pj))
    {
    printf( "Hello CreateProcess failed (%d)\n", GetLastError() );
    getch();
    return 1;
    }
    
    if(!CreateProcess(TEXT("C:\\a.exe"), NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
    {
    printf( TEXT("CreateProcess2 failed (%d)\n"), GetLastError() );
    getch();
    return 0;
    }
    
    // Wait until child processes exit.
    WaitForSingleObject( pi.hProcess, INFINITE );
    WaitForSingleObject( pj.hProcess, INFINITE );
    
    // Close process and thread handles.
    CloseHandle( pi.hProcess );
    CloseHandle( pi.hThread );
    CloseHandle( pj.hProcess );
    CloseHandle( pj.hThread );
    printf(TEXT("Process 1 && 2 has been closed\n"));
    //printf ("%i",lpExitCode);
    getch();
    }
    Ecco se potrste spiegarmi questa parte perchè non l'ho ben capito

    Codice PHP:
    STARTUPINFO si;
    PROCESS_INFORMATION pi;
    STARTUPINFO sj;
    PROCESS_INFORMATION pj;

    ZeroMemory( &sisizeof(si) );
    si.cb sizeof(si);
    ZeroMemory( &pisizeof(pi) );

    ZeroMemory( &sjsizeof(sj) );
    sj.cb sizeof(sj);
    ZeroMemory( &pjsizeof(pj) ); 

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: Eccomi qui

    Le due strutture servono alla CreateProcess.

    La ZeroMemory azzera tutti gli elementi delle strutture.

    La sizeof serve a impostare l'elemento cb della struttura che ne indica la lunghezza.

    E' molto semplice ... cosa non comprendi?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Sulla questione del sizeof, aggiungo:
    http://forum.html.it/forum/showthrea...readid=1044305
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    487

    Capisco :)

    Grazie... comunque.... già che ci sono non penso che un tread sia tanto + difficile...xDxD

    domani discuterò anche di questo....

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    487

    Ecco

    Ciao ragazzi....eccomi ancora qui
    ho fatto dei tentativi (effiferi) con GetExitCodeProcess().... mi potreste dare una mano
    non ho capito dove va messo sul codice....

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 © 2025 vBulletin Solutions, Inc. All rights reserved.