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 :

[VB6] comment savoir si la commande shell est terminée ?


Sujet :

VB 6 et antérieur

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2003
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 1
    Points : 2
    Points
    2
    Par défaut [VB6] comment savoir si la commande shell est terminée ?
    Dans VB, je lance une commande shell qui me crée un fichier. Comment puis-je faire pour savoir quand ma commande shell est terminée et donc quand je peux utiliser mon nouveau fichier.

    Merci !!!!

  2. #2
    Membre du Club
    Inscrit en
    Mai 2003
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 54
    Points : 50
    Points
    50
    Par défaut
    Si tu utilises la fonction Shell, elle retourne un bool.
    0 pas Ok
    1 Ok

    a+ scorpia

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2002
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 8
    Points : 10
    Points
    10
    Par défaut
    La fonction Shell ne retourne pas de valeur booléenne, mais plutot un Process ID.
    Tu peux utiliser les API pour avoir la liste des process ids courants, et vérifier que le process id retourner par l'appel a la fonction Shell n'est plus présent.
    Tu peux utiliser le Timer pour réaliser cette vérification sur un intervalle de temps.
    Ne cherches pas au loin ce qui est devant ton nez ! (proverbe chinois ?)

  4. #4
    Membre du Club
    Inscrit en
    Mai 2003
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 54
    Points : 50
    Points
    50
    Par défaut
    ok autant pour moi , mais je savais bien qu'elle retournait qqch .

  5. #5
    Membre habitué
    Avatar de nabil
    Inscrit en
    Avril 2002
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 223
    Points : 168
    Points
    168
    Par défaut
    bon j'avais un problème qui est le suivant:j'en ai un module de calcul en VC++ que je veux lancer à partir de Vb puis attendre sa fin pour terminer l'exécution de mon programme en Vb.j'en ai trouver la solution sur le net avec un activex si c'est ton cas je peux te l'envoyer.
    Bon courage.
    Il ne faut jamais désesperer, il y a toujours une solution.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2003
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    voici un code qui pourra servir
    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
     
     
     
    'constantes processus
    Public Const MAX_PATH = 260
    Public Const TH32CS_SNAPPROCESS = 2&
     
    'type processus
    Public Type PROCESSENTRY32
        lSize           As Long
        lUsage           As Long
        lProcessId       As Long
        lDefaultHeapId   As Long
        lModuleId       As Long
        lThreads         As Long
        lParentProcessId As Long
        lPriClassBase   As Long
        lFlags           As Long
        sExeFile         As String * MAX_PATH
    End Type
     
    'API processus & threads
    Public Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessId As Long) As Long
    Public Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
    Public Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
    Public Declare Sub CloseHandle Lib "kernel32" (ByVal hPass As Long)
     
     
    Public Function ProcessusActif(PID As Long) As Boolean
     
    Dim cpt As Integer
    Dim strNomExe As String
    Dim strProcessID As String
    Dim lngSnapShot As Long
    Dim r As Long
    Dim uProcess As PROCESSENTRY32
    lngSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)
    If lngSnapShot <> 0 Then
        uProcess.lSize = Len(uProcess)
        r = ProcessFirst(lngSnapShot, uProcess)
            Do While r
                If uProcess.lProcessId = PID Then
                    ProcessusActif = True
                    Exit Function
                End If
                r = ProcessNext(lngSnapShot, uProcess)
             Loop
        CloseHandle (lngSnapShot)
    End If
    ProcessusActif = False
    End Function
    il suffit d'appeler la fonction ProcessusActif en lui passant le PID du processus créé (PID=shell( blabla)) et ça marche impec
    a+

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

Discussions similaires

  1. [VB6]Comment savoir si un répertoire existe
    Par pendragon dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 30/09/2016, 06h42
  2. Comment savoir si un script perl est terminé ?
    Par Krys006 dans le forum Programmation et administration système
    Réponses: 15
    Dernier message: 21/07/2012, 15h21
  3. Comment savoir si un Shell est terminé ?
    Par Mr Capone dans le forum VB 6 et antérieur
    Réponses: 14
    Dernier message: 21/02/2005, 17h05
  4. Comment savoir si une impression s'est bien déroulé?
    Par Cyrilh7 dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/11/2003, 20h49
  5. Réponses: 4
    Dernier message: 10/09/2002, 17h09

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