Форум: "Начинающим";
Текущий архив: 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.047 c