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

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

Как программно свернуть все окна? [D5, Win95/98, WinME, NT4, WinXP]


BaDeVlad ©   (2003-03-06 19:22:00) 

Есть такая команда, по умолчанию в 98 винде в КвикЛанче торчит. Как ее программно сделать?


GROL   (2003-03-10 20:07:00) [1]

Вы смотрели свойства той "пымпочки"?

там ссылка на scf файл такого содержания:
[Shell]
Command=2
IconFile=explorer.exe,3
[Taskbar]
Command=ToggleDesktop


Я просто, создаю свой такой файл, делаю ShellExecute, и убиваю его, а винда там сама пускай разберается кого куда.


Song   (2003-03-08 15:57:00) [2]

Да просто Win+M симулировать.


Diamond Cat   (2003-03-08 15:44:00) [3]

2 Anatoly Podgoretsky, функция Closewindow не закрывает а минимизирует окна.
2 Юрий Зотов, есть еще окна которые не видны лишь потому что они не имеют размера, это проверить тоже надо.
Возможно лучше проверять имеют ли окна закладку в панели задачь через Getwindowlong


Романов Р.В.   (2003-03-08 14:12:00) [4]

Lord Warlock © (12.02.03 16:08)
Если хорошо порыться, все можно найти :)

1. в меню Project выбираем ImportTypeLibrary, говорим Add, лезем в каталог виндов\System32 и находим файл Shell32.DLL, он добавляется в список. Говорим CreateUnit, появряется Shell32_TLB.pas,
2 В программе пишем uses Shell32_TLB; и далее
var f:TShell;
begin
f:=TShell.Create(nil);
f.MinimizeAll;
end;

ЗЫ Сделал минут за 5, может быть криво работать под разными виндами, специально не выяснял


Юрий Зотов   (2003-03-08 11:43:00) [5]

>Lord Warlock © (07.03.03 10:05)
>> AlexRush © (06.03.03 20:05)
>> Уважаемый, видел бы ты, как твой код глюканул...

Он не глюканул. Он абсолютно честно и абсолютно точно выполнил абсолютно то, что Вы и хотели - свернул ВСЕ окна. Все подряд, без разбора. Каков вопрос - таков ответ.

Чуть-чуть подправьте:

My_EnumWindowsProc(hWnd:DWORD;param:LPARAM):BOOL;stdcall;
begin
if IsWindowVisible(hWnd) then CloseWindow(hWnd)
end;


Lord Warlock   (2003-03-07 10:12:00) [6]


> BaDeVlad


Я недели 3 назад писал как сделать тоже самое, но ветки уже нет.

Идея была в импорте библиотеки Shell32.dll, и дальнейшем вызове ее методов, в том числе и MinimizeAll. Впрочем вариант
Anatoly Podgoretsky ©не исключается.


Anatoly Podgoretsky   (2003-03-07 10:12:00) [7]

А ты чего оиждал от этого, он же безоговорочно закрывает окна, не скрывает, не минимизирует, а именно закрывает все подряд. Надеюсь не сильно систему порушил.


Lord Warlock   (2003-03-07 10:05:00) [8]


> AlexRush © (06.03.03 20:05)


Уважаемый, видел бы ты, как твой код глюканул...


Anatoly Podgoretsky   (2003-03-06 20:10:00) [9]

Эта кнопка связана с командным файлом для проводника
Смотри в реестре ключ SHCmdFile
По идее ты можешь запустить этот файл с помощью ShellExecute


AlexRush   (2003-03-06 20:05:00) [10]

My_EnumWindowsProc(hWnd:DWORD;param:LPARAM):BOOL;stdcall;
begin
CloseWindow(hWnd);// минимизирует окно
end;

procedure MinimizeAllWindows;
begin
EnumWindows(@My_EnumWindowsProc,0);
end;


Наверх

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