Функция GetPriorityClass

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

Функция GetPriorityClass получает текущий класс приоритета, назначенный процессу.

Возвращаемое значение

В успешном случае возвращается класс приоритета заданного процесса. В случае ошибки возвращается 0. Для получения кода ошибки используйте GetLastError. Классом приоритета процесса является одно из нижеследующих значений:
Const ABOVE_NORMAL_PRIORITY_CLASS = &8000Процесс, который имеет приоритет выше NORMAL_PRIORITY_CLASS, но ниже HIGH_PRIORITY_CLASS
Const BELOW_NORMAL_PRIORITY_CLASS = &4000Процесс, который имеет приоритет выше IDLE_PRIORITY_CLASS, но ниже NORMAL_PRIORITY_CLASS
Const HIGH_PRIORITY_CLASS = &H80 Обозначает процесс, выполняющий критические по времени задачи, которые должны быть выполнены немедленно для того, чтобы запустить их правильно. Потоки процесса высокоприоритетного класса выгружают потоки процессов нормального класса или класса приоритета в бездействующей системе. Пример - Список задач Windows, который должен быстро отреагировать, когда вызывается пользователем, независимо от загрузки на операционной системе. Высокоприоритетный класс используйте крайне осторожно, потому что программа высокоприоритетного класса, ограниченная возможностями процессора, может использовать почти все циклы доступа к нему
Const IDLE_PRIORITY_CLASS = &H40Обозначает процесс, потоки которого запускаются только тогда, когда система неактивна и выгружается потоками любого процесса, запущенного с более высоким классом приоритета. Пример - программа-заставка (хранитель экрана). Класс приоритета в бездействующей системе наследуется дочерними процессами.
Const NORMAL_PRIORITY_CLASS = &H20Обозначает нормальный процесс, который не нуждается в специальных мерах диспетчеризации
Const REALTIME_PRIORITY_CLASS = &H100Обозначает процесс, который имеет самый высокий возможный приоритет. Потоки процесса класса приоритета исполнения в реальном времени выгружают потоки всех других процессов, включая процессы операционной системы, выполняющие важные задачи. Например, процесс реального времени, который работает больше, чем очень краткий промежуток времени, может стать причиной того, что дисковые кэши не станут сбрасывать на диск или причиной того, что мышь будет не реагирующей.

Параметры

hProcess
Дескриптор процесса

Пример

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_BELOW_NORMAL = (THREAD_PRIORITY_LOWEST + 1)
Const THREAD_PRIORITY_ABOVE_NORMAL = (THREAD_PRIORITY_HIGHEST - 1)
Const THREAD_PRIORITY_IDLE = THREAD_BASE_PRIORITY_IDLE
Const THREAD_PRIORITY_NORMAL = 0
Const THREAD_PRIORITY_TIME_CRITICAL = THREAD_BASE_PRIORITY_LOWRT
Const HIGH_PRIORITY_CLASS = &H80
Const IDLE_PRIORITY_CLASS = &H40
Const NORMAL_PRIORITY_CLASS = &H20
Const REALTIME_PRIORITY_CLASS = &H100
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
Private Declare Function GetCurrentThread Lib "kernel32" () As Long
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long

    Dim hThread As Long, hProcess As Long

    ' получим текущий поток и процесс
    hThread = GetCurrentThread
    hProcess = GetCurrentProcess

    ' устанавливаем низкий приоритет новому потоку
    SetThreadPriority hThread, THREAD_PRIORITY_LOWEST

    ' устанавливаем новый класс приоритета в "idle"
    SetPriorityClass hProcess, IDLE_PRIORITY_CLASS

    ' Выводим результаты на экран
    Me.AutoRedraw = True
    Me.Print "Current Thread Priority:" + Str$(GetThreadPriority(hThread))
    Me.Print "Current Priority Class:" + Str$(GetPriorityClass(hProcess))

Смотри также

GetThreadPriority, SetPriorityClass, SetThreadPriority

Категория

Процессы и потоки