{
First Start Notepad.exe and run this code:
Starte zuerst Notepad.exe und fьhre dann diesen Code aus:
}procedure TForm1.Button1Click(Sender: TObject);
var
hwindow : THandle;
H: HIcon;
begin
hwindow := FindWindow('notepad',nil);
H := CopyIcon(GetClassLong(hwindow, GCL_HICON ));
DrawIcon(Canvas.Handle, 30, 30, H);
end;
Here is the translation of the text into Russian:
Код написан на Delphi и используется для получения иконки внешнего окна (в этом случае, Notepad.exe) и рисования ее на канвасе формы.
Следующий код работает следующим образом:
Процедура Button1Click вызывается при клике кнопки с текстом "Starte zuerst Notepad.exe und fühe dann diesen Code aus:".
Функция FindWindow используется для поиска окна с заголовком 'notepad'. Эта функция возвращает.handle окна.
Функция GetClassLong используется для получения классового длинного окна, который содержит информацию о классе окна. В этом случае она используется для получения иконки, связанной с классом (GCL_HICON).
Функция CopyIcon используется для копирования иконки из класса.
Наконец, функция DrawIcon используется для рисования иконки на канвасе формы.
Вот улучшенная версия кода:
procedure TForm1.Button1Click(Sender: TObject);
var
hWindow: THandle;
H: HICON;
begin
// Найти окно Notepad
hWindow := FindWindow(nil, 'notepad');
if hWindow <> 0 then
begin
// Получить иконку окна Notepad
H := CopyIcon(GetClassLong(hWindow, GCL_HICON));
// Рисовать иконку на канвасе
Canvas.Draw(30, 30, IconFromHandle(H));
// Освободить ресурсы иконки
DestroyIcon(H);
end;
end;
В этой версии кода добавлена проверка ошибок для обеспечения того, что функция FindWindow нашла валидное окно перед попыткой получить его иконку. Также освобождаются ресурсы иконки с помощью функции DestroyIcon, чтобы предотвратить утечку памяти.
Примечание: Функция DrawIcon не является частью стандартной библиотеки Delphi и может не работать как ожидалось. Вместо этого можно использовать Canvas.Draw:
В статье описывается способ получения иконки другого окна в приложении Delphi с помощью функции FindWindow для поиска окна, а затем CopyIcon для копирования его иконки.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS