begin process at 2008 07 04 08:55:51
1 204 518 membres
60 nouveaux aujourd'hui
14 116 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CHANGER LA PRIORITE DE L'APPLI


Information sur la source

Catégorie :Système Classé sous : priorité, changer, application, setpriorityclass Niveau : Expert Date de création : 15/05/1999 Vu / téléchargé: 7 375 / 478

Note :
8 / 10 - par 10 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note


Description

Comment changer la priorité de votre application ?

Mettez les Declaration Suivantes :

Source

  • 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
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
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

  • signaler à un administrateur
    Commentaire de madVinz le 07/07/2002 02:16:48

    la meme chose existe pour les threads ...
    A noter que REALTIME_PRIORITY_CLASS peut provoquer des plantages, comme le curseur de la souris qui ne bouge plus

  • signaler à un administrateur
    Commentaire de gg00xiv le 15/08/2002 02:58:19

    c koi le "&" que tu met un peu partout ?

  • signaler à un administrateur
    Commentaire de gg00xiv le 15/08/2002 03:00:44

    et au fait : ret c'est le retour de la fonction SetPriorityClass, donc si ret =0 c'est que la nouvelle priorite n'a pas pu etre appliquee, et non que le process n'a pas pu etre fermé

  • signaler à un administrateur
    Commentaire de SuperClic le 20/08/2002 17:54:31

    Suis débutantCé koi la priorié d'un appli ???

  • signaler à un administrateur
    Commentaire de Jujufouq le 28/10/2002 14:32:33

    ---> gg00xiv
    Je ne sais plus à quoi correspond ce "&", mais je sais que c'est un truc comme les "$" pour les strings, les "%" pour les integers.... etc. Donc, ne change pas où t'auras peut-être des erreurs.

  • signaler à un administrateur
    Commentaire de Tidus le 01/12/2002 19:40:36

    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 !!!

  • signaler à un administrateur
    Commentaire de Tidus le 01/12/2002 19:41:30

    Sauf erreur de ma part, le &, c'est pour les Long ...

  • signaler à un administrateur
    Commentaire de Cask le 03/12/2003 18:34:49

    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

  • signaler à un administrateur
    Commentaire de EvilGost le 17/02/2005 12:42:30

    marche pas pour moi:
    hProcess = OpenProcess(PROCESS_DUP_HANDLE, True, pid) donne hprocess à 0....

  • signaler à un administrateur
    Commentaire de grandvizir le 21/05/2005 10:25:19

    Par analogie, j'ai bien plus simple (avec "+efficace" sous-entendu)
    http://www.delphifr.com/code.aspx?id=11810

    Ca tient en 1 ligne...

  • signaler à un administrateur
    Commentaire de bogros le 29/10/2005 15:19:15

    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.

Ajouter un commentaire

Pub



Appels d'offres

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS