これでいかがでしょうか?
Dim hWnd As Long
Dim dwProcessId As Long
Dim hProcess As Long
hWnd = FindWindow("XLMAIN", vbNullString)
GetWindowThreadProcessId hWnd, dwProcessId
'取得
'hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, dwProcessId)
'Debug.Print Hex$(GetPriorityClass(hProcess))
'CloseHandle hProcess
'設定
hProcess = OpenProcess(PROCESS_SET_INFORMATION, False, dwProcessId)
Debug.Print SetPriorityClass(hProcess, IDLE_PRIORITY_CLASS)
CloseHandle hProcess
ウィンドウを探すことができれば、タスクマネージャから、優先度の設定を行ったことと同じことになると思います。
手順はいいと思います。
各宣言については、以下を参考にして下さい。
具体的な動作は、APIのヘルプなどの資料を参照して下さい。
あと、APIを使用していますので、強制終了されないように、エラーを処理してください。
(前回の回答はエラー処理を省いていましたので、、、)
またわからないことがあればまた補足して下さい。
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" _
(ByVal hWnd As Long, _
lpdwProcessId As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" _
(ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" _
(ByVal hObject As Long) As Long
Private Const PROCESS_SET_INFORMATION = &H200
Private Const PROCESS_QUERY_INFORMATION = &H400
Private Declare Function GetPriorityClass Lib "kernel32" _
(ByVal hProcess As Long) As Long
Private Declare Function SetPriorityClass Lib "kernel32" _
(ByVal hProcess As Long, _
ByVal dwPriorityClass As Long) As Long
Private Const NORMAL_PRIORITY_CLASS = &H20
Private Const IDLE_PRIORITY_CLASS = &H40
Private Const HIGH_PRIORITY_CLASS = &H80
Private Const REALTIME_PRIORITY_CLASS = &H100
補足
回答有難うございます。 手順として 1.FindWindow行で該当のウインドウを探し 2.GetWindowTreadProcessID行でIDを取得後、 3.OpenProcess行で優先度を設定 4.プロセスを開放 …でしょうか。 すいません、一応調べてみたのですが定義した変数に収まる値の正確な内容とりうる範囲が良くわからないです(汗) また、APIの命令が入っている様に思うのですが、これは事前に宣言は不要でしょうか。