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

VB 6 et antérieur Discussion :

Tester un processus jusqu'à ce qu'il soit inactif


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur VB (6 et .net) + Sage X3
    Inscrit en
    Avril 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VB (6 et .net) + Sage X3

    Informations forums :
    Inscription : Avril 2013
    Messages : 13
    Par défaut Tester un processus jusqu'à ce qu'il soit inactif
    Bonjour à tous,

    Dans le cadre d'un de mes projets, je dois exécuter des commandes shell dans un programme afin de récupérer des fichiers sur un ftp. Le problème est que vb ne "fait pas de pause" le temps de l'exécution du shell.

    J'ai créé une fonction en me servant du WMI, qui me permet de voir si le processus est actif, simplement je dois le tester jusqu'à ce qu'il devienne inactif, et c'est surement tout simple mais là je bloque.

    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
    35
    Public Sub TestProcess(ByVal processName As String)
     
            On Error GoTo ErrHandler
     
             Dim oWMI
             Dim ret
             Dim sService
             Dim oWMIServices
             Dim oWMIService
             Dim oServices
             Dim oService
             Dim servicename
     
              Set oWMI = GetObject("winmgmts:")
              Set oServices = oWMI.InstancesOf("win32_process")
     
              For Each oService In oServices
     
                     servicename = LCase(Trim(CStr(oService.Name) & ""))
     
                     If servicename = processName Then
     
                        'retester le process jusqu'à ce qu'il soit inactif
     
                     End If
     
     
              Next
     
              Set oServices = Nothing
              Set oWMI = Nothing
     
    ErrHandler:
      Err.Clear
    End Sub
    Quelqu'un aurait il une solution à me proposer ?

    Merci d'avance

  2. #2
    Membre émérite Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 639
    Par défaut
    A tout zazard, en ligne 22 je mettrais un

  3. #3
    Membre averti
    Homme Profil pro
    Développeur VB (6 et .net) + Sage X3
    Inscrit en
    Avril 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VB (6 et .net) + Sage X3

    Informations forums :
    Inscription : Avril 2013
    Messages : 13
    Par défaut
    J'avais testé le DoEvents, mais il passe au dessus et passe au processus suivant.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur VB (6 et .net) + Sage X3
    Inscrit en
    Avril 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VB (6 et .net) + Sage X3

    Informations forums :
    Inscription : Avril 2013
    Messages : 13
    Par défaut
    Bon, je m'en suis sorti avec l'utilisation d'un booléen et de la fonction sleep (vu qu'il y avait un décalage entre la fin de mon processus et la finalisation du transfert de mon fichier)

    Pour ceux que ça intéresse :

    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
     
    Public Sub TestProcess(ByVal processName As String)
     
     
             Dim oWMI
             Dim oWMIServices
             Dim oWMIService
             Dim oServices
             Dim oService
             Dim servicename
             Dim actif As Boolean
     
             Do
                  actif = False
                  Set oWMI = GetObject("winmgmts:")
                  Set oServices = oWMI.InstancesOf("win32_process")
     
                  For Each oService In oServices
     
                         servicename = LCase(Trim(CStr(oService.Name) & ""))
     
                         If servicename = processName Then
     
                            actif = True
     
                         End If
     
     
                  Next
     
                  Set oServices = Nothing
                  Set oWMI = Nothing
     
             Loop Until actif = False
     
             Sleep (10000)
     
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/10/2012, 17h46
  2. Tester un processus
    Par Neexus dans le forum C
    Réponses: 11
    Dernier message: 11/04/2011, 18h42
  3. Tester un processus automatisé avec Selenium
    Par badrodoja dans le forum Test
    Réponses: 6
    Dernier message: 10/03/2011, 13h56
  4. Réponses: 22
    Dernier message: 10/04/2007, 12h33
  5. Tester execution d'un processus
    Par lafracas dans le forum POSIX
    Réponses: 6
    Dernier message: 25/05/2006, 23h53

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