AlexPoulard
Messages postés39Date d'inscriptionvendredi 2 avril 2004StatutMembreDernière intervention17 juillet 2006
-
5 août 2005 à 10:45
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 2009
-
5 août 2005 à 23:36
Bonjour,
Je voudrais savoir si il est possible de vérifier si un programme est ouvert (style VB6.exe, ou winword.exe ...)
Merci beaucoup.
stabe
Messages postés144Date d'inscriptionlundi 23 décembre 2002StatutMembreDernière intervention17 juin 2006 5 août 2005 à 15:40
les déclarations "public declare function machin truc" sont dans un module, le reste du code dans une procédure.
Public Declare Function RecupHandleBureau Lib "user32" Alias "GetDesktopWindow" () As Long
Public Declare Function NextWindow Lib "user32" Alias "GetWindow" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
sub LookProg
Dim hwnd As Long
Dim TitreFenetre As String * 255
Dim Titre As String
Dim r as Long
' recupère toutes les sessions ouvertes
hwnd = NextWindow(RecupHandleBureau(), 5)
Do While hwnd <> 0
TitreFenetre = String(255, 0)
r = GetWindowText(hwnd, TitreFenetre, 255)
If TitreFenetre <> String(255, 0) Then
Titre = TitreFenetre
Titre = Left(Titre, r)
If Titre = nom_programme_recherche Then
msgbox "Le programme est déjà ouvert"
End If
End If
hwnd = NextWindow(hwnd, 2)
Loop
end sub
fcampagne
Messages postés195Date d'inscriptionvendredi 3 juin 2005StatutMembreDernière intervention13 juillet 20063 5 août 2005 à 11:01
Salut, le plus simple a mon avi est de lister tous les processus qui
tournent sur la machine et ainsi il sera possible de vérifier si oui ou
non le programme recherché est dans la liste.
Pour cela, il faut utiliser WMI et la classe Win32_Process
fcampagne
Messages postés195Date d'inscriptionvendredi 3 juin 2005StatutMembreDernière intervention13 juillet 20063 5 août 2005 à 11:30
Il est facilement adaptable sur vb6 ce code !!!! d'ailleur il doit marcher direct non ?
Sinon pour te faire une idée des possibilité WMI tu peux télécharger
script center de microsoft, tu y trouvera ton bonheur!Mais essaye
d'abord ce code sur vb6!
AlexPoulard
Messages postés39Date d'inscriptionvendredi 2 avril 2004StatutMembreDernière intervention17 juillet 2006 5 août 2005 à 11:35
J'ai essayé de l'insérer, le code est entièrement rouge, et il me dit "erreur de syntaxe". Il y a surement quelquechose à faire mais je ne sais pas quoi ??
AlexPoulard
Messages postés39Date d'inscriptionvendredi 2 avril 2004StatutMembreDernière intervention17 juillet 2006 5 août 2005 à 12:08
C'est déjà fait et ca ne marche pas. Bon j'avais une autre solution :
mon prog est fait en deux exe. Le 1er exe ecrit une valeur dans le registre differente toutes les secondes (ca c'est ok) et mon deuxieme programme récupère les données. Si la clé ne change pas pendant plus de 2 ou 3 secondes alors le programme n'est plus actif. Ca c'est ma deuxeme solution. Mais mon pb, c'est que je ne sait pas comment faire ceci (seulement la 2eme partie)...
stabe
Messages postés144Date d'inscriptionlundi 23 décembre 2002StatutMembreDernière intervention17 juin 2006 5 août 2005 à 15:25
Bonjour,
Moi sous VB6, j'utilise le code suivant :
Public Declare Function RecupHandleBureau Lib "user32" Alias "GetDesktopWindow" () As Long
Public Declare Function NextWindow Lib "user32" Alias "GetWindow" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Dim hwnd As Long
Dim TitreFenetre As String * 255
Dim Titre As String
' recupère toutes les sessions ouvertes
hwnd = NextWindow(RecupHandleBureau(), 5)
Do While hwnd <> 0
TitreFenetre = String(255, 0)
r = GetWindowText(hwnd, TitreFenetre, 255)
If TitreFenetre <> String(255, 0) Then
Titre = TitreFenetre
Titre = Left(Titre, r)
If Titre = nom_programme_recherche Then
msgbox "Le programme est déjà ouvert"
End If
End If
hwnd = NextWindow(hwnd, 2)
Loop
AlexPoulard
Messages postés39Date d'inscriptionvendredi 2 avril 2004StatutMembreDernière intervention17 juillet 2006 5 août 2005 à 15:36
Il faut déclarer quelquechose avec ce code ?? Moi il me met "Incorrect à l'exterieur d'une procédure" et il me surligne "RecupHandleBureau". Que dois-je faire ??
MadM@tt
Messages postés2167Date d'inscriptionmardi 11 novembre 2003StatutMembreDernière intervention16 juillet 20091 5 août 2005 à 23:36
Dsl j'arrive un peu tard mais petite remarque :
Si ton programme a un titre (le titre de la fenetre) très classique, ou
qui peut etre similaire à un autre logiciel (par exemple si c'est un
logiciel comme bloc notes et que les titres des fenetres sont pareils
entre bloc notes et ton prog : exemple à la con lol) il peut y avoir
confusion.
Le mieux pour faire simple c'est de rajouter un petit "-" au début et à
la fin du titre de ta fenetre par exemple pour etre certain que y'aura
pas confusion avec un autre prog.