Эмуляция нажатия клавиш
От: VictorT Украина http://extreme.lviv.ua/
Дата: 14.01.02 10:52
Оценка:
Задача — перехватить нажатие клавиши в винде (не в конкретном приложении) и заменить другим. Перехват удалось реализовать, установив хук на WH_KEYBOARD, а вот эмуляция нажатия клавиши не выходит (посылаю сообщение WM_CHAR).
Re: Эмуляция нажатия клавиш
От: Alexander Shargin Россия RSDN.ru
Дата: 14.01.02 10:55
Оценка:
Здравствуйте VictorT, Вы писали:

VT>Задача — перехватить нажатие клавиши в винде (не в конкретном приложении) и заменить другим. Перехват удалось реализовать, установив хук на WH_KEYBOARD, а вот эмуляция нажатия клавиши не выходит (посылаю сообщение WM_CHAR).


Посмотри SendInput (Win98/NT+SP3+/2000) или keybd_event.
--
Я думал, ты огромный страшный Бажище,
А ты недоучка, крохотный Бажик...
Re[2]: Эмуляция нажатия клавиш
От: VictorT Украина http://extreme.lviv.ua/
Дата: 14.01.02 11:13
Оценка:
Здравствуйте Alexander Shargin, Вы писали:

AS>Посмотри SendInput (Win98/NT+SP3+/2000) или keybd_event.

Если можно, поподробнее, ничего не понял. Извиняюсь, что по ошибке послал аналогичное сообщение не в ту нить, наверное его надо удалить.
Re[3]: Эмуляция нажатия клавиш
От: Alexander Shargin Россия RSDN.ru
Дата: 14.01.02 11:44
Оценка:
Здравствуйте VictorT, Вы писали:

VT>Здравствуйте Alexander Shargin, Вы писали:


AS>>Посмотри SendInput (Win98/NT+SP3+/2000) или keybd_event.

VT>Если можно, поподробнее, ничего не понял.

Я назвал тебе две функции, которые, возможно, могут помочь. Они "симулируют" клавиатурный ввод. SendInput удобнее, но есть не на всех платформах.

VOID keybd_event(
  BYTE bVk,           // код виртуальной клавиши
  BYTE bScan,         // аппаратный скан-код
  DWORD dwFlags,      // флаги
  DWORD dwExtraInfo   // дополнительное поле, связанное с нажатием
);


typedef struct tagKEYBDINPUT {
    WORD    wVk;
    WORD    wScan;
    DWORD   dwFlags;
    DWORD   time;
    DWORD   dwExtraInfo;
} KEYBDINPUT, *PKEYBDINPUT, FAR* LPKEYBDINPUT;

typedef struct tagINPUT {
    DWORD   type;
    union {
        MOUSEINPUT      mi;
        KEYBDINPUT      ki;
        HARDWAREINPUT   hi;
    };
} INPUT, FAR* LPINPUT;

UINT SendInput(
  UINT cInputs,
  LPINPUT pInputs,
  INT cbSize
);


Эти функции достаточно понятно описаны в MSDN. Если будут какие-то вопросы, спрашивай конкретно.


VT>Извиняюсь, что по ошибке послал аналогичное сообщение не в ту нить, наверное его надо удалить.


Удалил.
--
Я думал, ты огромный страшный Бажище,
А ты недоучка, крохотный Бажик...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.