GetProcessHndByPID 應用問題 |
答題得分者是:AndrewK
|
g9221712
高階會員 發表:145 回覆:344 積分:162 註冊:2006-07-06 發送簡訊給我 |
if CreateProcess(PChar(Exe_name), PChar(' ' + ARG_STR), nil, nil, true, DETACHED_PROCESS, nil, nil, SI, PI) then
begin WaitForInputIdle(PI.hProcess, INFINITE); repeat twnd := FindMainWindow(PI.dwProcessID); until twnd > 0; RHandle := twnd; end; 我將RHandle這個值存放到DB TABLE後,想要在後續操作, RHandle := GetProcessHndByPID(strtoint(self.TB_NettermWindowsProcessID.FieldByName('NWPID').Text)); P.S.:我發現使用GetProcessHndByPID的值怎麼都是0 GetProcessHndByPID我是參考chris_shieh前輩所撰寫的「Program Name、PID、Window Handle、hProcess 的轉換函式」 http://delphi.ktop.com.tw/board.php?cid=31&fid=79&tid=61654 想透過下列的方式將Netterm視窗標題改變成我需要的資訊,但是一直無法取得正確的 SetWindowText(strtoint(self.TB_NettermWindowsProcessID.FieldByName('NWPID').Text), PChar(trim(self.TB_NettermWindowsProcessID.FieldByName('TiTle').Text))); 但是我發現一直無法取得正確的RHandle,不知道
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」 程式寫的越久,卻發現自己越來越不會寫程式! |
AndrewK
高階會員 發表:6 回覆:151 積分:161 註冊:2006-10-09 發送簡訊給我 |
http://delphi.ktop.com.tw/board.php?cid=30&fid=72&tid=35055
這一篇文章討論為有關於 Process Handle And PID 資訊
------
Just Do It ------------------------- 其實男生不是真的喜歡你不減肥,而是喜歡你愛吃還不肥;也不是真的喜歡你不化妝,而是喜歡你素顏也好看;也不是真的喜歡你瘦,而是喜歡你瘦卻有胸;也不是真喜歡你獨立,而是他忙的時候別煩他。女孩子,太認真你就輸了。 |
ralph
初階會員 發表:41 回覆:82 積分:29 註冊:2003-02-04 發送簡訊給我 |
稍微拜讀chris_shieh, 對於其中一行有問題
[code cpp] // Get Process Handle By Window Handle function GetProcessHndByHWnd(const hWnd: THandle): THandle; var PID: DWORD; AhProcess: THandle; begin if hWnd<>0 then begin GetWindowThreadProcessID(hWnd, @PID); Result:=GetProcessHndByPID(PID); end else Result:=0; end; // Get Process Handle By Process ID function GetProcessHndByPID(const hAPID: THandle): THandle; var AhProcess: THandle; begin if hAPID<>0 then begin AhProcess := OpenProcess(PROCESS_ALL_ACCESS, false, hAPID); Result:=AhProcess; CloseHandle(AhProcess); <== Question? end else Result:=0; end; [/code] 你可以試著用try ... catch去抓error, 用getlasterror去得到內容(Sorry, 我用c language 回答你, 我要去查delphi用什麼去catch error). 在藍色部分, 我懷疑CloseHandle 把AhProcess released, 你可試試放"{}", 在run看看. 你可以試試以上2種方法.
編輯記錄
ralph 重新編輯於 2008-07-18 02:13:17, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |