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 CloseHandle

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

Description :
Cet fonction sert à fermer un Handle ouvert.
Elle est utilisée dans de nombreux cas, pour les fichiers, pour les processus, pour les threads, ...
Si la fonction échoue elle retourne 0.

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