Ouvrir / fermer une application externe depuis votre prog vb.

Soyez le premier à donner votre avis sur cette source.

Vue 23 786 fois - Téléchargée 3 074 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

devsurf
Messages postés
148
Date d'inscription
dimanche 13 octobre 2002
Statut
Membre
Dernière intervention
13 novembre 2008
-
C'est très sympa..
j'ai par contre un problème :
Tout fonctionne bien si l'application EXE n'a pas été lancée avant le demarage de notre code
Exemple :
Demarer word
Demarer notre source (ton prog vb)
A partir dela : Je n'arrive plus à maitriser le process dans ce cas
La fermeturte ne se fait pas , la création est alèatoire.
As tu une idée?
UnMage
Messages postés
32
Date d'inscription
samedi 26 juin 2004
Statut
Membre
Dernière intervention
15 novembre 2004
-
Moi j'utilise ça pour fermer un process de mon choix :


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)
Unload Main
Unload Browser
End Function
-----------------------------------------------------------------------
Module01
-----------------------------------------------------------------------
Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long


J'ai récupéré TerminateProcess et GetExitCodeProcess de la source çi-dessus.
cs_YaNn0u
Messages postés
48
Date d'inscription
lundi 6 janvier 2003
Statut
Membre
Dernière intervention
27 avril 2005
-
marche pas unmage, il faudrait déclarer getwindowthreadprocess..
UnMage
Messages postés
32
Date d'inscription
samedi 26 juin 2004
Statut
Membre
Dernière intervention
15 novembre 2004
-
Ah oui pardon :
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private 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
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal Classname As String, ByVal WindowName As String) As Long
Private 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

Il doit y en avoir en trop mais j'ai la flemme de trier..
cs_YaNn0u
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 ?

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.