Конференция "WinAPI" » перехватить нажатие кнопок
 
  • SKIPtr © (27.05.12 21:12) [0]
    драсте

    подскажите как моя программа может узнакть о том что нажали одну из кнопок на выбраной форме
  • robt (27.05.12 21:53) [1]
    этош надош, в 46 лет так формулировать вопрос, чувствуется многолетний опыт...
  • SKIPtr © (27.05.12 22:09) [2]
    ну так получилось
    я пока не могу сообразить как вопрос сформулировать
    ну подскажите как перехватить нажатие кнопки
  • robt (27.05.12 22:15) [3]
    а зачем перехватывать кнопки на форме?
    тыкаеш по ней 2раза и в появившемя оброботчике пишеш нужный тебе код

    какой вопрос - такой ответ :)
  • SKIPtr © (27.05.12 22:26) [4]
    поясню для чего нужно
    есть программа TV плеер но я хочу чтоб рядом все время был список передач
    это и есть моя программа
    так я хочу чтоб когда на плеере нажимают на кнопку канала
    в моей программе должна появиться программа передач этого канала
    так вот моя программа должна узнать что в плеере нажали кнопку
  • robt (27.05.12 22:56) [5]
    ну если это тв из инета то найди нормальный плеер который кажет программу (их полно)
    если это софт от твтюнера то эта затея будет стоить тебе много разнообразного хардсекса с дельфей
  • SKIPtr © (28.05.12 06:10) [6]
    это тв из интернета
    нашел плеер который меня устраивает
    предлагал авторам  сделать так
    но такого желания у них нет
    поэтому решил это сделать сам
    уже разобрался с доступом к хенлу кнопок
    теперь надо следить нажатие на них или хотя бы когда кнопка становиться активной
  • robt (28.05.12 10:49) [7]
    ну раз даже хендл нашел,тогда кури тему по сабклассингу окон
  • Cobalt © (28.05.12 10:51) [8]
    Ставь хук на события, из них отслеживай те, которые адресованы нужной тебе кнопке
    When the user clicks a push button (of either style), it receives the keyboard focus. The system sends the button's parent window a WM_COMMAND message that contains the BN_CLICKED notification code.
  • robt (28.05.12 12:37) [9]

    > Cobalt ©   (28.05.12 10:51) [8]

    а не круто ли факать всю систему (а корректно это написать у него явно не выйдет) ради одной кнопки?
  • Cobalt © (28.05.12 13:53) [10]
    Зачем всю систему?
    достаточно целевого потока.
  • ProgRAMmer Dimonych © (28.05.12 14:29) [11]
    Unknown-Плеер совсем случайно не предоставляет какого-нибудь более человеческого интерфейса для взаимодействия с ним, кроме поиска handle'ов? Что-нибудь a la WinAMP или AIMP, когда управлять можно через документированные разработчиками фичи.
  • SKIPtr © (28.05.12 17:12) [12]

    > тогда кури тему по сабклассингу окон

    а а можно подробнее описать что это такое
    а то я то же щитаю что хук он лезет везде
    а я уже знаю хендел плеера и кнопок каналов
    и писать прогу которая лезет везде
    а еще я давно не писал хуки
    вот и хочу спрасить как без хуков обойтись


    > Что-нибудь a la WinAMP или AIMP, когда управлять можно через
    > документированные разработчиками фичи.

    я рользуюсь rus pleer
  • DVM © (28.05.12 18:24) [13]

    > SKIPtr ©   (28.05.12 17:12) [12]


    > вот и хочу спрасить как без хуков обойтись

    хуки - не самоцель, твоя цель разместить в адресном пространстве процесса этого плеера свой код, который будет представлять собой например оконную процедуру, обрабатывающую одно или несколько сообщений Windows. В этой оконной процедуре можно будет при получении нужных сообщений выполнять какие либо свои действия и перенаправлять эти самые сообщения старой процедуре окна, чтобы программа могла работать как и раньше. Эту свою оконную процедуру надо будет повесить на нужное окно, обязательно сохранив при этом ссылку на старую процедуру, чтоб вызываеть ее из своей.
  • DVM © (28.05.12 18:27) [14]

    > SKIPtr ©   (28.05.12 17:12) [12]

    слова для поиска SetWindowLong GWL_WNDPROC hook
  • robt (28.05.12 18:56) [15]

    > а а можно подробнее описать что это такое


    > представлять собой например оконную процедуру, обрабатывающую
    > одно или несколько сообщений Windows. В этой оконной процедуре
    > можно будет при получении нужных сообщений выполнять какие
    > либо свои действия и перенаправлять эти самые сообщения
    > старой процедуре окна, чтобы программа могла работать как
    > и раньше. Эту свою оконную процедуру надо будет повесить
    > на нужное окно, обязательно сохранив при этом ссылку на
    > старую процедуру, чтоб вызываеть ее из своей.

    вот это и называется сабклассингом, гугл ищет на раз два
  • SKIPtr © (28.05.12 20:20) [16]

    > слова для поиска SetWindowLong GWL_WNDPROC hook

    значит только через хуки
  • DVM © (28.05.12 22:05) [17]

    > SKIPtr ©   (28.05.12 20:20) [16]

    не только, просто этот способ относительно простой
  • DVM © (28.05.12 22:19) [18]
    в принципе даже можно обойтись WH_MOUSE_LL тогда и DLL не нужна
  • Германн © (29.05.12 01:55) [19]

    >  SKIPtr ©   (28.05.12 06:10) [6]
    >
    > это тв из интернета
    > нашел плеер который меня устраивает
    > предлагал авторам  сделать так
    > но такого желания у них нет

    Значит либо они давно забросили свой проект(, а отдавать исходники в чужие руки не хотят), либо у них есть свой функционал для показа программы передач. Вот только я пока не слышал о том, что хоть какой-то российский канал предоставлял свою программу передач для TV-плееров.
  • SKIPtr © (29.05.12 16:24) [20]
    они не забросили
    переодически усовершенствуют
    и форум у них есть
    там я написал свое желание
    но они ответили типа того что у них есть на плеере кнопка
    кнопка выведет только текущюю программу
    при переходе на другую программу кнопку нужно нажимать вновь

    а я привык к тому как это делает tvip или IP-TV и вот и хочу зделать так же

    а программу передач они и многие другие используют из сайта http://tv.cmlt.tv/
    можно будет так же попробывать адресса хранящиеся в IP-TV
  • robt (29.05.12 17:48) [21]

    > а я привык к тому как это делает tvip или IP-TV

    чет какойта тупняк пошол,если ты кним привык то на кой хрен другим пользуешся?
  • SKIPtr © (29.05.12 20:48) [22]

    > то на кой хрен другим пользуешся?

    у провайдора иногда IP глючит
    вот и перехожу на интернет
  • SKIPtr © (30.05.12 19:55) [23]
    а еще такой вопрос

    открывая программу нужно включить хук
    закрывая программу нужно выключить хук
    а у меня может получиться ситуация  когда я запущю это несколько раз
    а от сюда я несколько раз запущю хук
    вот у меня вопрос допускаеться ли запускать несколько раз один и тот же хук
    или нужно следить за количеством запущеных хуков
  • robt (30.05.12 22:28) [24]
    если хуки грамотные то впринципе пофиг их в системе и так полно используется,но лучше сделать так чтобы, запускался только один экземпляр программы,как примеров полно
  • SKIPtr © (30.05.12 22:41) [25]
    програм может быть несколько
    хук я получаеться запущу один раз
    а потом при закрытии програм следить за тем чтоб хук закрылся только последней закрываемой программой
  • Сергей М. © (30.05.12 22:44) [26]

    > у провайдора иногда IP глючит
    > вот и перехожу на интернет


    сногосшибательная логика.
    нет слов.
 
Конференция "WinAPI" » перехватить нажатие кнопок
Есть новые Нет новых   [134430   +2][b:0][p:0.001]