Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Минимизация внешних приложений в Delphi-приложениях: запуск Notepad.exe один раз

Delphi , ОС и Железо , Windows

Минимизация внешних приложений в Delphi-приложениях

Иногда в процессе разработки приложений на Delphi возникает необходимость управлять внешними приложениями, к которым у нас нет доступа. Одним из таких примеров является задача минимизации внешнего приложения, такого как Notepad.exe, при этом предполагается, что это приложение запущено всего один раз.

Описание проблемы

Как минимизировать внешнее приложение, над которым у нас нет контроля, изнутри нашего Delphi-приложения? Например, нужно минимизировать Notepad.exe, предполагая, что приложение будет запущено только один раз.

Решение проблемы

Для решения этой задачи можно использовать функции WinAPI, такие как FindWindow и ShowWindow. Функция FindWindow позволяет найти окно приложения по его классу или названию, а функция ShowWindow – скрыть или минимизировать найденное окно.

Пример кода

var
  Indicador: HWND;
begin
  // Поиск окна по классу
  Indicador := FindWindow(PChar('notepad'), nil);
  // Если окно найдено
  if (Indicador <> 0) then begin
    // Минимизация окна
    ShowWindow(Indicador, SW_MINIMIZE);
  end;
end;

Важное замечание

В некоторых случаях FindWindow(PChar('notepad'), nil) может возвращать 0, и для решения этой проблемы можно использовать альтернативный подход с функцией, которая ищет окно по названию:

function FindWindowByTitle(WindowTitle: string): HWND;
var
  NextHandle: HWND;
  NextTitle: array[0..260] of char;
begin
  // Получаем первое окно
  NextHandle := GetWindow(Application.Handle, GW_HWNDFIRST);
  while NextHandle > 0 do
  begin
    // Получаем его текст
    GetWindowText(NextHandle, NextTitle, 255);
    if Pos(WindowTitle, StrPas(NextTitle)) <> 0 then
    begin
      Result := NextHandle;
      Exit;
    end
    else
      // Получаем следующее окно
      NextHandle := GetWindow(NextHandle, GW_HWNDNEXT);
  end;
  Result := 0;
end;

procedure hideExWindow()
var
  Indicador: HWND;
begin
  // Поиск окна по названию
  Indicador := FindWindowByTitle('Notepad');
  // Если окно найдено
  if (Indicador <> 0) then
  begin
    // Минимизация
    ShowWindow(Indicador, SW_HIDE); // или SW_MINIMIZE
  end;
end;

Ограничения

Обратите внимание, что данный подход не будет работать в Windows Vista и выше, если ваше приложение не запущено с повышенными привилегиями.

Заключение

В данной статье мы рассмотрели, как минимизировать внешнее приложение из Delphi-приложения, используя функции WinAPI. Представленные примеры кода демонстрируют, как можно найти и управлять окнами приложений, не входящих в состав вашего приложения. Это может быть полезно в различных сценариях разработки, когда требуется взаимодействие с внешними процессами.

Создано по материалам из источника по ссылке.

Минимизация внешних приложений в Delphi-приложениях включает использование функций WinAPI для поиска и управления окнами приложений, над которыми нет прямого контроля.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Windows ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 12:09:45/0.0035660266876221/0