Текущее время: 28 мар 2024, 21:51 • Часовой пояс: UTC + 3 часа
Сообщения без ответов | Активные темы

Поиск окон ПО v5.17+

Начать новую темуОтветить на тему Страница 1 из 1 [ Сообщений: 7 ]
Версия для печати Пред. тема | След. тема
АвторСообщение
Сообщение Добавлено: 12 фев 2011, 12:33. Заголовок сообщения:  Поиск окон ПО v5.17+
Эксперт
Аватара пользователя
Зарегистрирован:
    23 мар 2007, 14:32
Сообщения: 4034
Откуда: РФ, ДНР, Донецк
Команда HWND hBhWnd = FindWindow ("TMain", "BeholdTV");

находит ПО, но какое?

Если у меня их 2, как мне понять которое из них я нашел? Каким тюнером я буду рулить?

Вот запустил 2 экземпляра.
Наклепал программку поиска окна (могу положить исходник на C#, .NET2.0).
Нашел:

Window found
Window Name: 'Behold TV - Channel 41 (591,25 МГц)'
Parsing ...
Информация: 'Channel 41 (591,25 МГц)'
Канал: 'Channel 41'
Частота (строка), МГц/DVB transponder: 591,25 МГц
Частота, Гц: 591250000

Это у меня 609 тюнер. А X7 нема :cry: ....

Прошелся утилитой Spy++, нашел окна типа "BeholdTV.Inst0", но как-то некошерно искать их прямым перебором. Да и ненадежно это. Мало ли какой хлам, не относящийся к ПО Behold я так найду...

Спасибо.
Behold TV 609FM, Behold TV X7
Intel Core i7-4770K, ASUS Z87-K, RAM 32 GB, NVidia GT630 2GB.
Win7, на 10 худо-бедно пахал только X7 влагодаря аппаратному кодировщику.
Последний раз редактировалось hd44780 13 фев 2011, 11:25, всего редактировалось 1 раз.
Профиль 
Сообщение Добавлено: 12 фев 2011, 14:01. Заголовок сообщения: 
Зарегистрирован:
    16 апр 2008, 22:22
Сообщения: 611
Ну по идее, рулить надо активным тюнером. Вы же не собираетесь два одновременно смотреть или слушать... :) А запись параллельно вести из трея, если надо.

Хотя конечно да, в название окна тоже не помешало бы вставить профиль или название тюнера...
Профиль 
Сообщение Добавлено: 13 фев 2011, 11:29. Заголовок сообщения: 
Эксперт
Аватара пользователя
Зарегистрирован:
    23 мар 2007, 14:32
Сообщения: 4034
Откуда: РФ, ДНР, Донецк
писал(а):
Ну по идее, рулить надо активным тюнером.

Все равно непонятно, которым?
FindWindow всегда находит только одно окно.

Я могу поисследовать набор окон в винде, насочинять какой-то алгоритм (искать окна "BeholdTV.Inst0", но те ли это окна?), м.б. он будет как-то работать, но хотелось бы услышать рекомендации разработчиков ПО.
Ведь тот же Агент как-то их различает? Или просто запускает с ключом -inst и все?
Behold TV 609FM, Behold TV X7
Intel Core i7-4770K, ASUS Z87-K, RAM 32 GB, NVidia GT630 2GB.
Win7, на 10 худо-бедно пахал только X7 влагодаря аппаратному кодировщику.
Профиль 
Сообщение Добавлено: 13 фев 2011, 13:25. Заголовок сообщения: 
Зарегистрирован:
    16 апр 2008, 22:22
Сообщения: 611
Скрее всего именно FindWindow ("TMain", "BeholdTV.inst0") это оно и есть. Поскольку это окно панели, которое в дефолтном инстансе называется просто BeholdTV. Т.е., раньше именно ему и посылали.

А активное окно действительно искать сложно, поскольку активным может быть либо панель, либо экран, в зависимости от режима...
Профиль 
Сообщение Добавлено: 14 фев 2011, 10:45. Заголовок сообщения: 
Эксперт
Аватара пользователя
Зарегистрирован:
    23 мар 2007, 14:32
Сообщения: 4034
Откуда: РФ, ДНР, Донецк
Угу :( .
Ни фига не понять ...

Активное окно - оно ж сейчас одно, через секунду пользователь поменял, оно уже другое. Но хэндлы ж от этого не меняются, они одинаковые в течение всего времени жизни приложения.

Я прямым перебором в плагине могу найти окна:
BeholdTV
BeholdTV.inst0
BeholdTV.inst1
..............

Но в котором из них работает плагин?

Тут по-моему надо какое-то расширенное API.
Или по аргументу HINSTANCE hModule в DllMain как-то искать окна, принадлежащие приложению. И среди них уже с текстом "BeholdTV.inst1".
Надо об этом подумать. Раньше как-то не сталкивался.
Хотя где-то читал, что HINSTANCE у всех одинаковый.... На фига он тогда нужен?

Разработчики, Ау-у...
Behold TV 609FM, Behold TV X7
Intel Core i7-4770K, ASUS Z87-K, RAM 32 GB, NVidia GT630 2GB.
Win7, на 10 худо-бедно пахал только X7 влагодаря аппаратному кодировщику.
Профиль 
Сообщение Добавлено: 14 фев 2011, 13:47. Заголовок сообщения: 
Beholder
Аватара пользователя
Зарегистрирован:
    19 авг 2004, 11:45
Сообщения: 616
Узнать инстанс приложения можно, проанализировав ключи командной строки, которую возвращает, например, ф-я GetCommandLine().

Названия окон инстансов приложения:

Окно "TMain" - "BeholdTV.InstX"
Окно "TVideoFrame" - "Video window.InstX"

где X - номер инстанса.

Пока так. В новом расширенном API будут отдельные вызовы для получения номера инстанса, хендлов окон приложения и пр. полезной информации.
Профиль 
Сообщение Добавлено: 14 фев 2011, 14:07. Заголовок сообщения: 
Эксперт
Аватара пользователя
Зарегистрирован:
    23 мар 2007, 14:32
Сообщения: 4034
Откуда: РФ, ДНР, Донецк
Support, спасибо. Попробую.

С нетерпением жду нового API.
Хотя и старое придется поддерживать для обратной совместимости с предыдущими версиями :cry: ....
Behold TV 609FM, Behold TV X7
Intel Core i7-4770K, ASUS Z87-K, RAM 32 GB, NVidia GT630 2GB.
Win7, на 10 худо-бедно пахал только X7 влагодаря аппаратному кодировщику.
Профиль 
Показать сообщения за:  Поле сортировки:    
Начать новую темуОтветить на тему  Страница 1 из 1  [ Сообщений: 7 ]  
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения
Найти:  
Перейти: