Comment savoir si un exe est en train de tourner ? [Résolu]

Signaler
Messages postés
66
Date d'inscription
mercredi 19 mai 2004
Statut
Membre
Dernière intervention
1 avril 2007
-
Messages postés
66
Date d'inscription
mercredi 19 mai 2004
Statut
Membre
Dernière intervention
1 avril 2007
-
Salut!

Je cherche une méthode simple pour savoir si un programme externe est actif ou fermé. Je ne connais que son nom d'exécutable et il figure dans la liste du gestionnaire des taches. Ce prog externe n'est pas lancé par VB.
J'ai recherché sur le site mais apparement, vérifier juste avec un exe, ya pas (y'en a des tas avec le handle, les numid, mais rien vu avec les Exe).

Merci d'avance ;)

7 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
42
voici en exemple en VB6 à partir de l'API-Guid...










' = ====

' Form1

' =====

'

Option Explicit

'

'

Private Sub Form_Load()

Me.AutoRedraw = True

Call EnumWindows(AddressOf EnumWindowsProc, ByVal 0&)

End Sub











' =======

' Module1

' =======

'

Option Explicit

'

Declare Function EnumWindows Lib "user32" _

(ByVal lpEnumFunc As Long, ByVal lParam As Long) As Boolean



Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" _

(ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long



Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" _

(ByVal hwnd As Long) As Long

'

Private Const cMON_EXE As String = "foxmail" 'à changer....

'

Public Function EnumWindowsProc(ByVal hwnd As Long, ByVal lParam As Long) As Boolean

Dim sSave As String, lRet As Long

lRet = GetWindowTextLength(hwnd)

sSave = Space$(lRet)

Call GetWindowText(hwnd, sSave, lRet + 1)

If LCase$(sSave) Like "*" & cMON_EXE & "*" Then Form1.Print sSave & Space$(20) & "hWnd = " & CStr (hwnd)



'continue enumeration

EnumWindowsProc = True

End Function




<small> Coloration
syntaxique automatique [AFCK]</small>



PCPT [AFCK]
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 152 internautes nous ont dit merci ce mois-ci

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
42
salut,

cet exe est visible quand il est lancé?

c'est à dire il a une fenêtre?

j'ai FoxMail en systray. il est dans mes processus, mais n'apparaît dans l'onglet application que quand je l'ouvre....
Messages postés
36
Date d'inscription
mercredi 16 mars 2005
Statut
Membre
Dernière intervention
5 février 2009

salut
tu fait ctrl alt sup gestionnnaire de tache tu va dans processus et regade si ton application est en route pou l'arrete clic desssu et terminer
Messages postés
66
Date d'inscription
mercredi 19 mai 2004
Statut
Membre
Dernière intervention
1 avril 2007

Pcpt, merci pour ton exemple mais j'ai pas trop compris cette action: If LCase$(sSave) Like "*" & cMON_EXE & "*" Then Form1.Print sSave & Space$(20) & "hWnd = " & CStr(hwnd)
C'est censé faire quoi exactement?

Wrndid, c'est sympa de m'avoir répondu, mais ici c'est un forum de programmation, c'est pas un site pour apprendre à se servir de windows (ya des sites genre "comment ça marche"...)
Si on pose une question dans vbfrance, nous sous-entendons que les réponses soient sous forme de code, justement pour automatiser les taches et éviter le genre de manipulations que tu m'a proposé.

++
Messages postés
571
Date d'inscription
vendredi 30 décembre 2005
Statut
Membre
Dernière intervention
12 juillet 2012
3
Fonction recherche sur le mot clé process. Pour "automatiser la réponse".
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
42
cMONEXE est évidemment pour que tu voies rapidement quelle variable changer (ton exe cherché, à écrire en minuscule)


sSave contiendra le nom de l'application (pas forcément le nom supposé..."


LCase interprète en miniscule


Like est un opérateur


Form.Print pour écrire le résultat sur la Form, mais un Debug.Print suffisait


Space, bah c'est 20 espaces


puis le handle retrouvé (converti en chaine , donc 654654 devient "654654")





traduction : si la chaine trouvée, en minuscule, a une syntaxe COMME ta constante (avec ou sans caractère avant et/ou après, d'où les *), alors écrit le nom et le handle trouvé





j'espère que c'est plus clair ;)





++
Messages postés
66
Date d'inscription
mercredi 19 mai 2004
Statut
Membre
Dernière intervention
1 avril 2007

Merci