Hit-Parade .VB Research Center . Compteur
Accueil ~  Code ~  Programmes ~  Api ~  Forum ~  Cours ~  Livres ~  Quiz ~  Annuaire
~ Edito ~
12/03/2006 @ 13:39
Depuis la dernière mise à jour (qui remonte à... oulala plusieurs mois), un petit ménage de printemps s'impose. Ca tombe bien, c'est presque la période.
Au menu, et progressivement sur les jours à venir, rafraîchissement de plusieurs fonctions et procédures, nouvelles APIs et nouveaux programmes.

~ Rechercher ~

  

~ Annuaire VB ~
 Rechercher un site :
  

~ Partenaires ~

Fonction GetExitCodeProcess

Declare Function GetExitCodeProcess Lib "kernel32" Alias "GetExitCodeProcess" ( _
                 
ByVal hProcess As Long, _
                 lpExitCode As Long) As Long
Versions :
. Windows 95/98 : Oui
. Windows NT : A partir de 3.1
. Windows 2000/XP : Oui

Description :
Cette fonction retourne l'état de sortie d'un processus. Elle permet ainsi de savoir si un processus s'est terminé correctement ou non.
hProcess est le handle du processus à examiner.
lpExitCode est le code de sortie du processus qui sera renseigné par la fonction.

En cas d'échec la fonction retourne la valeur 0, sinon un valeur différente.

Si le processus n'est pas terminé, l'état retourné correspond à la
constante STILL_ACTIVE (&H103), sinon, la valeur de sortie peut être égale à :
- la valeur retournée par ExitProcess ou TerminateProcess,
- la valeur de retour de la fonction main ou winmain du processus,
- la valeur de l'erreur qui a causé la fermeture de l'application.

Exemple d'utilisation :

' Exemple de Phil (plancon@onetelnet.fr)

Option Explicit
' ---Les API concernant le contrôle des processus et des tâches sous Windows---
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
OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _
       
ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
' Ferme une application extérieure
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, _
       
ByVal uExitCode As Long) As Long
' Ferme notre application
Private Declare Sub ExitProcess Lib "kernel32" (ByVal uExitCode As Long)

' ---Autres API---
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function
GetLastError Lib "kernel32" () As Long

' ---Ici les constantes---
Const STILL_ACTIVE = &H103
Const PROCESS_QUERY_INFORMATION = &H400

Sub Shell(ByVal Tache As String)
' ---Cette fonction crée une tache puis regarde si elle est active---
' Tache est un nom de fichier
' ---Déclaration des variables---
Dim hProcess As Long
Dim
RetVal As Long
' ---Ouvre un programme et récupère son handle (hProcess)---
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(Tache, 6))
' ---Regarde si le processus est actif---
Do
   
' Retourne le status du processus en cours
   
GetExitCodeProcess hProcess, RetVal
   
' Les 2 lignes suivantes sont recommandées pour éviter de faire
    ' travailler le système avec GetExitCodeProcess
   
DoEvents
    Sleep 100
Loop While RetVal = STILL_ACTIVE
CloseHandle (hProcess)
End Sub

Private Sub
Form_Load()
TesMort ("c:\winnt\notepad.exe")
End Sub

Sub
TesMort(ByVal Tache As String)
' ---Tue une application en cours---
' Cette fonction force l'arrêt d'une tâche.
' ---Déclaration des variables---
Dim hProcess As Long
Dim
RetVal As Long
' ---Ouvre un programme et récupère son handle (hProcess)---
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(Tache, 6))
' ---Regarde si le processus est actif---
If (hProcess <= 0) Then
   
MsgBox "OpenProcess() a échoué : " & GetLastError()
Else
   
' Sinon le tue
   
If TerminateProcess(hProcess, 1) Then
       
MsgBox "TerminateProcess() a échoué " & GetLastError()
   
Else
       
MsgBox "Tu es mort"
        CloseHandle (hProcess)
   
End If
End If
End Sub

Retour à la liste des API

Visual Basic Research Center - (c) 2000/2002 -  Webmaster : docvb (chez) free (point) fr