Могу ли я различать сообщения сенсорной панели и мыши в процессе перехвата низкого уровня? (Вин32)C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Могу ли я различать сообщения сенсорной панели и мыши в процессе перехвата низкого уровня? (Вин32)

Сообщение Anonymous »

Я работаю над добавлением функций сенсорной панели в настольное приложение Windows (написанное на C/C++). Вот мои требования:
  • Пользователь должен иметь возможность одновременно использовать стандартную мышь Windows и сенсорную панель.
  • Все события HID сенсорной панели должны обрабатываться приложением индивидуально, пока оно работает. Он не должен иметь возможности управлять мышью или взаимодействовать с другими окнами.
  • При использовании сенсорной панели это не должно влиять на нормальную работу мыши.
Изучая Win32 API, я узнал, что низкоуровневый перехват мыши можно использовать для блокировки ввода с сенсорной панели/мыши от остальной части системы. У меня работает очередь сообщений и простой процесс перехвата.

Код: Выделить всё

static LRESULT CALLBACK lowLevelHIDHookProc
(
int                 nCode,
WPARAM              wParam,
LPARAM              lParam
)
{
HHOOK ignored( NULL );

// have to pass message along to next hook
if( nCode < 0 )
{
return( CallNextHookEx( ignored, nCode, wParam, lParam ) );
}
// THIS IS WHAT I CAN'T FIGURE OUT
else if( eventComingFromNormalMouse ) // allow normal mouse events
{
return( CallNextHookEx( ignored, nCode, wParam, lParam ) );
}
// block touchpad stuff here
else
{
printf( "********\nTOUCH INTERCEPTED!!!\n********\n" );
return( -1 );
}
Сейчас я застрял на различении сообщений мыши, исходящих от сенсорных панелей и обычных мышей. Я нашел пару проектов и примеров с открытым исходным кодом, которые используют HID Raw Input для обнаружения и чтения общих данных сенсорной панели, но они подходят для отключения курсора мыши во время использования сенсорной панели. Вместо этого мне нужно выяснить в этой процедуре перехвата, генерируется ли сообщение устройством с сенсорной панелью, и в этом случае только блокировать, чтобы мышь могла работать нормально.
Я просматриваю документацию lParam/MSLLHOOKSTRUCT, но не вижу ничего, что могло бы помочь провести это различие. Я открыт для любых идей, в том числе вообще не использовать низкоуровневые перехватчики, поскольку они влияют на производительность. Может быть, есть способ открыть последовательное соединение с сенсорной панелью USB, чтобы Windows вообще не определила его как HID-устройство?

Подробнее здесь: https://stackoverflow.com/questions/678 ... k-proc-win
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»