プログラミングのメモ帳(C/C++/HSP)

日々のプログラミングで気づいた点や小技集を紹介します。(Windows 10/XP/Vista、VC2017、HSP)

プロセスの優先順位クラスを取得

2008年07月03日 10時26分00秒 | プロセス関連

プロセスの優先順位クラスを取得するにはGetPriorityClass()関数を利用します。(戻る)

  1. プロセスのハンドルを開く(OpenProcess)
  2. プロセスの優先順位クラスを取得(GetPriorityClass)
  3. プロセスのハンドルを閉じる(CloseHandle)

プロセスを開くときにPROCESS_QUERY_INFORMATIONアクセス権を割り当てる必要があります。

定数

定数 意味
REALTIME_PRIORITY_CLASS リアルタイム(R)
HIGH_PRIORITY_CLASS 高(H)
ABOVE_NORMAL_PRIORITY_CLASS 通常以上(A)
NORMAL_PRIORITY_CLASS 通常(N)
BELOW_NORMAL_PRIORITY_CLASS 通常以下(B)
IDLE_PRIORITY_CLASS 底(L)

日本語の表記はタスクマネージャの『優先度の設定(P)』と同じにしています。

プロトタイプ宣言

HANDLE OpenProcess(
    DWORD   dwDesiredAccess,    // アクセス・フラグ
    BOOL    bInheritHandle,     // ハンドルの継承オプション
    DWORD   dwProcessId         // プロセス識別子
);

BOOL CloseHandle(
    HANDLE  hObject             // オブジェクトのハンドル
);

DWORD GetPriorityClass(
    HANDLE  hProcess            // プロセスのハンドル
);

サンプル

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

// break付きのキーワード
#define CASE        break;case
#define DEFAULT     break;default

// メイン関数
int main( int argc, char *argv[] )
{
    DWORD  dwProcessID = GetCurrentProcessId();
    HANDLE  hProcess;
    LPTSTR lpMsg;
    
    if ( argc > 1 ){
        dwProcessID = atoi( argv[1] );
    }
    if ( (hProcess = OpenProcess(PROCESS_QUERY_INFORMATION,FALSE,dwProcessID)) != NULL ){
        switch ( GetPriorityClass(hProcess) ){
            CASE REALTIME_PRIORITY_CLASS:       lpMsg = TEXT("REALTIME_PRIORITY_CLASS『リアルタイム(R)』");
            CASE HIGH_PRIORITY_CLASS:           lpMsg = TEXT("HIGH_PRIORITY_CLASS『高(H)』");
            CASE ABOVE_NORMAL_PRIORITY_CLASS:   lpMsg = TEXT("ABOVE_NORMAL_PRIORITY_CLASS『通常以上(A)』");
            CASE NORMAL_PRIORITY_CLASS:         lpMsg = TEXT("NORMAL_PRIORITY_CLASS『通常(N)』");
            CASE BELOW_NORMAL_PRIORITY_CLASS:   lpMsg = TEXT("BELOW_NORMAL_PRIORITY_CLASS『通常以下(B)』");
            CASE IDLE_PRIORITY_CLASS:           lpMsg = TEXT("IDLE_PRIORITY_CLASS『底(L)』");
            DEFAULT:                            lpMsg = TEXT("open error");
        }
        printf( TEXT("プロセスID        :%lu\n"), dwProcessID );
        printf( TEXT("プロセス・ハンドル:0x%p\n"), hProcess );
        printf( TEXT("プロセスの優先順位:%s\n"), lpMsg );
        CloseHandle( hProcess );
        return 0;
    }
    printf( TEXT("%lu:OpenProcess()関数のエラーです。\n"), GetLastError() );
    return 1;
}

関連記事



コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« プロセスのセッションIDを取得 | トップ | プロセスの時間情報を取得 »
最新の画像もっと見る

コメントを投稿

プロセス関連」カテゴリの最新記事