Ouvrir / fermer une application externe depuis votre prog vb.

Soyez le premier à donner votre avis sur cette source.

Vue 24 618 fois - Téléchargée 3 137 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
UnMage Messages postés 32 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 15 novembre 2004
1 sept. 2004 à 14:38
Ouip désolé j'avais mis tout ça vite fait j'étais assez pressé.
cs_YaNn0u Messages postés 48 Date d'inscription lundi 6 janvier 2003 Statut Membre Dernière intervention 27 avril 2005
31 août 2004 à 15:14
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
cs_YaNn0u Messages postés 48 Date d'inscription lundi 6 janvier 2003 Statut Membre Dernière intervention 27 avril 2005
31 août 2004 à 14:45
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 !
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
31 août 2004 à 08:17
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
cs_YaNn0u Messages postés 48 Date d'inscription lundi 6 janvier 2003 Statut Membre Dernière intervention 27 avril 2005
31 août 2004 à 03:51
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.