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 :

Savoir si une application est en cours d'exécution??


Sujet :

VB 6 et antérieur

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 11
    Points : 2
    Points
    2
    Par défaut Savoir si une application est en cours d'exécution??
    Boujour, je cherche à savoir s'il est possible de récupérer l'état (statut) d'une application.
    En effet, je souhaite tuer mon appli si elle est mode "Ne répond pas".
    Si qq'un peut m'aider, merci.

  2. #2
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Merci pour le lien, ça m'est utile.
    Mais je n'arrive pas à connaître l'état de l'appli quand je fais:
    oproc.ExecutionState ou
    oproc.Status

    Ca me renvoie une valeur nulle alors que mon appli tourne.
    As-tu une suggestion??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Form_Load()
    Dim svc As Object
        Dim oproc
        Set svc = GetObject("winmgmts:root\cimv2")
        squery = "select * from win32_process where name='Test.EXE'"
        For Each oproc In svc.execquery(squery)
            MsgBox "" & oproc.ExecutionState
        Next
        Set svc = Nothing
     
    End Sub

  3. #3
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Ben...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Form_Load() 
        Dim svc As Object 
        Dim oproc 
        Set svc = GetObject("winmgmts:root\cimv2") 
        squery = "select * from win32_process where name='TEST.EXE'" 
        For Each oproc In svc.execquery(squery) 
            oproc.Terminate 
        Next 
        Set svc = Nothing 
    End Sub
    te "zigouillera", si elle est ouverte, l'appli TEST.EXE
    La requête qui est faite l'est précisément sur TEST.EXE... et aucune autre appli...
    Essaye et tu constateras !
    Il faut qu'il soit clair dans ton esprit que TEST.EXE doit exister (ne pas tester, donc, en lançant, par le Run ou Start, TEST.VPB mais créer TEST.EXE, lancer TEST.EXE et tester alors...)
    Je viens de tester chez moi et tout marche sans problème.
    PS : lorsque tu y seras parvenu, remercie ThierryAIM qui nous a "passé ce petit bout de code il y a quelques jours à peine ...

  4. #4
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    J'ai testé et je suis d'accord avec toi ça marche si on veut tuer n'importe
    quelle application.
    Mais moi je veut tuer une application qui ne répond plus et donc je veux savoir son état (En cours d'exécution, ou Ne répond pas).
    D'après ce bout de code, on tue Test.exe quelque soit son état.

  5. #5
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    J'adore :

    Citation Envoyé par MSDN
    ExecutionState
    Data type: uint16
    Access type: Read-only

    This property is not implemented and does not get populated for any instance of this class. This property is always NULL.

    Status
    Data type: string
    Access type: Read-only

    This property is not implemented and does not get populated for any instance of this class. It is always NUL
    Merci m'sieur µsoft
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  6. #6
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Ok, c'est génial donc y'a pas moyen de récupérer l'état d'une application qui tourne.
    En VB.net il existe la classe Process avec une méthode Responding.
    N'y a-t-il pas un moyen en vb6.

  7. #7
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Ouais et Ouille !
    Après avoir (comme à l'accoutumée) foncé la tête la première dans le brouillard et (toujours comme à l'accoutumée) été victime de nombreux hématomes en me heurtant à 2 ou 3 murs (parmi lesquels le .status que j'ai essayé sans, comme Thierry, regarder ce qu'en disait MSDN), j'en suis arrivé à me contenter d'une réflexion philosophique (bosses et hématomes aidant...) :
    S'il était possible de dénoncer l'état bloqué d'une application ouverte, Windows aurait certes profité de cette aptitude pour dénoncer à son client, sans plus attendre, le problème...
    Or, Sir Bill ne fait connaître l'existence de cette épine que lorsque son client tente de fermer une application et que ses "ouvriers" n'y parviennent pas !
    Sir Bill ne saurait ainsi qu'un processus ne répond plus que lorsque son client tente en vain de le fermer... et... si le processus peut être fermé, ma foi, il... le ferme !...
    Bien, mais voilà : Sir Davidvb6 ne veut quant à lui pas que l'on ferme si le processus est encore capable de répondre... Gênant, gênant tout çà ... Comment tenter de fermer .... sans fermer .... pour voir si l'on peut fermer ?...
    Je me mets donc à genoux et ... abandonne (trop de bosses déjà)...

  8. #8
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Pour votre information :
    Class Win32_Process: CIM_Process
    {
    string Caption;
    string CommandLine;
    string CreationClassName;
    datetime CreationDate;
    string CSCreationClassName;
    string CSName;
    string Description;
    string ExecutablePath;
    uint16 ExecutionState;
    string Handle;
    uint32 HandleCount;
    datetime InstallDate;
    uint64 KernelModeTime;
    uint32 MaximumWorkingSetSize;
    uint32 MinimumWorkingSetSize;
    string Name;
    string OSCreationClassName;
    string OSName;
    uint64 OtherOperationCount;
    uint64 OtherTransferCount;
    uint32 PageFaults;
    uint32 PageFileUsage;
    uint32 ParentProcessId;
    uint32 PeakPageFileUsage;
    uint64 PeakVirtualSize;
    uint32 PeakWorkingSetSize;
    uint32 Priority;
    uint64 PrivatePageCount;
    uint32 ProcessId;
    uint32 QuotaNonPagedPoolUsage;
    uint32 QuotaPagedPoolUsage;
    uint32 QuotaPeakNonPagedPoolUsage;
    uint32 QuotaPeakPagedPoolUsage;
    uint64 ReadOperationCount;
    uint64 ReadTransferCount;
    uint32 SessionId;
    string Status;
    datetime TerminationDate;
    uint32 ThreadCount;
    uint64 UserModeTime;
    uint64 VirtualSize;
    string WindowsVersion;
    uint64 WorkingSetSize;
    uint64 WriteOperationCount;
    uint64 WriteTransferCount;
    };
    Avec, bien sûr, les petites subtilités à Bill, citées plus haut
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  9. #9
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Ok ba merci quand même tu temps que vous m'avez accordé mais je suis pas sûr d'avoir tout compris car le gestionnaire de tâches lui sait quand une application ne répond pas sans qu'on essaie de la fermer, il doit donc exister un moyen de récupérer cette info.
    De plus en VB.net cela marche très bien.

  10. #10
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    tu temps
    ?
    ou

  11. #11
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    pardon pour la faute de frappe mais ça arrive.
    je suis pas sûr d'avoir tout compris car le gestionnaire de tâches lui sait quand une application ne répond pas sans qu'on essaie de la fermer, il doit donc exister un moyen de récupérer cette info.
    De plus en VB.net cela marche très bien.

  12. #12
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Citation Envoyé par Davidvb6
    De plus en VB.net cela marche très bien.
    Le problème, c'est que VB6, c'est pas VB.net
    et que le gestionnaire des taches n'est pas non plus programmé en VB6
    et que pour le moment, ben j'ai pas trouvé
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  13. #13
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Si qq'un trouve une solution, je suis toujours preneur.

  14. #14
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Bonjour,
    Si qq'un trouve une solution, je suis toujours preneur.
    dur, dur...
    après d'autre recherches, M. Bill a également prévu (mais uniquement au lancement de quelques applications qui sont les siennes) d'alerter son client lors du démarrage (en cas d'insuccès) des dites applications... (il semble qu'il se soit contenté dans ces cas là d'un simple test de "connexion")
    Dans d'autres cas, enfin, il semble que les applications "dénoncées" utilisent un timer de vérification
    Je ne trouve absolument rien en ce qui concerne les blocages "en cours" des applications qui ne contiennent pas en elles-même ce genre de "délateur".

Discussions similaires

  1. Comment savoir si une application est en cours d'exécution
    Par DelphiCool dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 03/02/2013, 10h54
  2. comment savoir si une application est fermée ?
    Par Flow_75 dans le forum C++Builder
    Réponses: 10
    Dernier message: 13/12/2006, 10h27
  3. Réponses: 2
    Dernier message: 14/09/2006, 23h35
  4. Comment savoir si une application est lancée ?
    Par Teddy dans le forum Delphi
    Réponses: 2
    Dernier message: 02/07/2006, 19h33
  5. Savoir si une application est ouverte sur un poste distant
    Par bl4ckwolf dans le forum Développement
    Réponses: 3
    Dernier message: 17/05/2006, 21h25

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