Конференция "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-плееров.
 
Конференция "WinAPI" » перехватить нажатие кнопок
Есть новые Нет новых   [134430   +2][b:0][p:0.001]