Чтобы ответить на вопрос в заголовке вашего поста:
Чтобы получить TIcon
из HWND
, то есть получить значок, связанный с окном (не обязательно в вашем собственном приложении), выполните что-то вроде
procedure TForm1.FormClick(Sender: TObject);
var
HIco: HICON;
Icon: TIcon;
begin
HIco := SendMessage(Handle, WM_GETICON, ICON_BIG, 0);
if HIco = 0 then
HIco := SendMessage(Handle, WM_GETICON, ICON_SMALL2, 0);
Icon := TIcon.Create;
try
Icon.ReleaseHandle;
Icon.Handle := HIco;
// Do something with Icon, for instance
Canvas.Draw(10, 10, Icon);
finally
Icon.Free;
end;
end;
Чтобы использовать значок окна HWND
в качестве значка собственной формы, выполните
procedure TForm1.FormClick(Sender: TObject);
var
HWin: HWND;
HIco: HICON;
begin
HWin := FindWindow(nil, 'New file'); // A Rejbrand Text Editor window
HIco := SendMessage(HWin, WM_GETICON, ICON_BIG, 0);
if HIco = 0 then
HIco := SendMessage(HWin, WM_GETICON, ICON_SMALL2, 0);
Self.Icon.ReleaseHandle; // important!
Self.Icon.Handle := HIco;
end;