Форум 3DNews
Вернуться   Форум 3DNews > Программирование > Программирование

Ответ Создать новую тему
Опции темы Опции просмотра
Непрочитано 10.12.2004, 11:40   [включить плавающее окно]   #1
Ant.ttk
Мужской Продвинутый
Автор темы
 
Аватар для Ant.ttk
 
Регистрация: 16.11.2004
Адрес: Троицк
Поиск нужного окна.

Есть окно в заголовке которого фигурируют какие-то заданные слова, нужно среди других окон(аськи, експлорера...), отыскать это и получить его хэндл. Как это сделать? (идея в том, что я не могу точно назвать заголовок окна, поэтому FindWindow чет не взошел, а надо может просматривать все окна подрят и потом strstr). Короче, какие идеи?

Пасиба.
__________________
Feel the force, motherf*ckers.
Ant.ttk вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 10.12.2004, 18:02   [включить плавающее окно]   #2
Johnnie Walker
Опытный
 
Регистрация: 28.04.2004
EnumWindows
Johnnie Walker вне форума  
Ответить с цитированием
Непрочитано 12.12.2004, 14:49   [включить плавающее окно]   #3
legozaur
Мужской Общительный
 
Аватар для legozaur
 
Регистрация: 14.11.2003
Адрес: Новосибирск
Ant.ttk
Для применения FindWindow достаточно знать класс окна. А заголовок задай NULL.
От себя приведу пример отыскания приложения калькулятор среди всех открытых окон, если неизвестен его класс (может кому-то пригодиться).
Код:
var H : HWND;
PCh : array[0..256] of char;
...
  H := Handle;
  repeat
    GetNextWindow(H, GW_HWNDNEXT);
    GetWindowText(H, PCh, 254);
  until (H = 0) or (PCh = 'Калькулятор');
  if H = 0 then //нет калькулятора.......
legozaur вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 16.12.2004, 15:43   [включить плавающее окно]   #4
Ant.ttk
Мужской Продвинутый
Автор темы
 
Аватар для Ant.ttk
 
Регистрация: 16.11.2004
Адрес: Троицк
Цитата (legozaur) »
legozaur
Ну это то все понятно, в том то и фишка, что я не знал не класса(узнать кстати не сложно, но может случиться ситуация когда окон этого класса висит несколько, поэтому этот вариант отметается), ни заголовка(только его кусок). EnumWindows в самый раз подошло. Или hooks ^))....

Ant.ttk добавил :

Хотя по сути GetNextWindow - тоже самое.
__________________
Feel the force, motherf*ckers.
Ant.ttk вне форума  
Конфигурация ПК
Ответить с цитированием
Непрочитано 16.12.2004, 15:52   [включить плавающее окно]   #5
Benedict
Интересующийся
 
Регистрация: 19.06.2004
Ant.ttk, вот что говорит MSDN Library:

The EnumWindows function ... is more reliable than calling the GetWindow function in a loop. An application that calls GetWindow to perform this task risks being caught in an infinite loop or referencing a handle to a window that has been destroyed.

Звучит логично
__________________
А доктор всё не едет...
Benedict вне форума  
Ответить с цитированием
Ответ Создать новую тему

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 16:59. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 2000-2017 3DNews. All Rights Reserved.
Администрация 3DNews требует соблюдения на форуме правил и законов РФ
Серверы размещены в Hostkey