如何使用mouse_event模拟向下滚动滚动按钮(MOUSEEVENTF_WHEEL

时间:2014-11-12 13:40:20

标签: delphi delphi-xe2

无论用什么正值代替100(dwData),都会向上滚动而不是向下滚动。负值显示错误。 D7帮助(我在XE2上)说了一些关于负值和NT的东西。如果这个功能对于XP来说太旧了,请提出一些替代解决方案。

 procedure TMainform.tmr1Timer(Sender: TObject);
 begin
    mouse_event(MOUSEEVENTF_WHEEL, 0, 0, 100, 0);
 end;

1 个答案:

答案 0 :(得分:5)

documentation说:

  

如果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是一个很好习惯。