Delphi - 更改任务栏图标

Delphi - Change taskbar icon

我有主要的 .exe 应用程序和带有表单的 .dll。从 .exe 我可以从 .dll 创建和显示表单,但它没有任务栏图标(和左上角的小图标)。我想从另一个 DLL 加载这个图标。请问我该怎么做?

以下是您需要做的事情。我没有包含太多细节,因为你的问题没有什么细节,而且我无法确切地知道你将如何将所有这些都融入你的程序中。重点是在高层次上明确你需要做什么。

加载包含资源的 DLL

使用 LoadLibraryLoadLibraryEx 执行此操作。如果需要调用 DLL 中的代码,请使用前者。否则使用后者传递 LOAD_LIBRARY_AS_IMAGE_RESOURCE。这两个函数都会产生一个模块句柄,HMODULE.

从 DLL 加载图标

HMODULE 传递给 LoadIconLoadImage 以从资源加载图标。这些将产生 HICON。将其分配给 TIcon.

实例的 Handle 属性

将图标分配给表单

将您在上一步中获得的图标对象分配给表单的 Icon 属性。

非常感谢。我尝试了类似 Form.Icon.Assign(Icon); 的方法,但它创建了 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;