我有SHGetFileInfo的问题 . 我使用FPC 2.6.2与Lazarus 1.0.14,这里是代码:
procedure x;
var
FI: SHFILEINFO;
icon: ticon;
begin
SHGetFileInfo('app.exe', 0, FI, SizeOf(FI), SHGFI_SYSICONINDEX or SHGFI_ICON or SHGFI_LARGEICON);
icon := TIcon.Create;
icon.Handle := FI.hIcon;
icon.SaveToFile('extracted.ico');
end;
问题是它生成带有黑色背景的图标文件而不是透明的 . 这是它的样子:
http://i.imgur.com/5BF3xbT.jpg
当我在Delphi中编译相同的代码时,它完美地工作 . 图标具有透明背景 .
如果有人能帮助我解决这个问题,我将不胜感激:-)
1 回答
我以前有同样的问题 . LCL似乎不能完全支持TIcon,因此您必须使用其他类似的组件 . 我尝试过TKIcon并且它有效 . 你可以在这里找到http://www.tkweb.eu/en/delphicomp/kicon.html
我发布了一个示例程序来提取图标 . 这很简单 .