如何取某一程式之Process ? |
尚未結案
|
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
|
wyndog
資深會員 發表:7 回覆:362 積分:348 註冊:2004-10-12 發送簡訊給我 |
|
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
|
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
|
wyndog
資深會員 發表:7 回覆:362 積分:348 註冊:2004-10-12 發送簡訊給我 |
OK 我搞清楚了,不過,有點複雜,不曉得有沒有比較簡單的方法
先說一下流程,我沒 Try 也不知道可不可以用就是了 以 SetPriorityClass 來說的話,要傳進去的是 Process Handle
而 FindWindow 傳回來的是 Window Handle
所以我們要想辦法把 Window Handle 轉成 Process Handle 再來以 GetWindowThreadProcessID 來講,它的參數有二
前為 Window Handle 後為傳回來的 ProcessID
所以,你只要後面給它傳回值(不設成 nil) GetWindowThreadProcessID( hWin, ProcessID) 這樣就轉成 ProcessID,不過,ProcessID 不是 Process Handle
所以還要再一個步驟 用 OpenProcess(PROCESS_SET_INFORMATION, 0, ProcessID)
就會傳回來 Process Handle
讓你可以放到 SetPriorityClass 去設定優先權 邏輯上大致是這麼做,如果可行的話,請告訴我一些
就麻煩你測試看看了
|
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
謝謝前輩 測試後己可以成功設定如下:
procedure TForm1.Button1Click(Sender: TObject);
var
hWin:HWND;
ProcessID: DWORD ;
Process:THandle ;
begin
hWin:= findwindow(nil, Pchar('未命名 - 記事本')) ;
GetWindowThreadProcessID( hWin, ProcessID) ;
Process:= OpenProcess(PROCESS_SET_INFORMATION,false, ProcessID);
SetPriorityClass( Process,REALTIME_PRIORITY_CLASS) ; end;
----------------------------------------------------
但 謂何無法取得GetPriorityClass()
會一定傳回0 如下,不知那錯了?? procedure TForm1.Button2Click(Sender: TObject);
var
hWin:HWND;
ProcessID: DWORD ;
Process:THandle ;
begin
hWin:= findwindow(nil, Pchar('未命名 - 記事本')) ;
GetWindowThreadProcessID( hWin, ProcessID) ;
Process:= OpenProcess(PROCESS_SET_INFORMATION,false, ProcessID);
showmessage(inttostr( GetPriorityClass( Process))) ; end; 謝謝前輩.....
|
wyndog
資深會員 發表:7 回覆:362 積分:348 註冊:2004-10-12 發送簡訊給我 |
引言: Process:= OpenProcess(PROCESS_SET_INFORMATION,false, ProcessID);改成 Process := OpenProcess(PROCESS_QUERY_INFORMATION, False, ProcessID); 順便列出他們的值 #define NORMAL_PRIORITY_CLASS 0x00000020 #define IDLE_PRIORITY_CLASS 0x00000040 #define HIGH_PRIORITY_CLASS 0x00000080 #define REALTIME_PRIORITY_CLASS 0x00000100 所以,你應該會得到 256 |
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
引言:原來是要改參數,,,我可要多學學英語了 萬份感謝引言: Process:= OpenProcess(PROCESS_SET_INFORMATION,false, ProcessID);改成 Process := OpenProcess(PROCESS_QUERY_INFORMATION, False, ProcessID); 順便列出他們的值 #define NORMAL_PRIORITY_CLASS 0x00000020 #define IDLE_PRIORITY_CLASS 0x00000040 #define HIGH_PRIORITY_CLASS 0x00000080 #define REALTIME_PRIORITY_CLASS 0x00000100 所以,你應該會得到 256 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |