已经解决,谢谢大家!这是我写的函数。也贡献给遇到相同问题的人。<br><br>//----------------------------------------------------------------------------//<br>//功能 :获取关联文件类型的图标。 //<br>//参数 :ext : 文件扩展名。 //<br>//返回值 : 提取的图标句柄。 //<br>//----------------------------------------------------------------------------//<br>function GetAssociatedFileIcon(ext : String) : THandle;<br>var<br> tmpReg : TRegistry;<br> tmpItem, PathName : string;<br> ipos : integer;<br> Index : word;<br>begin<br> result := 0;<br> tmpReg := TRegistry.Create;<br> with TmpReg do<br> begin<br> try<br> RootKey := HKEY_CLASSES_ROOT;<br> if OpenKey(ext, false) then<br> begin<br> tmpItem := ReadString(''); //读某项的缺省值好像这样才能读出来,奇怪。<br> CloseKey;<br> TmpItem := TmpItem + '/DefaultIcon';<br> if OpenKey(tmpItem, False) then<br> begin<br> tmpItem := ReadString('');<br> CloseKey;<br> iPos := pos(',', TmpItem);<br> if iPos > 0 then<br> begin<br> PathName := Copy(TmpItem,1, iPos - 1);<br> Index := StrToInt(Copy(TmpItem,iPos + 1, Length(TmpItem) - iPos));<br> Result := ExtractAssociatedIcon(Hinstance, Pchar(PathName), Index);<br> end;<br> end;<br> end;<br> finally<br> Free;<br> end;<br> end;<br>end;<br>