![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как свернуть все окна? [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. не забудь вернуть все взад, а то юзеры озвереют;)
Или я что-то не так понял????