Gadot
Messages postés7Date d'inscriptionmercredi 19 décembre 2001StatutMembreDernière intervention 8 novembre 2002
-
19 déc. 2001 à 20:23
madcow41
Messages postés54Date d'inscriptionvendredi 12 avril 2002StatutMembreDernière intervention11 mars 2008
-
25 août 2002 à 10:41
Mon programme vb6 lance différentes applications en utilisant shell. Ai-je un moyen de connaître l'état d'une application : ouverte ou fermée ? J'ai cru comprendre qu'il fallait avoir le " handle " de l'application, mais comment le connaitre ?
ZTPdiffusion
Messages postés46Date d'inscriptionlundi 16 avril 2001StatutMembreDernière intervention 7 mars 2002 19 déc. 2001 à 21:26
Salut
Tu peux essayer ce qui suit. Ce n'est pas trop optimisé mais bon ça fonctionne.
'Code à mettre dans une feuille avec un bouton "Command1"
'un label (label1) et un textbox (text1)
'Mettre le chemin complet du programme à détecter dans le textbox
Private Sub Command1_Click()
DetectApp Text1.Text
End Sub
Public Function DetectApp(NomApp As String) As Boolean
Const PROCESS_ALL_ACCESS = 0
Dim uProcess As PROCESSENTRY32
Dim AppTrouve As Long
Dim hSnapshot As Long
Dim NomExe As String
Dim exitCode As Long
Dim myProcess As Long
Dim NbreApp As Integer
Dim i As Integer
On Local Error GoTo Err
NbreApp = 0
Do While AppTrouve
i = InStr(1, uProcess.szexeFile, Chr(0))
NomExe = LCase$(Left$(uProcess.szexeFile, i - 1))
If Right$(NomExe, Len(NomApp)) = LCase$(NomApp) Then
DetectApp = True
NbreApp = NbreApp + 1
myProcess = OpenProcess(PROCESS_ALL_ACCESS, False, uProcess.th32ProcessID)
End If
AppTrouve = ProcessNext(hSnapshot, uProcess)
Loop
Label1.Caption = "Cette application n'est pas ouverte" If DetectApp True Then Label1.Caption "Cette application est ouverte"
Err:
End Function
Private Sub Form_Load()
RegisterServiceProcess GetCurrentProcessId, 1
End Sub
Private Sub Form_Unload(Cancel As Integer)
RegisterServiceProcess GetCurrentProcessId, 0
End Sub
****************************************
'Code à mettre dans un module
Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal blnheritHandle As Long, ByVal dwAppProcessId As Long) As Long
Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Declare Function TerminateProcess Lib "kernel32" (ByVal ApphProcess As Long, ByVal uExitCode As Long) As Long
Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, lProcessID As Long) As Long
Declare Function RegisterServiceProcess Lib "kernel32" (ByVal ProcessID As Long, ByVal ServiceFlags As Long) As Long
Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szexeFile As String * 260
End Type
De plus, si tu veux la liste de toutes les applications ouvertes sur ta machine, tu peux ajouter un listbox
(list1) de la façon suivante :
Ajoute list1.clear après AppTrouve = ProcessFirst(hSnapshot, uProcess)
et list1.additem NomExe après NomExe = LCase$(Left$(uProcess.szexeFile, i - 1))
cs_Solo
Messages postés10Date d'inscriptionmardi 18 décembre 2001StatutMembreDernière intervention 6 octobre 2004 20 déc. 2001 à 21:57
-------------------------------
Réponse au message :
-------------------------------
Salut
Tu peux essayer ce qui suit. Ce n'est pas trop optimisé mais bon ça fonctionne.....
-------------------------------
Réponse au message :
-------------------------------
Mon programme vb6 lance différentes applications en utilisant shell. Ai-je un moyen de connaître l'état d'une application : ouverte ou fermée ? J'ai cru comprendre qu'il fallait avoir le " handle " de l'application, mais comment le connaitre ?
Merci à celui qui m'aidera.
Gadot
---------------------------------------
Salut... c'est avec beaucoup d'interets que j'ai regardé la réponse a la question.
J'ai moi meme un probleme similaire.
Mon programme doit lancer netscape, pour lequel il faut que je mette en place quelques plugins. le probleme est que si netscape est deja lancé, mes plugins ne sont pas pris en compte...(je ne suis pas l'utilisateur final).
Ce que je voudrais donc faire, c'est savoir si netscape (dont je connait le chemin et le nom de l'exe qui peut etre v4 a v6.2 selon la config de l'uitlisateur) est deja lancé pour eventuellement l'arreter. (ce chemin fait partie de la config de mon programme selon une réponse de l'utilisateur).
l'API CreateToolhelpSnapshot permet de savoir ca...seulement, cette api n'est dispo que depuis W95, et pas sur NT4...verrais tu une autre solution?
Merci
cs_Solo
Messages postés10Date d'inscriptionmardi 18 décembre 2001StatutMembreDernière intervention 6 octobre 2004 20 déc. 2001 à 21:59
-------------------------------
Réponse au message :
-------------------------------
Salut
Tu peux essayer ce qui suit. Ce n'est pas trop optimisé mais bon ça fonctionne.....
-------------------------------
Réponse au message :
-------------------------------
Mon programme vb6 lance différentes applications en utilisant shell. Ai-je un moyen de connaître l'état d'une application : ouverte ou fermée ? J'ai cru comprendre qu'il fallait avoir le " handle " de l'application, mais comment le connaitre ?
Merci à celui qui m'aidera.
Gadot
---------------------------------------
Salut... c'est avec beaucoup d'interets que j'ai regardé la réponse a la question.
J'ai moi meme un probleme similaire.
Mon programme doit lancer netscape, pour lequel il faut que je mette en place quelques plugins. le probleme est que si netscape est deja lancé, mes plugins ne sont pas pris en compte...(je ne suis pas l'utilisateur final).
Ce que je voudrais donc faire, c'est savoir si netscape (dont je connait le chemin et le nom de l'exe qui peut etre v4 a v6.2 selon la config de l'uitlisateur) est deja lancé pour eventuellement l'arreter. (ce chemin fait partie de la config de mon programme selon une réponse de l'utilisateur).
l'API CreateToolhelpSnapshot permet de savoir ca...seulement, cette api n'est dispo que depuis W95, et pas sur NT4...verrais tu une autre solution?
Merci