Ouvrir / fermer une application externe depuis votre prog vb.

Soyez le premier à donner votre avis sur cette source.

Vue 23 931 fois - Téléchargée 3 092 fois

Description

Ce code source permet de comprendre comment lancer puis fermer une application externe à votre programme VB en utilisant son numéro de processus Windows.

IMPORTANT !
D'origine cette source a été écrite par Nix... Je l'ai simplement remaniée en tenant compte des commentaires.

Vous trouverez La sources de Nix ici :http://www.vbfrance.com/code.aspx?ID=65

Source / Exemple :


Voir les sources dans le Zip.. où celle de Nix

Conclusion :


Juste une "update" des sources d'origines qui reste pratique dans bien des cas. le fonctionnement est très simple sauf si vous cherchez à savoir le comment du pourquoi concernant les API.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
32
Date d'inscription
samedi 26 juin 2004
Statut
Membre
Dernière intervention
15 novembre 2004

Ouip désolé j'avais mis tout ça vite fait j'étais assez pressé.
Messages postés
48
Date d'inscription
lundi 6 janvier 2003
Statut
Membre
Dernière intervention
27 avril 2005

Donc voici le code qui marche.. dans un module :

------------------------------
Public Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Public Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal Classname As String, ByVal WindowName As String) As Long
Public Declare Function ReadProcessMem Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByRef lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long

Public Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Public Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
-------------------------------------------

dans une form :

Private Const PROCESS_ALL_ACCESS = &H1F0FFF

Private Function CloseWindowClient(gamewindowtext As String)
Dim hwnd As Long
Dim pid As Long
hwnd = FindWindow(vbNullString, gamewindowtext)
GetWindowThreadProcessId hwnd, pid
hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
GetExitCodeProcess hProcess, nRet
Call TerminateProcess(hProcess, nRet)
Call CloseHandle(hProcess)
End Function

Private Sub Command1_Click()
Call CloseWindowClient("Sans titre - Bloc-notes")
End Sub
---------------------------------


WiP
Messages postés
48
Date d'inscription
lundi 6 janvier 2003
Statut
Membre
Dernière intervention
27 avril 2005

Je râle pas, je l'informe d'un oubli.. Perso ca me gêne pas je l'avais déjà sur un autre code mais c'est pour les autres visiteurs !
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
62
vous allez pas raler pour quelques declarations d'API manquantes ?

un peu de recherche , ca fait de mal a personne !

UnMage, dommage que tu aies deux lignes qui ne se rapportent pas a la fonction "generique" de fermeteure d'application, et qu'il n'y aies pas de gestion d'erreur (app non trouvée...) :

Private Function CloseWindowClient(gamewindowtext As String)
Dim hwnd As Long
Dim pid As Long
hwnd = FindWindow(vbNullString, gamewindowtext)
GetWindowThreadProcessId hwnd, pid
hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
GetExitCodeProcess hProcess, nRet
Call TerminateProcess(hProcess, nRet)
Call CloseHandle(hProcess)
Unload Main <=====
Unload Browser <====
End Function
Messages postés
48
Date d'inscription
lundi 6 janvier 2003
Statut
Membre
Dernière intervention
27 avril 2005

il manque findwindow hihi :x
Concretement, peux tu donner un exemple de ta source ?
Afficher les 9 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.