Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как свернуть все окна? [D6, Win95/98]


Natalia ©   (2003-02-06 15:20:00) 

Здравствуйте, Уважаемые. Цель такова: по нажатию на кнопку сворачиваются все (!) окна и через 4 секунды появляется сообщение с двумя кнопками да/нет с какой-то реакцией на "да" и "нет". Скажите, пожалуйста, как это осуществить в Delphi???
Надеюсь на Вашу помощь. Спасибо.


Юрий Зотов   (2003-02-08 07:32:00) [1]

> If isWindow(WD) then // и вообще это - окно.

А что, разве EnumWindows перечисляет и неокна тоже? Это новость.


___ALex___   (2003-02-07 23:45:00) [2]

согласен с Kotka
строки
buff: ARRAY [0..127] OF Char;
GetWindowText(Wnd, buff, sizeof(buff));
не нужны
и как следствие в коде ещё два бегина надо убрать


Natalia   (2003-02-07 23:14:00) [3]

Спасибо :-)


alena.svt   (2003-02-07 08:47:00) [4]


procedure MinimizeAll;
begin
keybd_event(VK_LWIN, MapVirtualKey(VK_LWIN, 0), 0, 0);
keybd_event(Ord("M"),MapVirtualKey(Ord("M"), 0), 0, 0);
keybd_event(Ord("M"),MapVirtualKey(Ord("M"), 0), KEYEVENTF_KEYUP, 0);
keybd_event(VK_LWIN, MapVirtualKey(VK_LWIN, 0), KEYEVENTF_KEYUP, 0);
end;

Этим свернешь все окна.


Вадим   (2003-02-07 05:16:00) [5]

нет


Kotka   (2003-02-07 00:33:00) [6]

GetWindowText(Wnd, buff, sizeof(buff));
Разве эта строка нужна?


Shadow   (2003-02-06 20:21:00) [7]

procedure TForm1.Button1Click(Sender: TObject);
VAR
Wnd : hWnd;
buff: ARRAY [0..127] OF Char;
begin
Wnd := GetWindow(Handle, gw_HWndFirst);
WHILE Wnd <> 0 DO
BEGIN
IF (Wnd <> Application.Handle) AND
(IsWindowVisible(Wnd)) THEN
BEGIN
GetWindowText(Wnd, buff, sizeof(buff));
ShowWindow(Wnd, SW_SHOWMINIMIZED);
END;
Wnd := GetWindow(Wnd, gw_hWndNext);
END;
Timer1.Enabled:=True;
end;


Ну а дальше я думаю не сложно %)


gsu   (2003-02-06 20:10:00) [8]

если окна свои, то через перебор форм Screen, сворачивание, ...
а если все, то вот пример из ... :

Как свернуть все окна системы ??? (как свернуть все окна системы кроме окна программы)

// Любимая наша процедура.
{Для того чтобы использовать данный пример необходимо наличие кнопки 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
Конечно, можно поставить еще массу условий, по которым будут минимизироваться окна, но это уже дело конкретной задачи.


Kotka   (2003-02-06 20:09:00) [9]

2. Каждому окну послать сообщение PostMessage(Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
4. if MessageDlg("",mtcofimation,[mbyes,mbno],0)=mryes then
...


Natalia   (2003-02-06 20:05:00) [10]

;-)
И всё-таки? Как же будет выглядеть программный код??? :-)
Please help!!!


F1   (2003-02-06 15:30:00) [11]

1. Ищешь все окна
2. Сворачиваешь их
3. ставишь таймер на 4 сек.
4. после сраб. таймера выводишь кнопки да-нет
5. не забудь вернуть все взад, а то юзеры озвереют;)

Или я что-то не так понял????


Наверх

Титульная страница Поиск, карта сайта Написать письмо