В соответствии с MSDN ниже представлен конструктор MouseWheelEventArgs
public MouseWheelEventArgs(
MouseDevice mouse,
int timestamp,
int delta
)
Это метод моего Глобального мышиного крючка, который я пытаюсь выполнить:
private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
{
if (nCode >= 0 && MouseMessages.WM_MOUSEWHEEL == (MouseMessages)wParam)
{
MouseDevice mouseDev = InputManager.Current.PrimaryMouseDevice;
MSLLHOOKSTRUCT hookStruct = (MSLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(MSLLHOOKSTRUCT));
//Initializes a new instance of the MouseWheelEventArgs class using the specified MouseDevice, timestamp, and delta.
MouseAction(null, new MouseWheelEventArgs(mouseDev, timestamp, delta));
}
return CallNextHookEx(_hookID, nCode, wParam, lParam);
}
Я ищу:
Временная метка - хорошо ли просто генерировать текущее время на лету?
delta - вы должны иметь возможность программно получить это с устройства мыши каким-то образом, но как?
Источник ссылки может показать вам, что timestamp
извлекается из "Environment.TickCount".
Статья библиотеки MSDN для MSLLHOOKSTRUCT может показать вам, что delta
передается как верхнее слово элемента MSLLHOOKSTRUCT.mouseData. Убедитесь, что вы объявили этот элемент как int, а не как uint, чтобы расширение знака работало правильно.
Таким образом:
int timestamp = Environment.TickCount;
int delta = hookStruct.mouseData >> 16;
MouseAction(null, new MouseWheelEventArgs(mouseDev, timestamp, delta));