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

Сворачивание всех окон

Delphi , Программа и Интерфейс , Приложения чужие

Сворачивание всех окон


function MyCallback(Wnd: THandle;Param: integer): boolean; stdcall;
var
  style: longint;
  tsb, rabst: integer;
begin
  tsb:=FindWindow('Shell_TrayWnd', nil);
  rabst:=FindWindow('ProgMan', 'Program Manager');
  Result := Wnd <> 0;
  style:=GetWindowLong(wnd,GWL_EXSTYLE);
  style:=style and WS_EX_TOPMOST;
  if Result and IsWindowVisible(Wnd)and (not IsIconic(WND)) and (wnd<>tsb) and
  (wnd<>rabst) and (wnd<>FindWindow('Indicator',nil)) and
  (style<>WS_EX_TOPMOST)and(wnd<>form1.handle)then
  begin
    ShowWindow(Wnd,sw_hide);
    ShowWindow(Wnd,Param);
  end;
end;


procedure ShowAllWindows(Cmd: integer);
begin
  EnumWindows(@MyCallback,Cmd);
end;

теперь в любом месте программы, когда необходимо свернуть окна вызываем функцию:


ShowAllWindows(SW_SHOWMINIMIZED);

Программа на Delphi, которая использует Windows API для перебора всех окон и скрытия/минимизации их, если они соответствуют определенным условиям. Пусть я разбью ее для вас:

Функция MyCallback Эта функция-обработчик будет вызвана для каждого окна, найденного функцией EnumWindows. Функция принимает два параметра: Wnd (handle текущего окна) и Param (целочисленный параметр, переданный из вызывающего процесса).

Вот, что функция делает:

  1. Она находит три конкретных окна по имени с помощью FindWindow: Shell_TrayWnd, ProgMan и Indicator. Эти окна, вероятно, являются системными трей-иконами, программным менеджером и индикатором.
  2. Если текущее окно не является одним из этих специальных окон, функция проверяет, если:
    • Окно видимо (IsWindowVisible).
    • Оно не является иконизированным окном (IsIconic).
    • Оно не является окнами Shell_TrayWnd, ProgMan или Indicator.
    • Флаг стиля окна WS_EX_TOPMOST не установлен (значит, оно не всегда находится на переднем плане).
  3. Если все эти условия выполняются, функция скрытия/минимизации окна с помощью ShowWindow с параметрами sw_hide и Param.

Процедура ShowAllWindows Эта процедура вызывает EnumWindows для перебора всех окон и передает указатель на функцию MyCallback как обработчик. Параметр Cmd - целочисленный, определяющий действие, которое нужно выполнить для каждого окна (в этом случае SW_SHOWMINIMIZED для скрытия/минимизации).

Использование Чтобы использовать эту функциональность в вашем программе Delphi, просто вызовите ShowAllWindows с желаемым параметром (например, SW_SHOWMINIMIZED) при необходимости скрыть/минимизировать все окна.

Вот пример использования:

procedure TForm1.MinimizeAllWindows;
begin
  ShowAllWindows(SW_SHOWMINIMIZED);
end;

Код будет минимальизировать все окна, когда форма инициализируется или происходит другой событий.

Функция ShowAllWindows с помощью EnumWindows и MyCallback сворачивает все открытое окно, кроме трея Shell_TrayWnd, Program Manager, иконок и форм form1, а также если окно уже свернуто.


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

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




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


:: Главная :: Приложения чужие ::


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:56:25/0.0038101673126221/0