- 人气:
- 放大
- 缩小
- 二维码
- 赞赏
delphi 根据进程ID获取程序ICO图标
uses Winapi.ShellAPI,
Winapi.TlHelp32;
function GetProcessFullPath(APid: Cardinal): string;
var
hModuleSnap: THandle;
ModuleEntry: TModuleEntry32;
begin
Result := '';
hModuleSnap := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, APid);
if (hModuleSnap = INVALID_HANDLE_VALUE) then Exit;
try
FillChar(ModuleEntry, SizeOf(TModuleEntry32), #0);
ModuleEntry.dwSize := SizeOf(TModuleEntry32);
if not Module32First(hModuleSnap, ModuleEntry) then Exit;
Result := PChar(@ModuleEntry.szExePath[0]);
finally
CloseHandle(hModuleSnap);
end;
end;
function GetProcessIco(APid: Cardinal): HICON;
var
lpiIcon: Word;
begin
lpiIcon := 0;
Result := ExtractAssociatedIcon(HInstance,PChar(GetProcessFullPath(APid)), lpiIcon);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Image1.Picture.Icon.Handle:=GetProcessIco(17036);
end;
效果图: