どうにか、スクリプトでプロセス優先度を変更したかったのでちょっと調べてみた。
この辺見ると、やりたい事そのものがあったんだけど、古いせいかこのままじゃ動かなかったんで修正してみた。
テストコードと使い方
メモ帳をいくつか起動しておく。
下記スクリプトを拡張子vbsで保存してダブルクリックすると、起動されている全てのメモ帳のプロセス優先度の設定が通常以下に変更される。
'ChangePriorityTest.vbs
Const P_IDLE = 64
Const P_BELOW_NORMAL = 16384
Const P_NORMAL = 32
Const P_ABOVE_NORMAL = 32768
Const P_HIGH_PRIORITY = 128
Const P_REALTIME = 256
Set cimv2 = GetObject("winmgmts:\\.\root\cimv2")
Set pslist = cimv2.ExecQuery _
("SELECT * FROM Win32_Process WHERE Name='notepad.exe'")
For Each ps in pslist
ps.SetPriority(P_BELOW_NORMAL)
Next
SetPriorityをP_HIGH_PRIORITY やP_REALTIMEにすると、優先度を高やリアルタイムに変更できる。
notepad.exeを変更したい実行ファイル名に変えればそのプロセスが変更できる。
COMオブジェクトとして呼んでるっぽいから、wscriptだけじゃなくて、pythonやmatlabからでもこんな感じで使えそう。
注意点: 管理者として起動しているプロセスは、このスクリプトも管理者として実行しないと変更できない。
新しく起動するなら、下記の様な感じで、コマンドラインからbatとかで走らせるのが簡単そう。
start /high %SystemRoot%\notepad.exe
autohotkeyみたいに、それ自体がプロセスプライオリティの設定持ってれば簡単なんだけど。
参考
検索用: .wsh,.UWSC,.js,jscript



コメント