Accueil > Forum > > > > Savoir si une application est ouverte ou fermée
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,
Livres en rapport
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|