delphi 根据进程ID获取程序ICO图标  
官方Delphi 学习QQ群: 682628230(三千人)
频道

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;

效果图:


推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.059608936309814 seconds