Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/26: Рейтинг темы: голосов - 26, средняя оценка - 4.65
0 / 0 / 1
Регистрация: 17.07.2013
Сообщений: 59

Как свернуть все окна кроме нашей формы?

18.07.2013, 11:14. Показов 5625. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нашёл в интернете интересный код:
Кликните здесь для просмотра всего текста
Как свернуть все окна системы ?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
// Любимая наша процедура.
{Для того чтобы использовать данный пример необходимо наличие кнопки button1.}
function enumminiproc (wd: hwnd;
param: longint): boolean;
stdcall;
// Обязательно stdcall !!!
begin
if wd<>form1.handle then // если это не наша программа
if iswindowvisible(wd) then // если окно видимо
if not isiconic(wd) then // если окно не свернуто
if iswindow(wd) then // и вообще это - окно.
showwindow(wd, sw_minimize);
// свернем его.
enumproc := true;
// продолжаем перебирать все окна системы.
end;
 
procedure tform1.button1click(sender: : tobject);
// допустим, закрываем по нажатию на клавишу
begin
enumwindows (@enumminiproc, 0);
// отрабатываем сворачивание окон.
end;
 
Для того чтобы окно программы тоже сворачивалось достаточно убрать строку if wd<>form1.handle then в enumminiproc
Конечно, можно поставить еще массу условий, по которым будут минимизироваться окна, но это уже дело конкретной задачи.
Еще один пример, который бывает зачастую нужен:
2) Как закрыть (или постоянно закрывать) окна, например содержащие в заголовке подстроку «Реклама»
Закрыть все окна, содержащие определенную подстроку в заголовке.
const
reclamaname : string = 'Реклама' ;
// строка, по которой мы узнаем, что это - реклама.
timeinterval : integer = 500;
// Интервал, с которым будем проверять наличие окон
{Для того чтобы использовать данный пример необходимо наличие таймера timer1.}
// Любимая наша процедура
function enumcloseproc (wd: hwnd;
param: longint): boolean;
stdcall;
// Обязательно stdcall !!!
var
nm:array[0..255] of char;
// буфер для имени
zname:string;
 
begin
getwindowtext(wd,nm,255);
// считываем текст заголовка окна
zname:=ansiuppercase(string(nm));
// преобразуем к верхнему регистру т.е РЕКЛАМА
if pos(reclamaname,zname)<>0 then sendmessage(wd,wm_syscommand,sc_close,0);
enumproc := true;
// продолжаем перебирать все окна системы.
end;
 
procedure tform1.timer1timer(sender: tobject);
// будем проверять по таймеру…
begin
timer1.interval:= timeinterval;
// установим время до следующего вызова
enumwindows (@enumcloseproc, 0);
// отрабатываем закрытие окон.
end;
Понятно, что настоящая реклама не дает себе таких заголовков, но общий принцип
останется тем же, а так попробуйте поискать общее в заголовках окна, названии классов окна и т.п.
Кроме того, использование таймера чревато тем, что окон в системе очень много
и за установленный интервал времени все окна не будут отработаны, это приведет
к замедлению работы системы.
Но решение данной подзадачки автор оставляет за читателем,
благо особых сложностей с этим нет (увеличения интервала времени, установка
логического условия о том, что проверка уже идет, вставка оператора application.processmessages и проч.)
На этом все возможности этих функций api не исчерпываются,
но общий принцип отображения чужих окон, закрытия,
перемещения и прокрутки изложен, дальше нужно от конкретной задачи.

Copied from: http://articles.org.ru/cfaq/index.php?qid=997

Но при компилирование вылезает ошибка "Undeclared identifier: 'enumproc'
В чем ошибка?
P.S Я ставлю это на таймер.

Добавлено через 39 минут
Написал вместо enumproc := true; - enumminiproc теперь сворачивает всё вместе с формой.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.07.2013, 11:14
Ответы с готовыми решениями:

Свернуть все формы, кроме главной
Допустим у меня в проекте 10 форм, можно ли как то свернуть все формы разом? - Код для сворачивания всех форм кроме Form1. Что-бы не...

Свернуть все окна, кроме окна программы
здравствуйте. как программно свернуть все окна кроме окна самой программы

Как свернуть все окна?
Всем привет,у меня вопрос,как свернуть все окна системы?что бы все они свернулись? прошу код,среда Visual Studio Express 2012.

