知道視窗控制代碼如何知道檔案名稱?

來源:互聯網
上載者:User
知道視窗控制代碼如何知道檔案名稱? Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiAPI/html/delphi_20061108114249281.html
知道視窗控制代碼,怎麼得到該程式的檔案名稱???

先通過GetWindowThreadProcessId取得視窗所屬進程的PID,再通過枚舉系統進程,得到該進程的檔案名稱。枚舉進程可以通過系統快照:CreateToolhelp32Snapshot,   Process32First,   Process32Next等API來進行。

詳細點啊

uses   tlhelp32;  
   
  function   CrnGetExeFileFromWindow(hWin:   HWND):   string;  
  var  
          dwPID:   DWORD;  
          strExePath:   String;  
          pToolhelp:   THandle;  
          pe:   TProcessEntry32;  
          me:   TModuleEntry32;  
          bOK:   bool;  
  begin  
          GetWindowThreadProcessId(hWin,   @dwPID);  
          //   建立系統快照  
          pToolhelp   :=   CreateToolhelp32Snapshot(TH32CS_SNAPALL,   dwPID);  
          //   擷取可執行檔的路徑  
          if   Win32Platform   <>   VER_PLATFORM_WIN32_NT   then   //   Win9x  
          begin  
                  ZeroMemory(@pe,   SizeOf(pe));  
                  pe.dwSize   :=   SizeOf(pe);  
                  bOK   :=   Process32First(pToolhelp,   pe);  
                  while(bOK)   do  
                  begin  
                          if   pe.th32ProcessID   =   dwPID   then  
                          begin  
                                  strExePath   :=   pe.szExeFile;  
                                  break;  
                          end;  
                          bOK   :=   Process32Next(pToolhelp,   pe);  
                  end;  
          end  
          else   //   WinNT  
          begin  
                  ZeroMemory(@me,   SizeOf(me));  
                  me.dwSize   :=   SizeOf(me);  
                  Module32First(pToolhelp,   me);  
                  strExePath   :=   me.szExePath;  
          end;  
          CloseHandle(pToolhelp);  
          Result   :=   strExePath;  
  end;  
   
  procedure   TForm1.Button1Click(Sender:   TObject);  
  var  
          hWin:   THandle;  
  begin  
          //   這裡替換成你要查詢的視窗控制代碼就可以了,我隨便指定了一個值。  
          hWin   :=   THandle($008C0302);    
          ShowMessage(CrnGetExeFileFromWindow(hWin));  
  end;

謝謝

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.