Форум — Ответы     (  К темам )
 ?  Андрей: Как свернуть окна (26-03-2003 14:41:38)
Как програмно свернуть все окна?
 Павел (26-03-2003 20:30:11)
Я так понимаю что все эти окна относятся к одной программе
Если так, то Application->Minimize();
 Андрей (26-03-2003 20:36:17)
Эти окна не относятся к одной программе. Как свернуть окна всех работающих приложений?
 Павел (26-03-2003 22:09:06)
Наверное 2 варианта
1 Найти все открытые в системе окна, получить их дескрипторы
и свернуть их (послать им сообщения, кажется WM_HIDE)
Где-то на форуме или в FAQ было о поиске всех открытых окон и о получении
их дескрипторов, да и вроде была API функция которая посылает какое
либо сообщение сразу всем открытым окнам)

2 Если помниться, есть такая стандартная программа в Windows, которая это
делает, надо запустить ее, например по ShellExecute()
 Павел (26-03-2003 23:16:19)
Извините, не WM_HIDE это называется WM_SHOWWINDOW

The WM_SHOWWINDOW message is sent to a window when the window is about to be hidden or shown.

WM_SHOWWINDOW
fShow = (BOOL) wParam; // show/hide flag
fnStatus = (int) lParam; // status flag


Parameters

fShow

Value of wParam. Specifies whether a window is being shown. It is TRUE if the window is being shown or FALSE if the window is being hidden.

fnStatus

Value of lParam. Specifies the status of the window being shown. The fnStatus parameter is zero if the message is sent because of a call to the ShowWindow function; otherwise, fnStatus is one of the following values:

Value Meaning
SW_OTHERUNZOOM Window is being uncovered because a maximize window was restored or minimized.
SW_OTHERZOOM Window is being covered by another window that has been maximized.
SW_PARENTCLOSING Window's owner window is being minimized.
SW_PARENTOPENING Window's owner window is being restored.


Return Values

If an application processes this message, it should return zero.
---

И советую почитать:
http://www.firststeps.ru/mfc/winapi/r.php?1

вот отрывок оттуда:

Итак, как и у любого дерева, у дерева окон есть корень. Получить указатель на него можно функцией GetDesktopWindow(), которая вернет HWND корня в виде рабочего стола. Ага начало есть. Дальше как у того богатыря на картинке. Налево, направо или куда. От текущего HWND можно получить HWND либо ребенка, вот так GetWindow(hwnd, GW_CHILD), либо соседа вот так GetWindow(hwnd, GW_HWNDNEXT). И так далее. Дерево господа и алгоритм его обхода. Имея HWND можно получить заголовок окна GetWindowText. Ну пора. Вот код получения имен окон первого уровня.

// GetWindow.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "windows.h"
#include "iostream.h"

void main()
{
HWND hwnd;
char p[100];
hwnd = GetDesktopWindow();
hwnd = GetWindow(hwnd, GW_CHILD);
while (hwnd !=0)
{
hwnd = GetWindow(hwnd, GW_HWNDNEXT);
GetWindowText(hwnd,p,100);
if (strlen(p)>0) cout << p << endl;
}

}