为了改进应用程序中的滚动,我最近添加了对高分辨率滚轮事件的支持。根据文档,这非常简单:WM_MOUSEWEEL的处理程序应该支持任意值,而不是仅支持+/-120。
应用程序能够正确地做到这一点的例子有Windows上的Firefox和Chrome。
我使用的是一个带有高分辨率轮子的Logitech鼠标(MX Master 3(,但我注意到我收到的所有事件都只有+/-120。然而,我可以找到两种非常奇怪的解决方法:
- 将我的程序重命名为Firefox.exe
- 专注于Firefox(我的应用程序在后台(,将鼠标移到上面并滚动到那里
第二个技巧也适用于其他事情。例如,它可以使Windows 10设置应用程序平滑滚动。下面是一个动作差异的演示(前4秒对焦,然后在Firefox对焦的情况下取消对焦(:https://www.youtube.com/watch?v=gb1FUtyLxUg&feature=youtu.be
我认为驱动程序这样做是为了与无法处理任何非120的旧应用程序兼容。但是,我的应用程序有办法选择加入以获得更好的活动吗?还是罗技驱动程序只是硬编码了一堆浏览器,其他人都倒霉了?
在罗技最新的名为Logi Options+的软件中,有一个内置的4个应用程序列表,可以实现高分辨率滚轮滚动。该列表包括msedge.exe、iexplore.exe、chrome.exe和firefox.exe。此逻辑存在于logioptionsplus_agent.exe中。
在他们以前的软件设定值中,你可以向其中一个隐藏窗口发送特定的窗口消息,以在前台应用程序中实现平滑滚动,但在Options+中,他们改变了这一点。
我制作了一个小DLL,用于在内存中修补logioptionssplus_agent.exe,以扩展支持高分辨率滚动的应用程序列表。它适用于当前和以前版本的Logi Options+,当新版本更改调用代码时,可能需要更新代码。
以下是它的链接:https://www.upload.ee/files/15420330/logioptionsplus_smoothwheel.zip.html
说明:
- 将档案中的文件version.dll放在logioptionssplus_agent.exe附近(默认情况下,C:\Program Files\logioptionsplus(
- 在%AppData%\logioptionsplus中创建文本文件wheel_apps_list.txt(例如,C:\Users\User\AppData\Roaming\logoptionsplus\wheel_app.list.txt(,其中包含支持高分辨率滚轮滚动的可执行文件列表(存档中提供的示例(
- 重新加载后台进程Logi Options+Agent(您可以从任务管理器中通过杀死进程logioptionssplus_*来完成,这样它们将自动重新启动(
安装新版本的Logi Options+(手动或自动(时,您需要将version.dll再次放入Logi Options+路径中(安装程序会删除其中的所有内容(。