Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.08.19;
Скачать: CL | DM;

Вниз

Прошу помощи мастера   Найти похожие ветки 

 
gen   (2007-07-23 15:51) [0]

как получить заголовки всех открытых в системе окон?


 
Инс ©   (2007-07-23 15:54) [1]

EnumWindows


 
TUser ©   (2007-07-23 16:17) [2]

EnumWindowsEx


 
Сергей М. ©   (2007-07-23 16:22) [3]


> открытых в системе окон


Только для тек.десктопа или для всех существующих ?


 
gen   (2007-07-23 16:25) [4]

неа, Enum вернет longBool, а нужно имя окна (String)


 
Сергей М. ©   (2007-07-23 16:27) [5]


> gen   (23.07.07 16:25) [4]


Ты справку-то читал ?


 
Инс ©   (2007-07-23 16:27) [6]


> Сергей М. ©   (23.07.07 16:22) [3]

Тут еще нужно спросить, нужны только top-level или вообще все окна. Хотя если под словом "заголовок" понимается не "WindowText" в общем, а что-то наподобие Caption формы, то только top-level.


 
gen   (2007-07-23 16:27) [7]

для всех


 
Инс ©   (2007-07-23 16:28) [8]


> а нужно имя окна (String)


Ни одна API не вернет тебе String :)


 
Инс ©   (2007-07-23 16:31) [9]

Кстати, у окна нет имени. Есть window class и window text.


 
gen   (2007-07-23 16:41) [10]

класс не нужен


 
StriderMan ©   (2007-07-23 16:46) [11]


> gen   (23.07.07 16:25) [4]
> неа, Enum вернет longBool, а нужно имя окна (String)

в орешник, однозначно :D


 
Сергей М. ©   (2007-07-23 16:46) [12]


> gen

http://www.delphirus.com/article47.html


 
alex810 ©   (2007-07-23 16:53) [13]

Может это?



>> Получение списка окон, с возможностью указания типа окна

Процедура заполняет список List именами окон, в ОС.
ПАРАМЕТРЫ:
YourApplicationHandle - дескриптор приложения,
вызывающего процедуру (Application.Handle);
ShowOwnWindow - указание на то, что в списке List,
должно быть также имя окна вызвавшего процедуру;
ShowInvisibleWindows - укание на отображение в List имён невидимых окон;
ShowChildWindows - указание на отображение в LIST имён дочерних окон;
ShowNoHeadWindows - отображение списка окон, без заголовков;
ShowMainWindows - отображение родительских окон.

Также для каждой строки списка LIST добавляется объект (Object),
который содержит указатель дескриптор окна.

***************************************************** }

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;



 
gen   (2007-07-23 16:55) [14]


> http://www.delphirus.com/article47.html

пасиба:)


 
Сергей М. ©   (2007-07-23 16:57) [15]


> gen   (23.07.07 16:55) [14]


Только там перечисляются отнюдь не все окна в системе)


 
WASM   (2007-07-23 17:41) [16]


> gen   (23.07.07 15:51)  


Тут исходник состряпал я для тебя 8.94 кб

http://ifolder.ru/2763082



Страницы: 1 вся ветка

Текущий архив: 2007.08.19;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.02 c
15-1184792311
Суслик
2007-07-19 00:58
2007.08.19
Женька, ты патриот!


5-1160128745
Alek_1
2006-10-06 13:59
2007.08.19
idSMTP


2-1185474090
Sonic90
2007-07-26 22:21
2007.08.19
TTrackBar в PopupMenu


15-1184349114
ССергей
2007-07-13 21:51
2007.08.19
Гугль и mail.ru


2-1184997712
pirks
2007-07-21 10:01
2007.08.19
Редактор структурных схем и блок схем