Получение списка окон, с возможностью указания типа окнаDelphi , Программа и Интерфейс , Процессы и СервисыПолучение списка окон, с возможностью указания типа окна
Автор: VID { **** UBPFD *********** by delphibase.endimus.com **** >> Получение списка окон, с возможностью указания типа окна Процедура заполняет список List именами окон, в ОС. ПАРАМЕТРЫ: YourApplicationHandle - дескриптор приложения, вызывающего процедуру (Application.Handle); ShowOwnWindow - указание на то, что в списке List, должно быть также имя окна вызвавшего процедуру; ShowInvisibleWindows - укание на отображение в List имён невидимых окон; ShowChildWindows - указание на отображение в LIST имён дочерних окон; ShowNoHeadWindows - отображение списка окон, без заголовков; ShowMainWindows - отображение родительских окон. Также для каждой строки списка LIST добавляется объект (Object), который содержит указатель дескриптор окна. При обнаружении недостатков, или вопиющей неоптимальности кода - пишите :) Зависимости: sysutils, classes, windows, UBPFD.GetWordListFromText Автор: VID, vidsnap@mail.ru, ICQ:132234868, Махачкала Copyright: VID Дата: 02 мая 2002 г. ***************************************************** } procedure GetWindowsList(List: TStrings; YourApplicationHandle: HWND; ShowOwnWindow, ShowInvisibleWindows, ShowChildWindows, ShowNoHeadWindows, ShowMainWindows: Boolean); var Wnd: hWnd; buff: array[0..127] of Char; I: integer; CanShowIt: Boolean; WindowType, UnAcceptWinTypes: string; WordList: TStringList; begin List.Clear; Wnd := GetWindow(YourApplicationHandle, gw_HWndFirst); WordList := TStringList.Create; while Wnd <> 0 do begin WindowType := ''; if Wnd = YourApplicationHandle then WindowType := WindowType + ' own '; {собственное окно} if IsWindowVisible(Wnd) = null then WindowType := WindowType + ' invisible '; {-Невидимые окна} if GetWindow(Wnd, gw_child) <> 0 then WindowType := WindowType + ' child '; {-Дочерние окна} if GetWindowText(Wnd, buff, sizeof(buff)) = 0 then WindowType := WindowType + ' nohead '; {-Окна без заголовков} if GetWindow(Wnd, gw_Owner) <> 0 then WindowType := WindowType + ' main '; {-Главные окна} UnAcceptWinTypes := ''; if ShowOwnWindow = False then UnAcceptWinTypes := UnAcceptWinTypes + ' own '; if ShowInvisibleWindows = False then UnAcceptWinTypes := UnAcceptWinTypes + ' invisible '; if ShowChildWindows = False then UnAcceptWinTypes := UnAcceptWinTypes + ' child '; if ShowNoHeadWindows = False then UnAcceptWinTypes := UnAcceptWinTypes + ' nohead '; if ShowMainWindows = False then UnAcceptWinTypes := UnAcceptWinTypes + ' main '; CanShowIt := True; GetWordListFromText(UnAcceptWinTypes, ' ', WordList, False, False); if WordList.Count > 0 then begin I := -1; repeat I := I + 1; if Pos(WordList.Strings[i], WindowType) > 0 then CanShowIt := False; until (I = WordList.Count - 1) or (CanShowIt = False); end; if CanShowIt = True then begin GetWindowText(Wnd, buff, sizeof(buff)); I := List.Add(StrPas(buff)); List.Objects[I] := Pointer(Wnd); end; Wnd := GetWindow(Wnd, gw_hWndNext); end; WordList.Free; end; Пример использования: procedure TForm1.Button1Click(Sender: TObject); begin GetWindowsList(memo1.Lines, self.Handle, true, false, false, true, true); end; Перевод контента на русский язык: Процедура Delphi, называемая
Процедура пополняет список имен окон и соответствующих handle окон. Она использует несколько функций Windows API, таких как Вот некоторые предложения по улучшению:
Вот пример модификации процедуры для принятия одиночной строки-параметра:
В этом примере параметр Процедура GetWindowsList получает список окон в ОС, с возможностью указания типа окна (свое, невидимое, дочернее, без заголовка или родительское). Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Процессы и Сервисы ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |