獲取process 下的所有object handle |
答題得分者是:anyone
|
waterful0
一般會員 ![]() ![]() 發表:7 回覆:12 積分:3 註冊:2006-07-12 發送簡訊給我 |
問題如下:
在取得process id 或process handle 後,我想取得在這process 內所使用到的所有 object handle, 那麼我應該要用什麼 api或是方法來取得呢? 舉例來說: process A 開啟了一個 a.tmp 的檔案(非共享模式),此時process B 列舉了系統所有的process, 並取得了process A的 id 及handle , 那麼接下來要如何取得process A 開啟 a.tmp 的handle呢? 類似 processXp.exe之類的功能。 感謝。 編輯記錄
waterful0 重新編輯於 2007-08-14 11:19:24, 註解 無‧
|
anyone
中階會員 ![]() ![]() ![]() 發表:1 回覆:63 積分:52 註冊:2007-02-12 發送簡訊給我 |
列取所有Handle用GetParent看看它的Parent是否為A
或是PID去判斷是否相同的,就抓出來 若這兩者都無法的話,那可能得由FindWindow去尋找了。 ===================引 用 waterful0 文 章=================== 問題如下: 在取得process id 或process handle 後,我想取得在這process 內所使用到的所有 object handle, 那麼我應該要用什麼 api或是方法來取得呢? 舉例來說: process A 開啟了一個 a.tmp 的檔案(非共享模式),此時process B 列舉了系統所有的process, 並取得了process A的 id 及handle , 那麼接下來要如何取得process A 開啟 a.tmp 的handle呢? 類似 processXp.exe之類的功能。 感謝。
編輯記錄
anyone 重新編輯於 2007-08-14 12:00:07, 註解 無‧
|
waterful0
一般會員 ![]() ![]() 發表:7 回覆:12 積分:3 註冊:2006-07-12 發送簡訊給我 |
procedure TForm1.Button1Click(Sender: TObject);
var fs: Tfilestream; begin fs:= TfileStream.Create(edit1.Text, fmOpenReadWrite); try label1.Caption := format('processID =%d, handle =%d, form Handle =%d',[GetCurrentProcessID(), application.Handle, handle]); label2.Caption := format('fs.Handle =%d',[fs.Handle]); memo1.Lines.Add(format('Parent Handle =%d',[GetParent(fs.Handle)])); showmessage('stop'); finally fs.Free; fs:= nil; end; end; <xml id="_topicdata" pagetype="function" proj="WinUIHXS" name="GetParent" pubpath="/winui/WindowsUserInterface/Windowing/Windows/WindowReference/WindowFunctions/GetParent.htm"><!-- topic data --> <xml id="_topicdata" pagetype="function" proj="WinUIHXS" name="GetParent" pubpath="/winui/WindowsUserInterface/Windowing/Windows/WindowReference/WindowFunctions/GetParent.htm"><!-- topic data -->
編輯記錄
waterful0 重新編輯於 2007-08-14 14:35:24, 註解 無‧
|
anyone
中階會員 ![]() ![]() ![]() 發表:1 回覆:63 積分:52 註冊:2007-02-12 發送簡訊給我 |
對,GetParent 似乎只能對視窗起作用
若你要找xxx.exe之類的 就用PID的方法,去找尋它的Parent PID做比對 找xxx.exe的方法用一下搜尋就可以找到 ===================引 用 waterful0 文 章=================== procedure TForm1.Button1Click(Sender: TObject); var ? fs: Tfilestream; begin ? fs:= TfileStream.Create(edit1.Text, fmOpenReadWrite); ? try ??? label1.Caption := format('processID =%d, handle =%d, form Handle =%d',[GetCurrentProcessID(), application.Handle, handle]); ??? label2.Caption := format('fs.Handle =%d',[fs.Handle]); ??? memo1.Lines.Add(format('Parent Handle =%d',[GetParent(fs.Handle)])); ??? showmessage('stop'); ? finally ??? fs.Free; ??? fs:= nil; ? end; end; <!--Element not supported - Type: 9 Name: #document--> <!--Element not supported - Type: 9 Name: #document--> |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |