Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.07.2013, 14:52
Аватар для AlexandrV
AlexandrV AlexandrV вне форума
Начинающий
 
Регистрация: 10.02.2013
Сообщения: 197
Версия Delphi: XE3
Репутация: -624
По умолчанию Работа с другими приложениями в Delphi

Скажите как можно свернуть все окна при открытии приожения и когда приложение полностью загрузется развернуть все окна

Все окна это все окна на панели задач Windows
Ответить с цитированием
  #2  
Старый 07.07.2013, 19:21
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Ну неужели так трудно в поисковике набрать? "Delphi свернуть все окна"
Сразу кучу решений получите.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 07.07.2013, 21:12
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от Страдалецъ
Ну неужели так трудно в поисковике набрать? "Delphi свернуть все окна"
Сразу кучу решений получите.

Ну тут скорее вопрос о том, что эти окна потом надо обратно развернуть.
Недавно писал прогу для работы с окнами. Вот кусок кода, который получает все видимые окна и сохраняет информацию о них:
Код:
function AddWindow(AHandle : THandle; ListBox : LPARAM) : BOOL; stdcall;
var
  FWndInfo : TWndInfo;
  AText : String;
  PText : Array [0..1023] Of Char;
begin
  If (AHandle <> Application.Handle) And (AHandle <> Application.MainForm.Handle) And
     (IsWindowVisible(AHandle)) And (GetWindow(AHandle, GW_OWNER) = 0) And (IsWindow(AHandle))
    Then
      Begin
        FillChar(PText,Length(PText) * SizeOf(Char),#0);
        GetWindowText(AHandle,@PText,1023);
        AText := StrPas(PText);
        If (AText <> '') And (AText <> 'Program Manager') Then
          Begin
            FWndInfo := TWndInfo.Create(AHandle,AText);
            TListBox(ListBox).Items.AddObject(AText,FWndInfo);
          End;
      End;
  Result := TRUE;
end;

{ TForm1 }

procedure TMainForm.GetWindowsList;
var
  I : Integer;
begin
  lbWindows.Items.BeginUpdate;
  Try
    // Clear
    For I := 0 To lbWindows.Items.Count-1 Do lbWindows.Items.Objects[i].Free;
    lbWindows.Items.Clear;
    lbWindows.Sorted := False;

    // Get new list
    EnumWindows(@AddWindow,LPARAM(lbWindows));
    If lbWindows.Items.Count > 0 Then lbWindows.ItemIndex := 0;
    lbWindows.Sorted := FPreferences.SortOrder = soAlpha;
  Finally
    lbWindows.Items.EndUpdate;
  End;
end;

И код класса для хранения информации о найденых окнах:
Код:
unit WndInfo;

interface

uses
  Windows;

type
  TWndInfo = class
  private
    FHandle : THandle;
    FText : String;
    FIcon : HICON;
    FIsMinimized : Boolean;
  protected
    procedure GetWindowInfo;
  public
    constructor Create(AHandle : THandle; AText : String); virtual;
    destructor Destroy; override;

    procedure ActivateWindow;
    procedure MinimizeWindow;

    property Handle : THandle read FHandle;
    property Text : String read FText;
    property Icon : HICON read FIcon;
    property IsMinimized : Boolean read FIsMinimized;
  end;

implementation

{ TWndInfo }

procedure TWndInfo.ActivateWindow;
begin
  If FHandle <> 0 Then
    Begin
      If IsIconic(FHandle) Then ShowWindow(FHandle,SW_RESTORE);
      SetForegroundWindow(FHandle);
    End;
end;

constructor TWndInfo.Create(AHandle: THandle; AText : String);
begin
  inherited Create;
  FIcon := 0;
  FIsMinimized := False;

  FHandle := AHandle;
  FText := AText;

  GetWindowInfo;
end;

destructor TWndInfo.Destroy;
begin
  inherited;
end;

procedure TWndInfo.GetWindowInfo;
const
  WM_GETICON = $007F;
var
  IconHandle : HICON;
begin
  // Get window state
  Try
    FIsMinimized := IsIconic(FHandle);
  Except
  End;

  // Get icon handle
  Try
    IconHandle := SendMessage(FHandle, WM_GETICON, ICON_SMALL2, 0);
    If IconHandle = 0 Then IconHandle := GetClassLong(FHandle,GCL_HICONSM);

    If IconHandle <> 0 Then FIcon := IconHandle;
  Except
  End;
end;

procedure TWndInfo.MinimizeWindow;
begin
  ShowWindow(FHandle,SW_MINIMIZE);
  FIsMinimized := True;
end;

end.
Ответить с цитированием
  #4  
Старый 08.07.2013, 07:34
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

А не проще
Цитата:
...импортировать Microsoft Shell Controls & Automation Type Library. В меню Project..Import Type Library нужно выбрать Microsoft Shell Controls & Automation (version 1.0) и нажать Install... В закладке ActiveX появится компонент TShell.
кинуть его на форму, а дальше
Код:
//Минимизируем все окна на рабочем столе
Shell1.MinimizeAll;

 //Восстанавливаем все окна на рабочем столе
Shell1.UndoMinimizeAll;
Ответить с цитированием
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
Страдалецъ (08.07.2013)
  #5  
Старый 08.07.2013, 11:14
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

А вот это интересная инфа, за что и получите пирожок.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:54.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter