| |

Fortgeschrittene ProgrammierungRe: 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 |  |
 | 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 |
  |
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) Neu! sevEingabe 3.0 
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere Infos
|
|
|
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
|
|