none
如何用程式執行路徑去取得真正執行的ProcessId or Handle? RRS feed

  • 問題

  • 開發環境: w7 +vs2010

    請問一下,如何用程式執行路徑去取得真正執行的ProcessId or Handle? 情形如下所述

    假如我有程式執行路徑,我用Process.start執行後,可藉由此得到許多資訊,比如Handle,而有了Handle後

    我可以用許多判斷加上call win32 API去取得此視窗的圖(如果它是有視窗的話),到目前是我都OK的部分,

    但有某些程式,比如Adobe,執行路徑假設C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe

    它其實執行起來會有2個Process在跑,像這種有辦法用程式執行路徑去取得真正執行的ProcessId嗎?



    • 已編輯 小貓貓 2015年4月27日 上午 03:20
    2015年4月27日 上午 03:08

解答

  • 您可以取得Process利用Process的FileName知道應用程式所在的資料夾, 像這樣:

    Process process = GetProcessHowever();
    string fullPath = process.Modules[0].FileName;

    • 已標示為解答 小貓貓 2015年4月28日 上午 02:26
    2015年4月27日 上午 08:21
  • Process.GetProcesses 取回 Process 陣列

    再用

    Process.MainModule 過濾掉你不要的

    得到

    Process.Id

    跟工作管理員比對。

    再進一步描述你的問題。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    • 已標示為解答 小貓貓 2015年4月28日 上午 02:26
    2015年4月27日 下午 03:10

所有回覆

  • 您可以取得Process利用Process的FileName知道應用程式所在的資料夾, 像這樣:

    Process process = GetProcessHowever();
    string fullPath = process.Modules[0].FileName;

    • 已標示為解答 小貓貓 2015年4月28日 上午 02:26
    2015年4月27日 上午 08:21
  • Process.GetProcesses 取回 Process 陣列

    再用

    Process.MainModule 過濾掉你不要的

    得到

    Process.Id

    跟工作管理員比對。

    再進一步描述你的問題。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    • 已標示為解答 小貓貓 2015年4月28日 上午 02:26
    2015年4月27日 下午 03:10