vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2019
 
zurück
Rubrik: System/Windows · Prozesse/Tasks   |   VB-Versionen: VB4, VB5, VB629.10.04
Prozess-Priorität des eigenen Programms ändern

Dieser Tipp zeigt, wie sich die Prozess-Priorität des eigenen Programms ändern lässt.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  20.008 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

Im Windows-Taskmanager lässt sich über das Kontextmenü im Register "Prozesse" die Priorität der laufenden Prozesse festlegen. Auf diese Weise kann einer Anwendung eine höhere oder auch eine niedrigere Priorität zugewiesen werden. Im Normalfall ist die Prozess-Priorität auf "Normal" eingestellt.

Mit unserem heutigen Tipp möchten wir Ihnen zeigen, wie Sie die Priorität Ihrer eigenen Anwendung direkt aus VB heraus ändern können.

Fügen Sie hierzu nachfolgenden Code in ein Modul ein:

Option Explicit
 
' Benötigte API-Deklarationen
Private Const PROCESS_DUP_HANDLE = &H40
Private Const PROCESS_SET_INFORMATION = &H200
 
Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long
 
Private Declare Function OpenProcess Lib "kernel32" ( _
  ByVal dwDesiredAccess As Long, _
  ByVal bInheritHandle As Long, _
  ByVal dwProcessId As Long) As Long
 
Private Declare Function SetPriorityClass Lib "kernel32" ( _
  ByVal hProcess As Long, _
  ByVal dwPriorityClass As Long) As Long
 
Private Declare Function CloseHandle Lib "kernel32" ( _
  ByVal hObject As Long) As Long
 
' Prioritätsstufen
Public Enum PriorityClass
  IDLE_PRIORITY_CLASS = &H40
  NORMAL_PRIORITY_CLASS = &H20
  HIGH_PRIORITY_CLASS = &H80
  REALTIME_PRIORITY_CLASS = &H100
End Enum
' Prozess-Priorität ändern
Public Sub SetPriority(ByVal nPriority As PriorityClass)
  Dim nPID As Long
  Dim hProcess As Long
 
  ' ProzessID ermitteln
  nPID = GetCurrentProcessId()
 
  ' Prozess-Handle
  hProcess = OpenProcess(PROCESS_DUP_HANDLE + PROCESS_SET_INFORMATION, 1, nPID)
  If hProcess <> 0 Then
    ' Prozess-Priorität setzen
    SetPriorityClass hProcess, nPriority
  End If
 
  ' Handle wieder freigeben
  CloseHandle hProcess
End Sub

Aufrufbeispiel:

' Priorität der eigenen Anwendung auf "hoch" setzen
SetPriority HIGH_PRIORITY_CLASS

Erläuterung der einzelnen Prioritätsstufen:

  • IDLE_PRIORITY_CLASS: Niedrigste Prioritätsstufe. Die Anwendung erhält nur dann Prozessorzeit zugeteilt, wenn sich das System im "Ruhestand" befindet, d.h. kein anderer Prozess mit höherer Prioritätsstufe CPU-Zeit in Anspruch nimmt.
     
  • NORMAL_PRIORITY_CLASS: Normale Prioritätsstufe (Standard).
     
  • HIGH_PRIORITY_CLASS: Hohe Prioritätsstufe. Diese Einstellung ist für Anwendungen gedacht, die zeitkritische Aufgaben erledigen müssen - und das am besten sofort. Prozesse mit niedrigeren Prioritätsstufen enthalten entsprechend weniger Rechenzeit zugeteilt. Verwenden Sie diese Prioritätsstufe sehr sorgfältig und setzen Sie die Prioritätsstufe wieder auf normal, sobald die zeitkritischen Aufgaben erledigt wurden!
     
  • REALTIME_PRIORITY_CLASS: Höchste Prioritätsstufe (Echtzeit). Ist nur für absolute Ausnahmefälle gedacht und muss äußerst sorgfältig und kurzfristig verwendet werden, da diese Prioritätsstufe selbst Windows in den Hintergrund drängt und evtl. notwendige Windows-Zwischenspeicherungen (disk caches) nicht mehr ausgeführt werden können. Unter Umständen kann das Verwenden der "Echtzeit"-Prioritätsstufe auch dazu führen, dass die Maus nicht mehr reagiert!

Dieser Tipp wurde bereits 20.008 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2019 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel