获得外部程序的图标
function GetFileIcon(const Filename:String; SmallIcon:Boolean):HICON;
var info:TSHFILEINFO;
    Flag: Integer;
begin
  if SmallIcon then Flag:=(SHGFI_SMALLICON or SHGFI_ICON)
  else Flag:=(SHGFI_LARGEICON or SHGFI_ICON);
  SHGetFileInfo(Pchar(Filename),0,info,Sizeof(info),Flag);
  Result:=info.hIcon;
end;

解决方案 »

  1.   

    to luoweicaisd(笑三少):我不是取那种文件的图标,我现在要取的是,
    在任务栏上显示了的、运行中程序的图标;我现在可以把每个程序标题栏
    上的Caption取出来,怎么得到图标?谢谢
      

  2.   

    谢谢呀~~~~谁帮我解决了我再加到50分吧~~UP一下也有分,先谢谢了~~~~~http://www.delphibbs.com/delphibbs/dispq.asp?lid=1197381也是一样的问题哦
      

  3.   

    如果你能取得窗口的句柄,我就有办法取得窗口的图标,信吗?我刚做过这种程序。
    假设WND是你取得的窗口的句柄(怎么取,k@#$%^&*,FindWindow相信你会用吧
    function MyGetWindowIcon(wnd:hwnd):hicon;
    begin
      result:=getclasslong(wnd,gcl_hicon);
      if result=0 then
        result:=sendmessage(wnd,wm_geticon,icon_big,0);
    end;
    //返回值:
      0: 表示失败,取不到图标
      非0:成功,取到图标用法:
    var
      ico:hicon;
    begin
      ico:=myGetWindowIcon(wnd);
      if ico<>0 then
        image1.picture.icon.handle:=ico
      else
        showmessage('this window has no icon');
    end;--------------------------------
    风过西窗客渡舟船无觅处
    年年一川新草遥看却似旧
      

  4.   

    to toplor(霜天晓竹):其实我的和你的也差不多。把图标显示在Image上,有时可
    以显示出来,有时显示的不是选定的程序的图标,更多的是根本就不能显示~~
    而改成 Buttonx.Glyph.Handle:=MyGetWindowIcon(wnd); 就根本显示不出来~~继续顶顶~~~~~~
      

  5.   

    可能你取得的WND有点问题,此处的Wnd是指在任务栏上显示的按钮的Wnd,是每个程序中所有窗口的父窗口,用这个方法试试吧:得到WND之后,取它的父窗口的句柄
      Wnd:=findwindow(此处加上你自己的代码);
      Wnd:=GetParent(Wnd);
      ico:=MyGetWindowIcon(Wnd);
    -------------------------------------------------------------------
    风过西窗客渡舟船无觅处
    年年一川新草遥看却似旧