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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2011, 15:03   #1
tozter
Пользователь
 
Регистрация: 14.12.2010
Сообщений: 16
Вопрос Как найти окно по заголовку с определенным словом?

Задача:

найти окна с определенным словосочетанием.

Как найти окно с заранее известным текстом - это ясно, а вот как найти окно с определенным словом в этом тексте - не понятно.
tozter вне форума Ответить с цитированием
Старый 21.12.2011, 15:12   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

EnumWindows+проверка на видимость+рекурсивные переход по дереву компонентов окна.
Человек_Борща вне форума Ответить с цитированием
Старый 21.12.2011, 15:47   #3
haruhi
Форумчанин
 
Аватар для haruhi
 
Регистрация: 05.10.2011
Сообщений: 368
По умолчанию

Цитата:
Сообщение от tozter Посмотреть сообщение
найти окна с определенным словосочетанием.

Как найти окно с заранее известным текстом - это ясно, а вот как найти окно с определенным словом в этом тексте - не понятно.
только ручной перебор всех окон с анализом каждого заголовка
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии
haruhi вне форума Ответить с цитированием
Старый 21.12.2011, 16:26   #4
tozter
Пользователь
 
Регистрация: 14.12.2010
Сообщений: 16
По умолчанию

Сделал так, оцените:

Код:
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));
      for W := 1 to MaxNameWin do
        begin
            position := AnsiPos('progname'), StrPas(buff));
            if position <> 0 then
             PostMessage(wnd, WM_CLOSE, 1,0);
             CloseWindow(wnd);
        end;
    end;
wnd := GetWindow(wnd, gw_hwndnext);
end;
tozter вне форума Ответить с цитированием
Старый 21.12.2011, 16:52   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Неплохо. Но что менает использовать системный перебор окон EnumWindows?
Человек_Борща вне форума Ответить с цитированием
Старый 21.12.2011, 17:00   #6
tozter
Пользователь
 
Регистрация: 14.12.2010
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Неплохо. Но что менает использовать системный перебор окон EnumWindows?
EnumWindows - первый раз вижу, поэтому сделал по старинке - руками.

EnumWindows то же смотрю.....
tozter вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как найти программу по заголовку и закрыть ее? Catsys Общие вопросы Delphi 2 16.09.2011 23:26
Как добавить еще одну GET переменную к заголовку HTML страницы? Лицемер Помощь студентам 0 04.04.2011 12:45
Как найти окно Мой компьютер в Windows Vista? dolphin705 Общие вопросы Delphi 1 19.04.2010 01:27
Как сделать ячейку мигающей определенным цветом? ru3000 Microsoft Office Excel 1 14.11.2009 11:34
Как в dbgrideh получить имя поля той колонки, по заголовку которой Вы щелкнули???? zimmion БД в Delphi 4 04.03.2008 15:02