OVH Cloud OVH Cloud

Fermeture d'un exe

5 réponses
Avatar
Barsalou
Comment fermer depuis le programme appelant une application ouverte avec
Shell.
Merci de m'aider
Eric

5 réponses

Avatar
le_troll
Bonsoir, voici:

OUVERTURE D'UNE APPLICATION, PUIS, FERMETURE DE L'APPLICATION DEPUIS LE
PROGRAMME QUI L'A LANCE

Private Declare Function OpenProcess Lib "kernel32" ( _

ByVal dwDesiredAccess As Long, _

ByVal bInheritHandle As Long, _

ByVal dwProcessId As Long _

) As Long

'

Private Declare Function TerminateProcess Lib "kernel32" ( _

ByVal hProcess As Long, _

ByVal uExitCode As Long _

) As Long

Private Declare Function CloseHandle Lib "kernel32" ( _

ByVal hObject As Long) As Long
'

Private Const PROCESS_TERMINATE = &H1

Dim NumProcess As Long

Dim RC As Long

Dim hProcess As Long

'

Sub ouvrir()

NumProcess = Shell(Nom_fic, 1)

End sub



Sub fermer()

hProcess = OpenProcess(PROCESS_TERMINATE, -1&, NumProcess)

RC = TerminateProcess(hProcess, 0&)

RC = CloseHandle(hProcess)

End Sub

--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !


"Barsalou" a écrit dans le message de
news:
Comment fermer depuis le programme appelant une application ouverte avec
Shell.
Merci de m'aider
Eric




Avatar
ng
Salut,

1/ Tu peux essayer de trouver la fenêtre de l'appli (FindWindows(), etc...)
puis lui envoyer un message WM_CLOSE de facon à ce qu'elle se ferme
proprement (et par exemple si ca n'a aucun effet au bout d'un certain temps
il suffirait d'employer les grands moyen et de tuer méchamment le process).

2/ Tu peux aussi (mais attention ce n'est pas propre du tout car il n'y a
pas une libération correcte des ressources) tuer le process
(TerminateProcess()), voici un exemple :

Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess
As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long)
As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess
As Long, lpExitCode As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As
Long, ByVal uExitCode As Long) As Long
Private Const PROCESS_QUERY_INFORMATION = &H400

Private Sub Form_Load()
Dim lRet As Long, lExitCode As Long, lHandle As Long

lRet = Shell("notepad.exe", vbNormalFocus)

Call MsgBox("Cliquez sur OK pour tuer le process")

lHandle = OpenProcess(PROCESS_QUERY_INFORMATION, False, lRet)
Call GetExitCodeProcess(lHandle, lExitCode)
Call TerminateProcess(lHandle, 0)
Call CloseHandle(lHandle)
End Sub


--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/


Barsalou wrote:
Comment fermer depuis le programme appelant une application ouverte
avec Shell.
Merci de m'aider
Eric


Avatar
Barsalou
Merci beaucoup.
Néanmoins je n'ai pas compris la technique par FindWindows etc.. qui serait
plus "propre".
Avatar
Barsalou
Après essai je constate que le processus appelé s'arrête effectivement, mais
que la fenêtre correspondante est toujours là.
Je voudrais l'équivalent d'un clic sur la croix de fermeture.
Si c'est possible merci de me dire comment faire.
Avatar
Barsalou
j'ai trouvé la bonne réponse sur
http://faq.vb.free.fr/index.php?question4

Eric