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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.08.2010, 05:01   #1
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию Поиск определенного окна не по загаловку

Hello world!
Возможно ли найти определенное окно без того чтобы указывать заголовок окна? На данный момент использую функцию FindWindow() но мне хотелось бы автоматизировать этот процесс ибо возможно что заголовок, уточню *.exe окна, может быть разным.
Я тут подумывал, что может возможно перечислением процессов отыскать необходимое мне окно или же перечислением Handl'ов окон, но перечисление как перечисление, а остановится же нужно на определенном окне, поэтому здесь и загвостка, как?
Буду благодарен за любой совет.

p.s. - Только что пришла еще идея, может возможно автоматически определить заголовок окна, методом указания на файл? "Такой вариант тоже мне подходит, но лучше конечно автоматом"

Последний раз редактировалось coNsept; 28.08.2010 в 05:06.
coNsept вне форума Ответить с цитированием
Старый 28.08.2010, 09:46   #2
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Цитата:
Возможно ли найти определенное окно без того чтобы указывать заголовок окна?
А по каким критериям вы собираетесь отделять "определенное" окно от "неопределенного"?
Насколько я знаю, FindWindow() принимает в качестве аргументов кроме заголовка окна еще и класс этого окна: если указать NULL в заголовке, то будут искаться окна с данным классом и с любыми заголовками.
Существует, кстати еще и функция
Код:
FindWindowEx(HWND hWndParent, HWND hWndChildAfter,
             LPCSTR lpszClassName, LPCSTR lpszWindow);
Возможно найти и перечислением: существует EnumWindows(), в этом случае найденное окно (Обрабатывается в определенной функции, указатель на которую передан в первом аргументе) - будет его дескриптор - можно сравнивать по любым критериям.
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 28.08.2010, 13:58   #3
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Цитата:
А по каким критериям вы собираетесь отделять "определенное" окно от "неопределенного"?
Собственно смысл моего вопроса и состоял в этом, по каким критериям возможно отыскать!?
coNsept вне форума Ответить с цитированием
Старый 28.08.2010, 15:53   #4
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Цитата:
Собственно смысл моего вопроса и состоял в этом, по каким критериям возможно отыскать!?
По любым критериям: имея дескриптор окна можно узнать про него почти все!
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 29.08.2010, 02:41   #5
JDredd
Пользователь
 
Регистрация: 07.08.2010
Сообщений: 13
По умолчанию

недавно написал "оконного шпиона" - пример аутпута
Цитата:
--------------------------------------
HWND : 2491058 = 0x2602B2
Title : 100
Class name : TEdit
--------------------------------------
GetWindowRect : 276 351 350 371
Width : 75 Height : 21
Top left conner : (276 : 350 )
также можно делать отсеивание по наличию дочерних элементов
JDredd вне форума Ответить с цитированием
Старый 29.08.2010, 03:23   #6
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Просто дело вот в чем, искомое мной окно, конкретно одно, и с каждой обновленной версией программы id процессов разные, да и заголовок может менятся.
Если производить поиск по заголовку, программа теряет свою универсальность.
Перечислением процессов? собственно их много, поэтому тоже не рентабельно. (поправка: не то чтобы не рентабельно, остановится на определенном, это сложно)
Поиск handl'а активного окна? аналог второго варианта.
Мне подсказали вариант с перечислением EnumWindows(), EnumChildWindows() - я пока еще не разбирал возможности этих функций, но на днях я этим займусь.

Последний раз редактировалось coNsept; 29.08.2010 в 03:27.
coNsept вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск по символам внутри ячеек определенного столбца Lea1987 Microsoft Office Excel 8 21.05.2010 13:53
поиск определенного числа, в отсортированном массиве (с++) askerpro Общие вопросы C/C++ 7 29.04.2010 23:26
Поиск активного окна Arigato Win Api 5 22.11.2008 18:32
Создание окна при получение определенного пакета GHOST_Kasper Общие вопросы Delphi 5 06.02.2008 13:01
Поиск окна NoName_emaNoN Win Api 4 25.11.2007 19:37