请教ExtractAssociatedIcon这个函数的用法,送上200分(200分)

  • 主题发起人 主题发起人 Campo
  • 开始时间 开始时间
C

Campo

Unregistered / Unconfirmed
GUEST, unregistred user!
HICON ExtractAssociatedIcon(<br><br>&nbsp; &nbsp; HINSTANCE hInst, // application instance handle<br>&nbsp; &nbsp; LPTSTR lpIconPath, // path and filename of file for which icon is wanted<br>&nbsp; &nbsp; LPWORD lpiIcon // pointer to icon index<br>&nbsp; &nbsp;);<br>ExtractAssociatedIcon函数的各个参数的含义是什么?<br>比如<br>HINSTANCE hInst, // application instance handle<br>application instance handle是什么东西?<br><br>这个函数有什么作用,如何得到图标索引的句柄?如何使用这个函数?<br>能否举个实例?<br><br>请各位大虾援手。<br><br><br>&nbsp; &nbsp;
 
HICON ExtractAssociatedIcon(<br><br>&nbsp; &nbsp; HINSTANCE hInst, // 当前应用程序的实例句柄。<br>&nbsp; &nbsp; LPTSTR lpIconPath, // 指定一个文件名,准备从该文件中提取图标。<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//如果文件并非执行程序或DLL本身,但通过系统注册<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//表与一个可执行文件关联,就用这个字串装载可执行程序的名字<br>&nbsp; &nbsp; LPWORD lpiIcon // 在其中装载图标在可执行文件中的资源标识符<br>&nbsp; &nbsp;);<br><br>实例:<br><br>使用 &nbsp; &nbsp;ExtractAssociatedIcon函数得到ICON,再使用TImageList的AddIcon<br><br>&nbsp; &nbsp; &nbsp;Icon := TIcon.Create;<br>&nbsp; &nbsp; &nbsp;Icon.Handle := ExtractAssociatedIcon(HInstance, TempFile, 0);<br>&nbsp; &nbsp; &nbsp;ImageList1.AddIcon(Icon);<br><br><br>
 
您所说的TempFile是什么文件呢,可以是任何文件或目录吗?<br>得到的图标句柄是这个文件的图标还是这个资源文件里面的图标索引?<br>不明白这些,我无法应用,请大虾继续赐教。<br>
 
还有请问HINSTANCE hInst 这个参数如何赋值,在Delphi中我怎么试都不行
 
关注此问题,以前我也试过,不过没有成功。<br>请问ExtractAssociatedIcon(HInstance, TempFile, 0);这个函数到底怎么用呢?<br>Histance在实际程序中应该如何使用呢(可否给个小例子)?<br><br>请wjiachun指教
 
最后一个问题,HInstance如何赋值,请大虾帮忙,200分马上送上!
 
1。TempFile是任意文件或文件夹<br>2。HInstance不要赋值 :)<br>3。你不会忘了uses ShellAPI 吧??<br><br><br>实例一个,已经通过:<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>var &nbsp;Icon:TIcon;<br>&nbsp; &nbsp; &nbsp;h:HIcon;<br>&nbsp; &nbsp; &nbsp;IconIndex:word;<br>begin<br>&nbsp; &nbsp; IconIndex:=0;<br>&nbsp; &nbsp; Icon := TIcon.Create;<br>&nbsp; &nbsp; h:= ExtractAssociatedIcon(HInstance, 'C:/', IconIndex);<br>&nbsp; &nbsp; icon.handle:=h;<br>&nbsp; &nbsp; DrawIcon(Form1.Canvas.Handle,10,10,h);<br>end;
 
谢谢您的帮助,程序是通过了,但不能提取图标,我在您的程序<br>h:= ExtractAssociatedIcon(HInstance, 'C:/', IconIndex);<br>icon.handle:=h;<br>之间插入<br>ShowMessage(IntToStr(h));<br>显示h为0;<br>把路径‘C:/’该为某个.exe文件的路径都不行,<br>百思不得其解,请帮忙。<br><br>&nbsp; &nbsp;
 
急切想知道答案,请大侠无论如何都要帮忙!
 
这个问题我问过了,看看下面的代码,var <br>&nbsp;h:hicon;<br>&nbsp;iconindex:word;<br>&nbsp;ShFileInfo: TSHFILEINFO;<br>begin<br>&nbsp; iconindex:=0;<br>&nbsp; ShGetFileInfo(pchar(OpenFilen), 0, SHFileInfo, SizeOf(SHFileInfo),<br>&nbsp; SHGFI_SMALLICON or SHGFI_SYSICONINDEX or SHGFI_TYPENAME);<br>&nbsp; h := SHFileInfo.hIcon;<br>&nbsp; Drawicon(form1.Canvas.handle ,0,0,h);<br>end; <br>还有问题可以看看我的问题《如何讀取exe的圖標到speedbutton上(99分)》<br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=583151<br><br>
 
&gt;&gt;谢谢您的帮助,程序是通过了,但不能提取图标,我在您的程序<br>那没办法了,我这里显示图标了 :)<br>PWin98SE+Delphi5
 
谢谢wjiachun, luyear两位的帮助,您们的程序在win98能运行并提取图标,<br>但在我的win2000server就不行,图标Handle为0,别人的xp上也是如此,<br>难道是2000的图标机制和98不同?难道是2000的问题?<br><br>郁闷,请各位大虾再次援手,彻底解决这个问题,愿意再加200分。
 
问题我已经解决,只要在ShGetFileInfo中多加一个参数SHGFI_ICON<br>就能成功地在2000获取图标,再次感谢luyear和wjiachun的帮助。
 
后退
顶部