Comment savoir si un exe est en train de tourner ?

Résolu
bobjay Messages postés 66 Date d'inscription mercredi 19 mai 2004 Statut Membre Dernière intervention 1 avril 2007 - 11 févr. 2006 à 00:25
bobjay Messages postés 66 Date d'inscription mercredi 19 mai 2004 Statut Membre Dernière intervention 1 avril 2007 - 11 févr. 2006 à 12:41
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

PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 48
11 févr. 2006 à 02:28
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
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 48
11 févr. 2006 à 01:56
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....
0
wrndid Messages postés 36 Date d'inscription mercredi 16 mars 2005 Statut Membre Dernière intervention 5 février 2009
11 févr. 2006 à 09:01
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
0
bobjay Messages postés 66 Date d'inscription mercredi 19 mai 2004 Statut Membre Dernière intervention 1 avril 2007
11 févr. 2006 à 11:42
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é.

++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
katsankat Messages postés 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 3
11 févr. 2006 à 12:12
Fonction recherche sur le mot clé process. Pour "automatiser la réponse".
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 48
11 févr. 2006 à 12:23
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 ;)





++
0
bobjay Messages postés 66 Date d'inscription mercredi 19 mai 2004 Statut Membre Dernière intervention 1 avril 2007
11 févr. 2006 à 12:41
Merci
0