|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Работа с другими приложениями в Delphi
Скажите как можно свернуть все окна при открытии приожения и когда приложение полностью загрузется развернуть все окна
Все окна это все окна на панели задач Windows |
#2
|
||||
|
||||
Ну неужели так трудно в поисковике набрать? "Delphi свернуть все окна"
Сразу кучу решений получите. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
|||
|
|||
Цитата:
Ну тут скорее вопрос о том, что эти окна потом надо обратно развернуть. Недавно писал прогу для работы с окнами. Вот кусок кода, который получает все видимые окна и сохраняет информацию о них: Код:
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
|
||||
|
||||
А не проще
Цитата:
Код:
//Минимизируем все окна на рабочем столе Shell1.MinimizeAll; //Восстанавливаем все окна на рабочем столе Shell1.UndoMinimizeAll; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
Страдалецъ (08.07.2013)
|
#5
|
||||
|
||||
А вот это интересная инфа, за что и получите пирожок.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |