begin process at 2010 02 10 10:17:45
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

Système

 > 

Savoir si une application est ouverte ou fermée


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Savoir si une application est ouverte ou fermée

mercredi 19 décembre 2001 à 20:23:33 | Savoir si une application est ouverte ou fermée

Gadot

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
mercredi 19 décembre 2001 à 21:26:05 | Re : Savoir si une application est ouverte ou fermée

ZTPdiffusion

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

Const TH32CS_SNAPPROCESS As Long = 2&

uProcess.dwSize = Len(uProcess)
hSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)
AppTrouve = ProcessFirst(hSnapshot, uProcess)

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))

a+




-------------------------------
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
jeudi 20 décembre 2001 à 21:57:53 | Re : Savoir si une application est ouverte ou fermée

Solo





-------------------------------
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

ph.saunier@libertysurf.fr
jeudi 20 décembre 2001 à 21:59:18 | Re : Savoir si une application est ouverte ou fermée

Solo





-------------------------------
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

ph.saunier@libertysurf.fr
dimanche 25 août 2002 à 10:41:10 | Re : Savoir si une application est ouverte ou fermée

madcow41

Je suppose que ceci est valable quand on connais le Nom de la fenêtre mais moi je ne connais que le Numéro de Process, komenkonfé ?

MaD COw };-)


-------------------------------
Réponse au message :
-------------------------------

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

Const TH32CS_SNAPPROCESS As Long = 2&

uProcess.dwSize = Len(uProcess)
hSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)
AppTrouve = ProcessFirst(hSnapshot, uProcess)

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))

a+




-------------------------------
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



Cette discussion est classée dans : application, ouverte, fermée


Répondre à ce message

Sujets en rapport avec ce message

Detecter si une application n'est pas ouverte. [ par AlexPoulard ] Bonjour, je voudrais savoir comment faire pour détécter si une application est fermée. Si elle est fermée, le programme l'ouvre alors. Merci beaucoup Connexion ouverte ou fermée [ par Kelpan ] Bonjour,Pour un logiciel qui communique en permanence avec une base de données distante, à votre avis, quels sont les inconvenients de garder la même Empécher l'ouverture de l'application si celle-ci est déjà ouverte [ par Eric25 ] Bonjour,Je me demandais s'il était possible d'empêcher l'ouverture d'une application si celle-ci est déjà ouverte pour empêcher les ouvertures multipl application et fentre ouverte ??? [ par chouchou123 ] salut,j'ai une application vb qui utilise word. Pour cela je doit tester au demarrage de l'appli si word est deja ouverte ou non! Comment je peux fair Communication inter-application [ par arsenic77 ] Bonjours j'aimerais savoir s'il est possible qu'une application utilise les fonction d'une autre déja ouverte (instance?) ou encore s'il est possible Passage de paramètre [ par clementio ] Salut,Je voudrais savoir si il est possible de passer un paramètre à une application VB déjà ouverte.En fait j'ai une application qu'on lance à partir Application ouverte sous VB? [ par Talere ] Bonjour,Voila mon soucis :J'ai crée une application en parallèle à Excel. Seulement je souhaiterais qu'elle ne marche pas si Excel n'est pas lancé ( j Boucle le nombre d'application Excel ouverte [ par Patrik ] Bonjour,Je souhaite boucler les applications excel ouverte afin de vérifier si un fichier est ouvert.Merci à toutes celles et à tout ceux qui pourron Connexion fermée à quel moment? [ par js8bleu ] Bonjour à tous, j'aimerai savoir s'il est meilleur pour une application en réseau (donc avec plusieurs utilisateurs, VB 6.0/Access) d'ouvrir une conn Fermer une application ouverte avec shell [ par kouki69 ] Salut,[^^happy13] Je n'ai rien trouvé sur le site qui réponds à ma question, pourtant, je pense que c'est quelque chose qui a dû circuler sur ce site,


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,343 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales