Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2008, 17:59   #1
Veiron
Форумчанин
 
Аватар для Veiron
 
Регистрация: 01.12.2007
Сообщений: 346
По умолчанию Свернуть все окна

Ранее пользовался компонентом Microsoft Shell Controls And Automation:
Код:
Shell1.ToggleDesktop
все легко и просто, перешел на обновленный Windows и узнал что он эту комманду не воспринимает, нужно искать новое решение желательно не прибегая к излишним компонентам что бы оно работало на всех виндах, подскажите пожалуйста как свернуть все окна?
Win 10 x64 | VS 2015 | MSSQL 2014
autovestitv.ru
Veiron вне форума Ответить с цитированием
Старый 08.02.2008, 18:33   #2
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Попробуй такой вариант:
Procedure TForm1.Timer1Timer(Sender: TObject);
Var
H:HWND;
Begin
While true Do
Begin
H:=GetForegroundWindow;
ShowWindow(H,SW_MINIMIZE);
Sleep(500);
End;
End;
Всегда рад помочь!

Последний раз редактировалось Terran; 08.02.2008 в 18:36.
Terran вне форума Ответить с цитированием
Старый 08.02.2008, 18:54   #3
Veiron
Форумчанин
 
Аватар для Veiron
 
Регистрация: 01.12.2007
Сообщений: 346
По умолчанию

Свернуло (папки почему то со второго раза пропустил, т.е. не свернул), есть что нибудь более мягкое, а то такие непередаваемые ощущения происходящего (особенно когда это пытаеться свернуть все окна вместе с Панелью задач =) ), да и обратно раскрыть окна предоставляет не малых усилий?
Win 10 x64 | VS 2015 | MSSQL 2014
autovestitv.ru
Veiron вне форума Ответить с цитированием
Старый 08.02.2008, 20:09   #4
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Можешь опробовать такой вариант=)
var
Form1: TForm1;
Count: integer;
...

function EnumProc(WinHandle: HWnd; Param: LongInt): Boolean; stdcall;
begin
if (GetParent(WinHandle) = 0) and (not IsIconic(WinHandle)) and
(IsWindowVisible(WinHandle)) then
begin
PostMessage(WinHandle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
Inc(Count);
end;
EnumProc := TRUE;
end;
begin
Count := 0;
EnumWindows(@EnumProc, 0);
Writeln('Minimized:', Count, ' windows');
end;
Всегда рад помочь!

Последний раз редактировалось Terran; 08.02.2008 в 20:15.
Terran вне форума Ответить с цитированием
Старый 08.02.2008, 20:40   #5
Veiron
Форумчанин
 
Аватар для Veiron
 
Регистрация: 01.12.2007
Сообщений: 346
По умолчанию

Неполучилось, либо по тому что я не умею пользоваться функциями (вставил в кнопку и просто не прокатило), либо касяк в коде хотя на глаз более обнодяжевающий вариант нежели первый...
Win 10 x64 | VS 2015 | MSSQL 2014
autovestitv.ru
Veiron вне форума Ответить с цитированием
Старый 08.02.2008, 22:20   #6
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

Пример от Terran'a работает. Вот листинг:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Count: integer;
implementation

{$R *.dfm}
function EnumProc(WinHandle: HWnd; Param: LongInt): Boolean; stdcall;
begin
if (GetParent(WinHandle) = 0) and (not IsIconic(WinHandle)) and
(IsWindowVisible(WinHandle)) then
begin
PostMessage(WinHandle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
Inc(Count);
end;
EnumProc := TRUE;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Count := 0;
EnumWindows(@EnumProc, 0);
end;

end.
FaTaL на форуме Ответить с цитированием
Старый 09.02.2008, 00:19   #7
Veiron
Форумчанин
 
Аватар для Veiron
 
Регистрация: 01.12.2007
Сообщений: 346
По умолчанию

Пошло, спасибо
Win 10 x64 | VS 2015 | MSSQL 2014
autovestitv.ru
Veiron вне форума Ответить с цитированием
Старый 24.05.2012, 16:13   #8
Ниманя
Новичок
Джуниор
 
Регистрация: 24.05.2012
Сообщений: 1
По умолчанию ОКНА в делфи

хочу чтоб при нажатии на кнопку все формы закрывались и оставалась только главная! Делаю так:
Form1.Show;
ShowWindow(Form43.Handle,SW_HIDE);
ShowWindow(Form44.Handle,SW_HIDE);
но это надо каждую прописывать...а как нибудь одной функцией нельзя??
Ниманя вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Свернуть окна Михаил Юрьевич Общие вопросы Delphi 9 06.06.2008 19:16
Свернуть все окна Altera Win Api 2 22.05.2008 09:26
Размер окна в зависимости от размера окна Reverent JavaScript, Ajax 1 02.02.2008 15:49
закрыть все дочерни окна, кроме главного окна Worms Общие вопросы Delphi 2 03.12.2007 22:18
Как сделать чтобы дочерние окна в MDI-приложениях были вне главного окна??? dimonchuk Общие вопросы Delphi 1 11.08.2007 12:13