IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

interrompre un shellExecute


Sujet :

MFC

  1. #1
    Membre confirmé
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2009
    Messages : 164
    Par défaut interrompre un shellExecute
    bonjour,

    dans mon projet, j'utilise un shellExecute Pour transferer un fichier.
    J'aimerai que si on appui sur un bouton du menu, le prossessus se met en pause et un message demandant la confirmation d'annulation du transfert.

    si la personne confirme, le transfert s'arrete
    sinon le transfert reprend.

    est ce que c'est possible? si oui est-ce que vous pouvez m'expliquer?

    j'ai vu sur le net un "ExitProcess".. mais je sais pas comment retrouver le processus qui est en train d'effectuer le transfert..

  2. #2
    Membre confirmé
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2009
    Messages : 164
    Par défaut
    J'ai aussi trouvé TerminatedProcess(_in HANDLE hProcess, _in UINT uExitCode ).. mais pareil j'arrive pas a trouver comment l'utiliser

  3. #3
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055

  4. #4
    Membre confirmé
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2009
    Messages : 164
    Par défaut
    >.< pourquoi j'arrive pas a trouvé moi.. >.<

    vais regarder. merci.

  5. #5
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    Citation Envoyé par leame Voir le message
    >.< pourquoi j'arrive pas a trouvé moi.. >.<

    vais regarder. merci.
    j'ai l'avantage d'avoir écrit ce post, mais savoir chercher c'est un métier

  6. #6
    Membre confirmé
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2009
    Messages : 164
    Par défaut
    Citation Envoyé par farscape Voir le message
    j'ai l'avantage d'avoir écrit ce post, mais savoir chercher c'est un métier
    oui j'avais remarqué l'auteur lol.

    he! je progresse dans mon sens de la recherche. Mes mots clé sont pas toujours les bons c'est tout

    en tout cas merci je te tiens au courant demain.

  7. #7
    Membre confirmé
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2009
    Messages : 164
    Par défaut
    ca a marché du premier coup!! merci beaucoup!

    heu juste, pour le mettre en pause? t'aurai pas également fait un petit tuto

    parce que en fait je voudrai que.. lorsque l'utilisateur appuie sur le bouton "stop", il y ait un message de confirmation "voulez vous interrompre le traitement en cours" et seulement s'il repond "oui" j'arrete le processus.. mais sinon il doit continuer... du coup j'aimerai qu'il se mette en "pause" le temps que l'utilisateur réponde au message

    j'ai vu sur un site ca parlait de SuspendThread et ResumeThread... vais essayé mais je comprends rien aux explications de msdn :s

    pourrai-tu m'aider encore une fois?

  8. #8
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    Un thread est contenu dans un processus, à partir du processus il faut trouver le thread principal et essayé d'appliquer suspendthread et resumethread .
    j'ai trouvé dans la doc MSDN ce code qui énumère les threads d'un processus.
    http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    #include <windows.h>
    #include <tlhelp32.h>
    #include <stdio.h>
     
    //  Forward declarations:
    BOOL ListProcessThreads( DWORD dwOwnerPID );
    void printError( TCHAR* msg );
     
    void main( )
    {
      ListProcessThreads(GetCurrentProcessId() );
    }
     
    BOOL ListProcessThreads( DWORD dwOwnerPID ) 
    { 
      HANDLE hThreadSnap = INVALID_HANDLE_VALUE; 
      THREADENTRY32 te32; 
     
      // Take a snapshot of all running threads  
      hThreadSnap = CreateToolhelp32Snapshot( TH32CS_SNAPTHREAD, 0 ); 
      if( hThreadSnap == INVALID_HANDLE_VALUE ) 
        return( FALSE ); 
     
      // Fill in the size of the structure before using it. 
      te32.dwSize = sizeof(THREADENTRY32 ); 
     
      // Retrieve information about the first thread,
      // and exit if unsuccessful
      if( !Thread32First( hThreadSnap, &te32 ) ) 
      {
        printError( "Thread32First" ); // Show cause of failure
        CloseHandle( hThreadSnap );    // Must clean up the
                                       //   snapshot object!
        return( FALSE );
      }
     
      // Now walk the thread list of the system,
      // and display information about each thread
      // associated with the specified process
      do 
      { 
        if( te32.th32OwnerProcessID == dwOwnerPID )
        {
          printf( "\n\n     THREAD ID      = 0x%08X",
            te32.th32ThreadID ); 
          printf( "\n     base priority  = %d", te32.tpBasePri ); 
          printf( "\n     delta priority = %d", te32.tpDeltaPri ); 
        }
      } while( Thread32Next(hThreadSnap, &te32 ) ); 
     
    //  Don't forget to clean up the snapshot object.
      CloseHandle( hThreadSnap );
      return( TRUE );
    }
     
    void printError( TCHAR* msg )
    {
      DWORD eNum;
      TCHAR sysMsg[256];
      TCHAR* p;
     
      eNum = GetLastError( );
      FormatMessage(
             FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
             NULL, eNum,
             MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default lang.
             sysMsg, 256, NULL );
     
      // Trim the end of the line and terminate it with a null
      p = sysMsg;
      while( ( *p > 31 ) || ( *p == 9 ) )
        ++p;
      do { *p-- = 0; } while( ( p >= sysMsg ) &&
                              ( ( *p == '.' ) || ( *p < 33 ) ) );
     
      // Display the message
      printf( "\n  WARNING: %s failed with error %d (%s)",
        msg, eNum, sysMsg );
     
    }
    a vous de jouer...

  9. #9
    Membre confirmé
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2009
    Messages : 164
    Par défaut
    au moins j'avais les bonnes methodes...


  10. #10
    Membre confirmé
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2009
    Messages : 164
    Par défaut
    ce matin ça marchait... mais maintenant ca marche plus..

    1: j'arrive plus a appuyer sur mon bouton..
    voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    SHELLEXECUTEINFO sei; 
    	ZeroMemory(&sei, sizeof(SHELLEXECUTEINFO)); 
    	sei.cbSize = sizeof(SHELLEXECUTEINFO ); 
     
    	sei.lpFile = "zip.exe"; 
    	sei.fMask = SEE_MASK_NOCLOSEPROCESS; 
    	sei.lpVerb = TEXT("open"); 
    	sei.nShow = SW_HIDE; 
     
    	CString aa =" -r "+prestation+ ".zip \"program files";
    	sei.lpParameters = aa;
    	if(ShellExecuteEx(&sei)) 
    	{ 
    		int pas =0;
    		DWORD result = WaitForSingleObject(sei.hProcess, 500);
    		while (result == WAIT_TIMEOUT)
    		{
    			if(theApp.bInterrompu)
    			{	
    					ExitProcess(0);
    					result = WAIT_ABANDONED;
    			}
    			else
    			{
    				pas+=5;
    				if (pas < 175)
    					Frame->GetStatusBar()->SetPaneProgress(1,pas);
    				if (pas >=10)
    					/*theApp.bInterrompu=true;*/
     
    				result = WaitForSingleObject(sei.hProcess, 500);
    			}	
    		}
    est-ce que c'est parce qu'il y a un waitForSingleObject que je peux pas acceder a mon bouton?? pourtant ce matin ca marchait...

    2: quand theApp.bInterrompu == true ca fait le ExitProcess, mais au lieu d'arreter juste le processus ca me ferme completement mon application..
    et ce matin ca le faisait pas non plus

Discussions similaires

  1. test de l'exectuion d'un bat par Shellexecute
    Par Argonz dans le forum C++Builder
    Réponses: 8
    Dernier message: 10/12/2003, 08h18
  2. Ouvrir le poste de travail (avec ShellExecute) ?
    Par benj63 dans le forum C++Builder
    Réponses: 4
    Dernier message: 17/08/2003, 11h09
  3. [Turbo Pascal] Lire une touche au clavier sans interrompre le programme
    Par Allelouia dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 29/03/2003, 22h31
  4. Réponses: 2
    Dernier message: 18/11/2002, 09h12
  5. [VB6] Interrompre toutes procédures
    Par lutin_vert dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 10/09/2002, 11h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo