Мультимедийная клава, Чем отловить?

Тема в разделе "WASM.WIN32", создана пользователем AlexBond, 19 сен 2006.

  1. AlexBond

    AlexBond Member

    Публикаций:
    0
    Регистрация:
    30 янв 2005
    Сообщения:
    69
    Адрес:
    Belarus
    Немогу отловить сигнал с двух клавиш на мультимедийной клавиатуре. Проблема в следующем:
    простые запросы типа WM_KEYDOWN, WM_KEYUP, и функция GetKeyState дают от двух клавиш одинаковый код 0xFF немогу понять почему?
    Если использовать
    Код (Text):
    1. dindev8 Acquire, pKeyboard
    2. dindev8 GetDeviceState, pKeyboard, 256, ADDR Keys
    то коды разные, но мне нежелательно использовать DX.
    Может кто знает как отловить сигнал стандартными API или еще чем?
     
  2. shurik

    shurik Александр

    Публикаций:
    0
    Регистрация:
    27 авг 2006
    Сообщения:
    52
    Адрес:
    Украина
    В хуке ты смотришь только параметр wParam - он у этих клавиш одинаковый, но есть еще lParam, который для них разный. Эти два параметра нужно смотеть.

    Краткое описание этих параметров в сообщении WM_KEYDOWN
    (из MSDN):

    wParam-Specifies the virtual-key code of the nonsystem key.
    lParam-Specifies the repeat count, scan code, extended-key flag, context code, previous key-state flag, and transition-state flag, as shown in the following table.

    MSDN тебе в помощь
     
  3. AlexBond

    AlexBond Member

    Публикаций:
    0
    Регистрация:
    30 янв 2005
    Сообщения:
    69
    Адрес:
    Belarus
    Все конечно хорошо, и работает, но вот незадача, как отловить скан-код если нету окна? И передать хендл не могу....
     
  4. dag

    dag New Member

    Публикаций:
    0
    Регистрация:
    17 авг 2004
    Сообщения:
    446
    сделать окно
     
  5. ssx

    ssx Member

    Публикаций:
    0
    Регистрация:
    19 авг 2003
    Сообщения:
    336
    хук поставить?
     
  6. AlexBond

    AlexBond Member

    Публикаций:
    0
    Регистрация:
    30 янв 2005
    Сообщения:
    69
    Адрес:
    Belarus
    Сделать окно и поставить хук не выход, т.к. я пишу dll-ку и окно не будет октивно, поэтому получить глабальный сигнал, но как? я не знаю, самое главное что почти все стандартные функции испльзуют V-key а мне нужен скан-код, который можно получить только из окна, может кто знает выход? или кто работал с int 2e? может прерывание поможет.... Кароче кто нибудь мне может помочь? или тут нету таких?
     
  7. CnCVK

    CnCVK New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2006
    Сообщения:
    108
    Почему хук нельзя? В DLL его и надо ставить :)
    А у тебя нет прог которые разпозновали эти клавиши (ну мож в комплекте шли...),
     
  8. shurik

    shurik Александр

    Публикаций:
    0
    Регистрация:
    27 авг 2006
    Сообщения:
    52
    Адрес:
    Украина
    По поводу преобразования v-key в скан-код посмотри функцию
    MapVirtualKey и MapVirtualKeyEx.