10
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33377 / 21501 / 8236
Регистрация: 22.10.2011
Сообщений: 36,896
Записей в блоге: 11
18.07.2013, 11:18
Delphi
1
2
3
4
5
6
7
8
9
10
11
function enumminiproc (wd : hwnd; param: LPARAM) : BOOL; stdcall;
begin
  if wd<>form1.handle then // если это не наша программа
    if iswindowvisible(wd) then // если окно видимо
      if not isiconic(wd) then // если окно не свернуто
        if iswindow(wd) then // и вообще это - окно.
          showwindow(wd, sw_minimize);
  // свернем его.
  Result := true;
  // продолжаем перебирать все окна системы.
end;
0
angstrom
18.07.2013, 11:20
Цитата Сообщение от HiRusSai Посмотреть сообщение
сворачивает всё вместе с формой.
Delphi
1
  if wd<>form1.handle then // если это не наша программа
Данная проверка не срабатывает.
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33377 / 21501 / 8236
Регистрация: 22.10.2011
Сообщений: 36,896
Записей в блоге: 11
18.07.2013, 11:25
Сказки не надо рассказывать. Всё срабатывает... Проверено. На WinXP, ибо с Семеркой будут другие проблемы, например, гаджеты, которые тоже будут минимизироваться, хотя мне это на фиг не надо...

А на Win7 мне это бы и не надо было: есть AeroShake, который и так сбросит все остальные окна, когда я потрясу своё "за шкирку" Да еще и восстановит, когда потрясу еще раз...
0
0 / 0 / 1
Регистрация: 17.07.2013
Сообщений: 59
18.07.2013, 11:33  [ТС]
Не знаю сворачивается все почему-то...
Можно как-то по другому проверить?
0
angstrom
18.07.2013, 11:40
Цитата Сообщение от UI Посмотреть сообщение
Проверено. На WinXP
Проверяй, но на XP форма сворачивается.
0 / 0 / 1
Регистрация: 17.07.2013
Сообщений: 59
18.07.2013, 11:44  [ТС]
Цитата Сообщение от angstrom Посмотреть сообщение
Проверяй, но на XP форма сворачивается.
Ага...
0
angstrom
18.07.2013, 11:53
Немного изменил
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
function EnumMiniProc(Wnd : HWND; Param : Longint) : Boolean; stdcall;
begin
  Result := True;
  if (Wnd = Param) or (Wnd = Application.Handle) then
    Exit
  else if isWindowVisible(Wnd) and not isIconic(Wnd) and isWindow(Wnd) then
    ShowWindow(Wnd, SW_MINIMIZE);
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
  EnumWindows(@EnumMiniProc, Handle);
end;
0 / 0 / 1
Регистрация: 17.07.2013
Сообщений: 59
18.07.2013, 11:56  [ТС]
Цитата Сообщение от angstrom Посмотреть сообщение
Немного изменил
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
function EnumMiniProc(Wnd : HWND; Param : Longint) : Boolean; stdcall;
begin
  Result := True;
  if (Wnd = Param) or (Wnd = Application.Handle) then
    Exit
  else if isWindowVisible(Wnd) and not isIconic(Wnd) and isWindow(Wnd) then
    ShowWindow(Wnd, SW_MINIMIZE);
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
  EnumWindows(@EnumMiniProc, Handle);
end;
Спасибо!
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33377 / 21501 / 8236
Регистрация: 22.10.2011
Сообщений: 36,896
Записей в блоге: 11
18.07.2013, 12:49
Цитата Сообщение от angstrom Посмотреть сообщение
роверяй, но на XP форма сворачивается.
Радиус кривизны рук - ключ к ответу. И глаз - тоже... Если я написал, что проверено - значит, проверено. И форма не сворачивается. Что там происходит у вас - мне нет никакого дела, я доверяю своим глазам больше, чем чьим-то словам... Меньше надо ломаные версии Дельфи и Windows устанавливать - больше программ будет работать как задумано...
0
angstrom
18.07.2013, 13:01
Цитата Сообщение от UI Посмотреть сообщение
мне нет никакого дела
Кто бы сомневался, я давно заметил за вами нежелание признавать свои ошибки.
Дельфи и Windows у меня лицензионные.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.07.2013, 13:01
Помогаю со студенческими работами здесь

Как запретить сворачивание окна приложения при нажатии кнопки "свернуть все окна"
Что происходит при нажатии этой кнопки в плане сообщениий, и как их перехватить и игнорировать,что бы окно не сворачивалось? Чем это...

Предотвратить сворачивание окна по нажатию кнопки Windows «Свернуть все окна»
Здравствуйте, пишу что то вроде гаджета на c# wpf, и возник вопрос: можно ли как нибудь предотвратить сворачивание окна при нажатии...

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

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

Как сделать прозрачным все кроме одного окна?
Есть страничка с меню. В меню нажимаю кнопку, появляется форма. Нужно, чтобы при открытии формы сама форма была полностью непрозрачной, а...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru