知道視窗控制代碼如何知道檔案名稱? 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;
謝謝