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.NET Discussion :

Lister tous les process actifs en vb.net


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Par défaut Lister tous les process actifs en vb.net
    Bonjour,

    j'ai le code suivant pour lister les process en cours
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Private Sub PB_PROCESS_Click(sender As Object, e As EventArgs) Handles PB_PROCESS.Click
     
            LB_001.Items.Clear()
            Dim Processes() As Process = Process.GetProcesses()
            For Each p As Process In Processes
                If Not p.MainWindowTitle = "" Then
                    LB_001.Items.Add(p.MainWindowTitle)
                End If
            Next
        End Sub
    Et j'ai lancé 2 fenêtres FIREFOX, et je n'en vois qu'une dans la liste, et c'est la dernière qui a eu le focus qui apparaît dans la liste.
    Je souhaite récupérer toutes les instances de firefox qui ont démarré.
    Que dois je faire ?
    D'avance Merci

  2. #2
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    Peut-être que le code suivant fera mieux que le tien ....
    Remplissage de la ListBox1 avec les ProcessNames des process trouvés.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim P As System.Diagnostics.Process
            Try
                For Each P In System.Diagnostics.Process.GetProcesses
                    ListBox1.Items.Add(P.ProcessName)
                Next
            Catch
            End Try
    ...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Par défaut
    Merci pour ta réponse, mais cela ne règle le problème que j'ai.

    J'ai repris ton code et ajouté la recherche des process firefox comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            Dim SearchForThis As String = "firefox"
            Dim P As System.Diagnostics.Process
            Try
                For Each P In System.Diagnostics.Process.GetProcesses
                    If Not P.ProcessName.IndexOf(SearchForThis) < 0 Then
                        LB_001.Items.Add(P.ProcessName & " | " & P.MainWindowTitle)
                    End If
     
                Next
            Catch
            End Try
    Je me retrouve avec :

    firefox | YouTube — Mozilla Firefox

    suivi de ceci.
    firefox |
    firefox |
    firefox |
    firefox |
    firefox |
    firefox |
    ..
    firefox |

    18 lignes en tout

    Alors que j'ai une autre fenêtre de firefox sur le site de Lidl, qui n'apparaitra que si je lui donne le focus et que je relance ma recherche, et l'autre fenêtre firefox n'apparaitra plus.
    Bizarre non ?

  4. #4
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    Pour trouver uniquement les processus FireFox, le code devrait être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim SearchForThis As String = "firefox"
    Dim P As System.Diagnostics.Process
            Try
                For Each P In System.Diagnostics.Process.GetProcesses
                    If P.ProcessName.ToUpper Like "*" & SearchForThis.ToUpper & "*" Then
                         LB_001..Items.Add(P.ProcessName)
                    End If
                Next
            Catch
            End Try
    Il est fréquent de trouver plus de process que ce qu'on attend parce que des programmes désignés (par exemple FireFox.exe) lancent des services qui leur sont utiles.
    Cela ne vaut que pour les programmes exécutés par le système actif sur l'ordi. A ce sujet, je ne comprends pas "... j'ai une autre fenêtre de firefox sur le site de Lidl ...".

    J'espère que cela te fera avancer ...

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Par défaut
    OK, je m'exprime mal...

    lorsque je dis "... j'ai une autre fenêtre de firefox sur le site de Lidl ...", je veux dire par là que j'ai deux fenêtres (pas deux onglets, mais deux fenêtres, ce qui représente pour moi 2 instances de firefox) sur des sites web différents.
    ET quand je liste les process seule l'instance en avant plan apparaît dans la liste).
    C'est comme si seule cette fenêtre avait une MainWindowTitle.

    Vous pouvez essayer ceci :

    1- lancer firefox et aller sur un site web
    2- ouvrer un nouvel onglet et aller sur un autre site web
    3- déplacer le nouvel onglet vers une nouvelle fenêtre firefox
    4- lister les process avec le code que vous avez écrit et dites moi si vous retrouvez le "titre" de chacun des 2 sites dans votre liste.

    Si c'est le cas alors j'ai intérêt à prendre rendez-vous immédiatement avec mon ophtalmo.....Je rigole.

    Je fais cette réponse avant d'avoir tester ton nouveau code. Mais je fais amende honorable en retour si le code fonctionne.

    Dans tous les cas merci beaucoup pour le temps accordé.

    Cordialement

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Par défaut
    C'est encore moi.

    Voici le code que j'ai exécuté.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            Dim SearchForThis As String = "firefox"
            Dim P As System.Diagnostics.Process
                  Try
                    For Each P In System.Diagnostics.Process.GetProcesses
                         If P.ProcessName.ToUpper Like "*" & SearchForThis.ToUpper & "*" Then
                            LB_001.Items.Add(P.ProcessName & " | " & P.MainWindowTitle)
                         End If
                    Next
                    Catch
                  End Try
    J'ai juste rajouté & " | " & P.MainWindowTitle lors de l'insertion du process dans la liste.
    Je vous assure que seule la fenêtre en avant plan apparaît avec un titre.

    Et chez vous ?

  7. #7
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Et que se passe-t-il quand vous utilisez mon code dans lui ajouter quoi que ce soit ?

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Par défaut
    Je reçois la litanie des process firefox

  9. #9
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    Je en sais pas comment fonctionne FireFox mais voici les tests que je fais avec NotedPad.exe et avec DeuxForm (un programme de test de communication entre forms).

    Je lance le bloc notes d'un côté et j'ouvre un fichier TXT à partir de l'explorateur. La "litanie" des process NotePad me donne 2 fois NotePad dans ma ListBox.
    Je lance mon programme DeuxForm et, à partir du Form principal, j'active le Form secondaire. La recherche de DeuxForm dans les processus me le trouve une seule fois seulement, malgré que j'aie bien deux fenêtres distinctes et actives à l'écran.

    J'en déduis qu'une application peut ouvrir plusieurs fenêtres et "se lancer" dans des tâches éventuellement très différentes à partir d'une même instance "déclarée" au système.

    Une différence apparait alors avec les possibilités de "Kill" des processus listés.
    Avec le Notepad, pour lequel je trouve un processus par instance effective, je peux killer celle que je veux.
    Avec le programme DeuxForm, que je trouve une seule fois dans la liste, je peux killer seulement le processus listé, mais cela "ferme" toutes les fenêtres que j'avais ouvertes.

    Je suppose que FireFox se comporte comme mon programme DeuxForm et là où tu le trouves une seule fois, si tu le killes, cela fermera toutes ses fenêtres.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            Dim Cpt As Integer = 0
            Dim P As System.Diagnostics.Process
            Try
                For Each P In System.Diagnostics.Process.GetProcesses
                    If P.ProcessName.ToUpper Like "*" & SearchForThis.ToUpper & "*" Then
     
                        LB_001.Items.Add(P.ProcessName)
                        P.Kill()   ' Placé ici, Kill va fermer chaque instance trouvée et listée
     
                    End If
                Next
            Catch
            End Try
    J'espère que ceci t'aidera ...

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 7
    Par défaut
    En tout cas merci beaucoup, mais le problème que je voulais résoudre c'était bien d'avoir mes 2 instances avec le titre des sites affichées.
    Je vais continuer mes recherches en espérant trouver.
    Une fois de plus merci pour le temps consacré.
    J'ai beaucoup apprécié.

    Merci.

  11. #11
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 547
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 547
    Par défaut
    Ce que je constate en affichant les id des process, c'est que c'est toujours le même processus qui affiche la fenêtre Firefox qui a le focus et qui possède donc un nom de fenêtre.
    En creusant encore un peu, avec le gestionnaire des tâches firefox (menu Outils Supplémentaires > gestionnaire de tâches), on y trouve les ID des tâches correspondants aux différentes fenêtres/onglets.
    Il faut donc creuser un peu plus sur ces pistes là.

  12. #12
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 972
    Par défaut
    Citation Envoyé par umfred Voir le message
    En creusant encore un peu, avec le gestionnaire des tâches firefox (menu Outils Supplémentaires > gestionnaire de tâches), on y trouve les ID des tâches correspondants aux différentes fenêtres/onglets.
    J'ai bien peur que ce soit plus compliqué que cela.
    Chez moi par exemple, pour une seule fenêtre avec un seul onglet ouvert sur Google, le gestionnaire des tâches m'affiche 6 processus dans l'onglet "Processus" et 10 dans l'onglet "Détails".

  13. #13
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 547
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 547
    Par défaut
    Chrome aussi a son gestionnaire des tâches, dans lequel on voit la même chose que dans celui de Firefox.
    Je n'ai pas dit que c'était simple (bien au contraire)

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/10/2007, 18h48
  2. lister tous les docs word en vb.net
    Par zit_zit dans le forum Windows Forms
    Réponses: 3
    Dernier message: 07/10/2007, 13h06
  3. Réponses: 1
    Dernier message: 19/08/2006, 10h27
  4. MFC CDialog - lister tous les composants presents
    Par firejocker dans le forum MFC
    Réponses: 11
    Dernier message: 03/04/2006, 16h10
  5. Comment lister tous les composants d'une fiche ?
    Par tipiweb dans le forum Langage
    Réponses: 2
    Dernier message: 18/01/2006, 21h53

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