Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2007, 12:34   #1
toxicll
Новичок
Джуниор
 
Регистрация: 08.05.2007
Сообщений: 2
По умолчанию Определить вкладки браузера

Есть программа, которая определяет список открытых окон. Но этого недостаточно - нужно ещё, чтобы определялись все открытые вкладки браузера, например, в опере, мозилле или в седьмом експлорере.
Вот то, что есть:



procedure TForm1.Button1Click(Sender: TObject);
VAR
Wnd : hWnd;
buff: ARRAY [0..127] OF Char;
begin
ListBox1.Clear;
Wnd := GetWindow(Handle, gw_HWndFirst);
WHILE Wnd <> 0 DO BEGIN {Не показываем:}
IF (Wnd <> Application.Handle) AND {-Собственное окно}
IsWindowVisible(Wnd) AND {-Невидимые окна}
(GetWindow(Wnd, gw_Owner) = 0) AND {-Дочерние окна}
(GetWindowText(Wnd, buff, sizeof(buff)) <> 0)
THEN BEGIN
GetWindowText(Wnd, buff, sizeof(buff));
ListBox1.Items.Add(StrPas(buff));
END;
Wnd := GetWindow(Wnd, gw_hWndNext);
END;
ListBox1.ItemIndex := 0;
end;
toxicll вне форума Ответить с цитированием
Старый 09.05.2007, 20:27   #2
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

функция EnumChildWindows, посмотри, поэкспериментируй потом отпишись, для оперы например надо найти хендл главного окна и искать дочерние, обычно кнопки вкладкок имеют один и тот же класс

Последний раз редактировалось rpy3uH; 09.05.2007 в 20:37.
rpy3uH вне форума Ответить с цитированием
Старый 10.05.2007, 17:42   #3
toxicll
Новичок
Джуниор
 
Регистрация: 08.05.2007
Сообщений: 2
По умолчанию

что-то ничего не получается с этой функцией.. или это я туплю
toxicll вне форума Ответить с цитированием
Старый 10.05.2007, 20:11   #4
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Если проблема с функцией, то
Код:
BOOL EnumChildWindows(
    HWND hWndParent,	// handle to parent window
    WNDENUMPROC lpEnumFunc,	// pointer to callback function
    LPARAM lParam 	// application-defined value
   );
lparam можно ставить 0, WNDENUMPROC указатель на функцию типа
Код:
 BOOL CALLBACK EnumChildProc(
    HWND hwnd,	// handle to child window
    LPARAM lParam 	// application-defined value
   );
на delphi так
function EnumChildProc(_handle:hwnd,LPARAM: dword):BOOL;stdcall;
Lparam можно игнорировать, результат надо всегда возвращать true, HWND это хендл очередного окна, при вызове функции EnumChildWindows, она вызывает твою с первым парметром-хендлом очередного окна, если ты возвратил результат false то перечисление прекращается

Последний раз редактировалось rpy3uH; 10.05.2007 в 20:15.
rpy3uH вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Среди 20 введёных чисел определить чётные, распечатать их, определить min Spade Помощь студентам 4 15.06.2008 18:39
Окна как вкладки neo7777 Общие вопросы Delphi 8 07.04.2008 11:44
Создание вкладки. фЁдОр Общие вопросы Delphi 10 11.02.2008 16:27
Вкладки в делфи7 Никита1984 Компоненты Delphi 3 09.12.2007 17:33
Вкладки Каштанка Компоненты Delphi 1 02.05.2007 11:01