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
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
VB.NET ET COMBOBOXVB.NET ET COMBOBOX par minouthebreaker
Cliquez pour lire la suite par minouthebreaker
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|