Changer la priorite de l'appli

Soyez le premier à donner votre avis sur cette source.

Vue 1 287 fois - Téléchargée 200 fois

Description

Comment changer la priorité de votre application ?

Mettez les Declaration Suivantes :

Source / Exemple :


Option Explicit
Public Const NORMAL_PRIORITY_CLASS = &H20
Public Const IDLE_PRIORITY_CLASS = &H40
Public Const HIGH_PRIORITY_CLASS = &H80
Public Const REALTIME_PRIORITY_CLASS = &H100
Public Const PROCESS_DUP_HANDLE = &H40

Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Public Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Public Declare Function SetPriorityClass& Lib "kernel32" (ByVal hProcess As Long, ByVal dwPriorityClass As Long)

' Puis mettez ce code dans votre Module :

Public Sub ChangePriority(dwPriorityClass As Long)

    Dim hProcess&
    Dim ret&, pid&
    pid = GetCurrentProcessId() ' Récupérer Mon No de Process
    ' Récupérer un Handle pour le Process
    hProcess = OpenProcess(PROCESS_DUP_HANDLE, True, pid)

    If hProcess = 0 Then
        Err.Raise 2, "ChangePriority", "Impossible d'ouvrir le process"
        Exit Sub
    End If

    ' Change le priorité
    ret = SetPriorityClass(hProcess, dwPriorityClass)
    ' Fermeture du Handle du Process
    Call CloseHandle(hProcess)

    If ret = 0 Then
        Err.Raise 4, "ChangePriority", "Impossible de Fermer le process"
        Exit Sub
    End If
End Sub

Private Sub Form_Load()
    Timer1.Interval = 2000
    Call Timer1_Timer
End Sub

Private Sub Timer1_Timer()
    Static Priority&

    If Priority = IDLE_PRIORITY_CLASS Then
        Priority = HIGH_PRIORITY_CLASS
        Label1.Caption = "Priorité HAUTE !"
    Else
        Label1.Caption = "Priorité RALENTI"
        Priority = IDLE_PRIORITY_CLASS
    End If

    Call ChangePriority(Priority)
End Sub

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
7
Date d'inscription
jeudi 7 octobre 2004
Statut
Membre
Dernière intervention
5 novembre 2005

Bonjour !

Ce code ne marche pas pour moi non plus !!!! Il me sort pid=-1 et hProcess=0 dans tous les cas (j'ai remplacé getcurrentprocessid par getcurrentprocess).
Si j'utilise err.LastDLLError il me sort 87 (paramètres incorrects). Où est l'erreur ? Dans pid=-1 ou est-ce un problème de droit (erreur dans le paramètre Process_dup_handle) ???
Merci pour votre aide !
EvilGost, as-tu réussi à faire marcher ce code ?
Je suis sous XP.
Messages postés
235
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
16 mai 2011
2
marche pas pour moi:
hProcess = OpenProcess(PROCESS_DUP_HANDLE, True, pid) donne hprocess à 0....
Messages postés
23
Date d'inscription
jeudi 10 janvier 2002
Statut
Membre
Dernière intervention
3 décembre 2003

Ca ne marche pas ton code et je viens de trouver pourquoi.
Dans ta déclaration, C'EST PAS GetCurrentProcessId MAIS GetCurrentProcess TOUT COURT.

Voila, j'espère que tu en tiendras compte.

Ciao
Messages postés
78
Date d'inscription
dimanche 21 avril 2002
Statut
Membre
Dernière intervention
7 juillet 2003

Sauf erreur de ma part, le &, c'est pour les Long ...
Messages postés
78
Date d'inscription
dimanche 21 avril 2002
Statut
Membre
Dernière intervention
7 juillet 2003

La priorité d'une application, c'est la façon dont le système va distribuer le temps processeur disponible en fonction de la demande. Plus la priorité est haute, plus le programme s'exécutera vite, par contre, si le programme utilise beaucoup de puissance, il risque de bloquer le reste du système pendant tout le temps de ses calculs.

Par exermple, tu compresses un fichier. Ca prend un temps fou et ça te gonfle. Tu passes alors ton logiciel de compression en temps réel, ton système se bloque, mais la compression s'accélère grandement, car le processeur est réservé à cette application. Quand elle a terminé, elle ne calcule plus, la souris se remet à bouger, et tu est content, car tu as gagné plein de temps !!!
Afficher les 10 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.