Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.08.19;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.048 c
2-1185000805
apic
2007-07-21 10:53
2007.08.19
Всплывающие подсказки


3-1178281496
alsov
2007-05-04 16:24
2007.08.19
ADO+ftCursor+Oracle


2-1185001109
apic
2007-07-21 10:58
2007.08.19
Отладка DLL


15-1184873242
Petr V. Abramov
2007-07-19 23:27
2007.08.19
Автомобили "Бентли" и "Ягуар" не сооветствуют


4-1171957830
Sunflower
2007-02-20 10:50
2007.08.19
Как удаленно установить клиентскую часть программы?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский