Windowsコード集 上のページ

#0016 プロセス優先度の制御

起動しているプログラム(プロセス)の優先度を変更する方法です。
意地でもプログラムを高速にしたい人向け(笑)

//
// この関数は、カレントプロセス(起動しているプログラム自身)の優先度を変更するものです。
// 引数の詳細については、SetPriorityClassを参考にしてください。
//
BOOL SetPriorityClassMacro(DWORD p)
{
    HANDLE op = OpenProcess(PROCESS_ALL_ACCESS,TRUE,GetCurrentProcessId());
    return SetPriorityClass(op,p);
}



// 最優先で実行するようにする
SetPriorityClassMacro(HIGH_PRIORITY_CLASS);

// システムがアイドル時にのみ実行するようにする
SetPriorityClassMacro(IDLE_PRIORITY_CLASS);


ここで注意しなければならないのが、REALTIME_PRIORITY_CLASSというパラメータです。
もし、プログラム内部でディスパッチ等をほとんど行っていない処理がある場合、OS自身をフリーズさせる事になります。 それだけ強い優先度を設定できるので、使い方によっては MS-DOSやWindows 3.1に匹敵する快適な処理(32bitで動作する事を考慮すると、もしかするとそれを凌駕するかも…)を行えます。
正に諸刃の剣です(笑)


上のページ