Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.17;
Скачать: CL | DM;

Вниз

как свернуть все окна?   Найти похожие ветки 

 
Natalia   (2003-02-06 15:20) [0]

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


 
F1 ©   (2003-02-06 15:30) [1]

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

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


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

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


 
Kotka ©   (2003-02-06 20:09) [3]

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


 
gsu ©   (2003-02-06 20:10) [4]

если окна свои, то через перебор форм 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
Конечно, можно поставить еще массу условий, по которым будут минимизироваться окна, но это уже дело конкретной задачи.


 
Shadow ©   (2003-02-06 20:21) [5]

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;


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


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

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


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

нет


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


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;

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


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

Спасибо :-)


 
___ALex___ ©   (2003-02-07 23:45) [10]

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



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

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

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



Страницы: 1 вся ветка

Текущий архив: 2003.02.17;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.025 c
7-53306
SPIRIT
2002-12-18 08:17
2003.02.17
Вопросик про Реестр


4-53334
Mixir
2003-01-08 11:07
2003.02.17
Как сохранить иконку в EXE фаил измоей программы?


1-53010
alexander_ua
2003-02-10 17:47
2003.02.17
Chart


1-53014
Morisson
2003-02-10 18:22
2003.02.17
Delphi 6. Вопрос с кастингом классов


1-53058
neXt2
2003-02-06 10:01
2003.02.17
Как в TreeView очистить все ветки?