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 SetPriorityClass

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

Description :
(Origine : Phil - Mail : pplancon@chello.fr)

La fonction permet de définir au système
les niveaux de priorité d'exécution des processus en cours.
hProcess est le handle du processus dont on souhaite modifier la priorité.
dwPriorityClass est la nouvelle priorité à attribuer au processus (voir constantes plus bas).

ATTENTION : AVEC LE NIVEAU REALTIME_PRIORITY_CLASS VOUS JOUEZ AVEC LE FEU. UN SEUL PROCESSUS PEUT AVOIR CETTE PRIORITE EN MEME TEMPS QUI LE PLACE AU DESSUS DES EVENEMENTS SYSTEMES. IL SE PEUT QUE VOUS NE PUISSIEZ PLUS BOUGER LA SOURIS, PLUS UTILISER LE CLAVIER DANS LE CAS DE BOUCLE INFINIE (LA SEULE SOLUTION EST DE REBOOTER SA MACHINE).

ConstanteValeur Définition
IDLE_PRIORITY_CLASS&H40 Priorité minimum.
BELOW_NORMAL_PRIORITY_CLASS&H4000 Priorité en dessous de normal.
NORMAL_PRIORITY_CLASS&H20 Priorité normale.
ABOVE_NORMAL_PRIORITY_CLASS&H8000 Priorité au dessus de normal.
HIGH_PRIORITY_CLASS&H80 Priorité haute.
REALTIME_PRIORITY_CLASS&H100 Priorité maximum (temps réel).

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

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