~ 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 ~
~ Partenaires ~
|
Fonction GetLastError
Declare Function GetLastError Lib "kernel32" () As Long
Versions : . Windows 95/98 : Oui . Windows NT : A partir de 3.1 . Windows 2000/XP : OuiDescription : (Origine : Phil - Mail : pplancon@chello.fr)
Cette fonction retourne la dernière erreur système liée au thread courant.
Exemple d'utilisation :
'---------------------------------
'--- Origine : Phil ---
'--- Mail : pplancon@chello.fr ---
'---------------------------------
Option Explicit
' Le code ci-dessous montre comment changer la priorité du processus
' en cours (= au code qui suit). Les APIs utilisées permettent
' de classer par ordre prioritaire des processus, autrement dit
' le système réparti ou donne totalement les ressources systèmes
' (mémoire, CPU, ...) pour l'exécution de ou d'un processus.
'---Déclaration des constantes---
' Constantes des priorités (6 niveaux de priorités)
Const IDLE_PRIORITY_CLASS As Long = &H40 ' minimum
Const BELOW_NORMAL_PRIORITY_CLASS As Long = &H4000 ' normal -
Const NORMAL_PRIORITY_CLASS As Long = &H20 ' normal
Const ABOVE_NORMAL_PRIORITY_CLASS As Long = &H8000 ' normal +
Const HIGH_PRIORITY_CLASS As Long = &H80 ' haute
Const REALTIME_PRIORITY_CLASS As Long = &H100 ' maximum
' Constantes de gestion des process
'Accès au process en synchro uniquement.
Const SYNCHRONIZE As Long = &H100000
'Accès au process en "query_info".
Const PROCESS_QUERY_INFORMATION As Long = &H400
'Infinite timeout.
Const INFINITE As Long = &HFFFF
'---Déclarations des APIs---
' Gestion de la priorité du procces
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Function SetPriorityClass Lib "kernel32" (ByVal hProcess As Long, _
ByVal dwPriorityClass As Long) As Long
Private Declare Function GetLastError Lib "kernel32" () As Long
' Pour le temps
Private Declare Function timeGetTime Lib "winmm.dll" () As Long
Private Sub Command1_Click()
'---Déclaration des variables---
Dim i As Long
Dim j As Long
Dim HeureDebut As Long
'---Exécute un calcul bidon---
HeureDebut = timeGetTime
For i = 0 To 50000000 ' <- modifier ce chiffre pour influer sur le temps de calcul
j = (i * 2) Mod 34541
Next i
MsgBox "Temps du calcul bidon : " & timeGetTime - HeureDebut & " ms"
End Sub
Private Sub Form_Load()
'---Déclaration des variables---
Dim LastError As Long
Dim Ret As Long
Dim hCurrentProcess As Long
'---Positionne la feuille---
Me.Move 0, 0
'---Modifie la priorité du process---
' Récupère le handle du process
hCurrentProcess = GetCurrentProcess()
' Affecte sa priorité
Ret = SetPriorityClass(hCurrentProcess, IDLE_PRIORITY_CLASS)
' Gestion des erreurs
If (Ret = 0) Then
LastError = GetLastError()
MsgBox "Impossible de modifier la priorité." & _
vbCrLf & vbCrLf & CStr(LastError)
End If
End Sub
Retour à la liste des API |