Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 31.01.2013, 01:08
Slackerok Slackerok вне форума
Прохожий
 
Регистрация: 27.11.2012
Сообщения: 20
Репутация: 10
По умолчанию Свернуть/скрыть все окна кроме своей формы

Всем привет! Я новичок в Delphi) Прошу помощи экспертов. Мне нужно добавить процедуру чтобы свернулись/скрылись все окна раб. стола кроме своей формы.
Допустим играет Winamp или просматриваю картинки. Я запускаю project.exe и все активные окна сворачиваются кроме project2.exe
Помогите сделать плиз) Нашел в Google такой код:

Код:
var WH:HWnd;
begin
WH:=Handle;
 repeat
  WH:=GetNextWindow(WH,GW_HWNDNEXT);
  if (GetParent(WH)=0)and(not IsIconic(WH))and(IsWindowVisible(WH)) then
  PostMessage(WH,WM_SYSCOMMAND,SC_MINIMIZE,0);
 until WH=0;

Но здесь сворачиваются все окна.
Ответить с цитированием
  #2  
Старый 31.01.2013, 01:25
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Сравнивай найденный хендл со своим и не трогай или после сворачивания всех своё разверни.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Этот пользователь сказал Спасибо angvelem за это полезное сообщение:
Slackerok (31.01.2013)
  #3  
Старый 31.01.2013, 01:32
Slackerok Slackerok вне форума
Прохожий
 
Регистрация: 27.11.2012
Сообщения: 20
Репутация: 10
По умолчанию

Спасибо за оперативный ответ! Я понял в теории как сделать, вот практика немного хромает(... Если можете объясните пожалуйста поподробнее с примерами кода.
Ответить с цитированием
  #4  
Старый 31.01.2013, 01:41
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Проверил, с этим кодом сворачиваются все окна, кроме запущенного приложения.
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
  Wnd : HWND;
begin
  Wnd := Handle;
  repeat
    Wnd := GetNextWindow(Wnd, GW_HWNDNEXT);
    if (GetParent(Wnd) = 0) and (not IsIconic(Wnd)) and (IsWindowVisible(Wnd)) then
      PostMessage(Wnd, WM_SYSCOMMAND, SC_MINIMIZE, 0);
  until Wnd = 0;
end;
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Этот пользователь сказал Спасибо angvelem за это полезное сообщение:
Slackerok (31.01.2013)
  #5  
Старый 31.01.2013, 02:06
Slackerok Slackerok вне форума
Прохожий
 
Регистрация: 27.11.2012
Сообщения: 20
Репутация: 10
По умолчанию

Да, но если допустим использовать процедуру с таймером вместе, тогда сворачивается и основная форма... А мне нужно чтобы форма так сказать стояла на месте при любых случаях...
Ответить с цитированием
  #6  
Старый 31.01.2013, 02:08
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Причём тут таймер? Код выполняется ДО всего остального.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Этот пользователь сказал Спасибо angvelem за это полезное сообщение:
Slackerok (31.01.2013)
  #7  
Старый 31.01.2013, 02:18
Slackerok Slackerok вне форума
Прохожий
 
Регистрация: 27.11.2012
Сообщения: 20
Репутация: 10
По умолчанию

ну да вы правы, но допустим мне нужно чтобы сворачивалось всегда Winamp, или вообще все окна всегда сворачиваются кроме моей формы. Как это сделать? Конечно же легче таймером создать цикл? Нет? Вот в этом цикле при тестах данный код сворачивает все окна, в том числе и нашу форму за них...
Ответить с цитированием
  #8  
Старый 31.01.2013, 02:26
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Все сворачиваются кроме запущенного приложения.
Вложения
Тип файла: rar minimize.rar (2.3 Кбайт, 50 просмотров)
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Этот пользователь сказал Спасибо angvelem за это полезное сообщение:
Slackerok (31.01.2013)
  #9  
Старый 31.01.2013, 03:16
Slackerok Slackerok вне форума
Прохожий
 
Регистрация: 27.11.2012
Сообщения: 20
Репутация: 10
По умолчанию

Код работает, но попробуйте создать цикл с таймером чтобы сворачивание шло допустим каждые 1 секунд, увидите что сворачивается и наша форма. А нам ведь нужно чтобы она не сворачивалась) Вот пример:
Вложения
Тип файла: 7z minimize.7z (5.6 Кбайт, 21 просмотров)
Ответить с цитированием
  #10  
Старый 31.01.2013, 03:21
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

На кой спрашивается это нужно? Хочется извращений, пожалуйста, но такие вещи так не делаются.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Этот пользователь сказал Спасибо angvelem за это полезное сообщение:
Slackerok (31.01.2013)
  #11  
Старый 31.01.2013, 09:18
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Не проще ли на отдельный десктоп перепрыгнуть, как это делает "cureit!"?
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение:
Slackerok (31.01.2013)
  #12  
Старый 31.01.2013, 09:24
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
if (GetParent(Wnd) = 0) and (not IsIconic(Wnd)) and (IsWindowVisible(Wnd)) and (Application.Handle<>Wnd) then
Цитата:
Сообщение от M.A.D.M.A.N.
Не проще ли на отдельный десктоп перепрыгнуть, как это делает "cureit!"?
действительно
__________________
Пишу программы за еду.
__________________

Последний раз редактировалось NumLock, 31.01.2013 в 09:31.
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
Slackerok (31.01.2013)
  #13  
Старый 31.01.2013, 13:49
Slackerok Slackerok вне форума
Прохожий
 
Регистрация: 27.11.2012
Сообщения: 20
Репутация: 10
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
Не проще ли на отдельный десктоп перепрыгнуть, как это делает "cureit!"?

Интересно) Можно поподробнее об этом?
Ответить с цитированием
  #14  
Старый 31.01.2013, 15:31
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

CreateDesktop function (Windows)
CreateProcess function (Windows)
Цитата:
typedef struct _STARTUPINFO {
DWORD cb;
LPTSTR lpReserved;
LPTSTR lpDesktop;
LPTSTR lpTitle;
DWORD dwX;
DWORD dwY;
DWORD dwXSize;
DWORD dwYSize;
DWORD dwXCountChars;
DWORD dwYCountChars;
DWORD dwFillAttribute;
DWORD dwFlags;
WORD wShowWindow;
WORD cbReserved2;
LPBYTE lpReserved2;
HANDLE hStdInput;
HANDLE hStdOutput;
HANDLE hStdError;
} STARTUPINFO, *LPSTARTUPINFO;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
Slackerok (31.01.2013)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:56.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025