无论用什么正值代替100(dwData),都会向上滚动而不是向下滚动。负值显示错误。 D7帮助(我在XE2上)说了一些关于负值和NT的东西。如果这个功能对于XP来说太旧了,请提出一些替代解决方案。
procedure TMainform.tmr1Timer(Sender: TObject);
begin
mouse_event(MOUSEEVENTF_WHEEL, 0, 0, 100, 0);
end;
答案 0 :(得分:5)
如果dwFlags包含MOUSEEVENTF_WHEEL,则dwData指定车轮移动量。正值表示车轮向前旋转,远离用户;负值表示车轮向后旋转,朝向用户。单轮定位被定义为WHEEL_DELTA,即120。
请注意,我链接到的文档是MSDN网站。这是Windows API的源代码。
因此,使用WHEEL_DELTA
进行一次向前点击,-WHEEL_DELTA
进行一次向后点击。你需要施放负值:
mouse_event(MOUSEEVENTF_WHEEL, 0, 0, DWORD(-WHEEL_DELTA), 0);
您不一定需要使用轮三角的倍数。所以也许DWORD(-100)
会好的。
最后一点是,SendInput
优先于mouse_event
。可能不是你的问题,因为你只注入一个输入事件,但使用SendInput
是一个很好习惯。