我主要的.exe程序与形式的.dll文件。 从.EXE我可以创建和显示来自.dll文件的形式,但它没有任务栏图标(在左上方的一个小)。 我想从另一个DLL加载此图标。 我如何能做到这一点吗?
Answer 1:
下面是你需要做的事情。 我已经不包含太多的细节,因为你的问题有个小细节,有没有办法,我确切地知道你会如何融入你的程序了这一切。 问题的关键是使其在较高的水平,你需要做什么明确的。
加载包含资源的DLL
为此,使用LoadLibrary
或LoadLibraryEx
。 如果你需要调用的代码在DLL中使用了前者。 否则,使用后者的传球LOAD_LIBRARY_AS_IMAGE_RESOURCE
。 这两个函数产生模块手柄, HMODULE
。
从DLL加载图标
传HMODULE
到LoadIcon
或LoadImage
从资源加载图标。 这将产生一个HICON
。 赋值给该Handle
的一个实例的属性TIcon
。
指定的图标形式
指定您在上一步中所获得的图标对象Icon
的形式财产。
Answer 2:
非常感谢你。 我想是这样Form.Icon.Assign(图标);但是它创造AV错误消息。 这里是工作的代码:
procedure TformOptions.FormCreate(Sender: TObject);
var
lib: THandle;
icon: TIcon;
begin
icon := TIcon.Create;
lib := LoadLibrary('res.dll');
if lib > 0 then icon.Handle := LoadIcon(lib, 'ICON2');
if icon.Handle > 0 then Application.Icon.Assign(icon);
icon.Free;
FreeLibrary(lib);
end;
文章来源: Delphi - Change taskbar icon