vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Re: Priorität ändern 
Autor: Norbert
Datum: 16.05.02 10:18

Für die eigene ANwendung schon. Bei fremden Anwendungen brauchst Du die ProzessId, dann geht es, wenn Du die Berechtigung dazu hast.

'Anmerkung: Der Tip sollte als kompilierte Exe getestet werden.
' Weiterhin machen sich die Änderungen der Priori-
' täten zeitlich nur dann deutlich bemerkbar, wenn
' Das System stark bis schwer ausgelastet ist.

Option Explicit

Private Declare Function GetCurrentThread Lib "kernel32" () _
As Long

Private Declare Function GetCurrentProcess Lib "kernel32" () _
As Long

Private Declare Function SetThreadPriority Lib "kernel32" (ByVal _
hThread As Long, ByVal nPriority As Long) As Long

Private Declare Function SetPriorityClass Lib "kernel32" (ByVal _
hProcess As Long, ByVal dwPriorityClass As Long) As Long

Private Declare Function GetThreadPriority Lib "kernel32" (ByVal _
hThread As Long) As Long

Private Declare Function GetPriorityClass Lib "kernel32" (ByVal _
hProcess As Long) As Long

Const THREAD_BASE_PRIORITY_IDLE = -15
Const THREAD_BASE_PRIORITY_LOWRT = 15
Const THREAD_BASE_PRIORITY_MIN = -2
Const THREAD_BASE_PRIORITY_MAX = 2

Const THREAD_PRIORITY_LOWEST = THREAD_BASE_PRIORITY_MIN
Const THREAD_PRIORITY_HIGHEST = THREAD_BASE_PRIORITY_MAX
Const THREAD_PRIORITY_ABOVE_NORMAL = (THREAD_PRIORITY_HIGHEST - 1)
Const THREAD_PRIORITY_BELOW_NORMAL = (THREAD_PRIORITY_LOWEST + 1)
Const THREAD_PRIORITY_IDLE = THREAD_BASE_PRIORITY_IDLE
Const THREAD_PRIORITY_NORMAL = 0
Const THREAD_PRIORITY_TIME_CRITICAL = THREAD_BASE_PRIORITY_LOWRT
Const THREAD_PRIORITY_ERROR_RETURN = &H7FFFFFFF


Const IDLE_PRIORITY_CLASS = &H40
Const NORMAL_PRIORITY_CLASS = &H20
Const HIGH_PRIORITY_CLASS = &H80
Const REALTIME_PRIORITY_CLASS = &H100

Dim hThread&, hProcess&
Dim optT&, optC&

Private Sub Form_Load()
Dim Thread$, Class$

hThread = GetCurrentThread
hProcess = GetCurrentProcess

If GetPriority(Thread, Class) = True Then
Label1.Caption = Thread
Label2.Caption = Class
Call SetThreadPriority(hThread, THREAD_PRIORITY_NORMAL)
Call SetPriorityClass(hProcess, NORMAL_PRIORITY_CLASS)
optT = 5
optC = 1
Else
MsgBox ("Fehler!")
Unload Me
End If
End Sub

Private Sub Command1_Click()
Dim lT&, lC&, Thread$, Class$

Select Case optT
Case 0: lT = THREAD_PRIORITY_LOWEST
Case 1: lT = THREAD_PRIORITY_HIGHEST
Case 2: lT = THREAD_PRIORITY_ABOVE_NORMAL
Case 3: lT = THREAD_PRIORITY_BELOW_NORMAL
Case 4: lT = THREAD_PRIORITY_IDLE
Case 5: lT = THREAD_PRIORITY_NORMAL
Case 6: lT = THREAD_PRIORITY_TIME_CRITICAL
End Select

Select Case optC
Case 0: lC = IDLE_PRIORITY_CLASS
Case 1: lC = NORMAL_PRIORITY_CLASS
Case 2: lC = HIGH_PRIORITY_CLASS
Case 3: lC = REALTIME_PRIORITY_CLASS
End Select

Call SetThreadPriority(hThread, lT)
Call SetPriorityClass(hProcess, lC)

If GetPriority(Thread, Class) = True Then
Label1.Caption = Thread
Label2.Caption = Class
Else
MsgBox ("Fehler!")
Unload Me
End If
End Sub

Private Sub Command2_Click()
Dim x&, y&, z As Single

z = Timer
For x = 0 To 5000000
y = Sqr(4435)
Next x
z = Timer - z
Me.Caption = z
End Sub

Private Sub Option1_Click(Index As Integer)
optC = Index
End Sub

Private Sub Option2_Click(Index As Integer)
optT = Index
End Sub

Private Function GetPriority(T$, C$) As Boolean
Dim lThread&, lClass&

lThread = GetThreadPriority(hThread)
lClass = GetPriorityClass(hProcess)
If lThread = THREAD_PRIORITY_ERROR_RETURN Or lClass = 0 Then
Exit Function
End If

GetPriority = True

Select Case lClass
Case IDLE_PRIORITY_CLASS: C = "IDLE_PRIORITY_CLASS"
Case NORMAL_PRIORITY_CLASS: C = "NORMAL_PRIORITY_CLASS"
Case HIGH_PRIORITY_CLASS: C = "HIGH_PRIORITY_CLASS"
Case REALTIME_PRIORITY_CLASS: C = "IREALTIME_PRIORITY_CLASS"
End Select

Select Case lThread
Case THREAD_PRIORITY_LOWEST: T = "LOWEST"
Case THREAD_PRIORITY_HIGHEST: T = "HIGHEST"
Case THREAD_PRIORITY_ABOVE_NORMAL: T = "ABOVE_NORMAL"
Case THREAD_PRIORITY_BELOW_NORMAL: T = "BELOW_NORMAL"
Case THREAD_PRIORITY_IDLE: T = "IDLE"
Case THREAD_PRIORITY_NORMAL: T = "NORMAL"
Case THREAD_PRIORITY_TIME_CRITICAL: T = "TIME_CRITICAL"
End Select
T = "THREAD_PRIORITY_" & T
End Function
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Priorität ändern99USSEraser16.05.02 10:01
Re: Priorität ändern132Norbert16.05.02 10:18
Re: Priorität ändern44USSEraser06.07.02 12:00
Re: Priorität ändern357unbekannt06.07.02 12:17
Re: Priorität ändern91USSEraser06.07.02 16:08
Re: Priorität ändern328unbekannt06.07.02 16:18
Re: Priorität ändern45USSEraser06.07.02 18:18
Re: Priorität ändern335ModeratorDieter06.07.02 18:24
Re: Priorität ändern88USSEraser06.07.02 18:29

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 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