Changer la priorite de l'appli

Soyez le premier à donner votre avis sur cette source.

Vue 1 546 fois - Téléchargée 269 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
bogros Messages postés 6 Date d'inscription jeudi 7 octobre 2004 Statut Membre Dernière intervention 5 novembre 2005
29 oct. 2005 à 15:19
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.
EvilGost Messages postés 235 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 mai 2011 2
17 févr. 2005 à 12:42
marche pas pour moi:
hProcess = OpenProcess(PROCESS_DUP_HANDLE, True, pid) donne hprocess à 0....
cs_Cask Messages postés 23 Date d'inscription jeudi 10 janvier 2002 Statut Membre Dernière intervention 3 décembre 2003
3 déc. 2003 à 18:34
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
cs_Tidus Messages postés 78 Date d'inscription dimanche 21 avril 2002 Statut Membre Dernière intervention 7 juillet 2003
1 déc. 2002 à 19:41
Sauf erreur de ma part, le &, c'est pour les Long ...
cs_Tidus Messages postés 78 Date d'inscription dimanche 21 avril 2002 Statut Membre Dernière intervention 7 juillet 2003
1 déc. 2002 à 19:40
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 !!!

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.