Горизонтальная прокрутка не работает mouse_event (MOUSEEVENTF_HWHEEL) - PullRequest
3 голосов
/ 28 ноября 2011

Горизонтальная прокрутка отсутствует, когда я вызываю этот метод в Delphi 3 под Windows 7:

const MOUSEEVENTF_HWHEEL = $1000;
mouse_event(MOUSEEVENTF_HWHEEL, 0, 0, 120, 0);

Вертикальная прокрутка с MOUSEEVENTF_WHEEL работает хорошо. Результат совпадает с SendInput, а возвращаемое значение указывает на успех. Моя текущая мышь поддерживает горизонтальный наклон, но не имеет горизонтальной прокрутки.

Что нужно для использования MOUSEEVENTF_HWHEEL?

Документация SDK: http://bit.ly/mouse_event

Крючок для мыши

Я создал вторую 32-битную программу exe под Windows 7 только для того, чтобы увидеть, отправляет ли мышь сообщения при прокрутке горизонтального колеса. Этот хук получает VSCROLL, но не получает сообщений HSCROLL.

MouseHook := SetWindowsHookEx(WH_MOUSE_LL, @MouseProc, hInstance, 0);

1 Ответ

2 голосов
/ 30 ноября 2011
int main()
{
    Sleep(20000); // enough time to switch windows and position the mouse pointer
    mouse_event(MOUSEEVENTF_HWHEEL, 0, 0, 120, 0);
    return 0;
}

прокрутил мою выбранную страницу Firefox вправо.окно должно быть выбрано, а указатель мыши должен быть над страницей.Я сделал это с включенной мышью.Или также выключил мышь во время тестирования (используя переключатель вкл / выкл на самой мыши), результат был тот же.У моей мыши горизонтальный наклон, скроллера нет.(Windows 7 Ultimate)

РЕДАКТИРОВАТЬ

Одна вещь, на которую следует обратить внимание: Сама программа должна обрабатывать сообщение.Firefox например делает.Он показывает то же поведение, что и наклон колесика мыши: страница прокручивается влево / вправо соответственно.Другие программы, такие как IE, похоже, не обрабатывают это сообщение, поэтому никакой прокрутки нет.Даже с помощью мыши (Logitech Performance MX без какого-либо дополнительного программного пакета) ничего не прокручивается.Таким образом, кажется, что нет 100% решения этой проблемы, просто отправив сообщения mouse_event.

...