如何在 Tweak UI 中打开 On/Off X-Mouse?

How Do I Turn On/Off X-Mouse in Tweak UI?

我正在尝试创建一个 VB6 可执行文件(不确定语法是否正确),它将在 Windows 98SE 下的 Tweak UI 中切换 X-Mouse 选项。理想情况下,我想要两个脚本 - 一个将其关闭(无论其状态如何),另一个将其打开(同样,无论其状态如何)。

我已经能够使用下面的代码打开 TweakUI 控制面板。

Private Sub Form_Load()
Call Shell("rundll32.exe shell32.dll,Control_RunDLL tweakui.cpl", vbNormalFocus)
End Sub

如果可能的话,我希望它在不打开 TweakUI 控制面板的情况下执行此操作。

据我所知,更改注册表设置不起作用,因为我必须重新启动计算机才能生效。

我有注册表监视器 7.04 运行。它捕获以下内容:

Path: C:\WINDOWS\RUNDLL32.EXE
Command Line: "C:\WINDOWS\RUNDLL32.EXE" "C:\WINDOWS\SYSTEM\TWEAKUI.CPL", Tweak UI
Other: hKey: 0xC2A066F0

老实说,我不确定如何前进。

不确定显示这方面进展的最佳方式,我将进行编辑。

这段代码非常接近。

Private Declare Function SystemParametersInfo Lib "user32" Alias _
"SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, _
ByRef lpvParam As Any, ByVal fuWinIni As Long) As Long
Const SPI_SETACTIVEWINDOWTRACKING = 4097

'Click on this button to Activate XMouse
Private Sub Command1_Click()
SystemParametersInfo SPI_SETACTIVEWINDOWTRACKING, 0, True, 0
End Sub

'Click on this button to Deactivate XMouse
Private Sub Command2_Click()
SystemParametersInfo SPI_SETACTIVEWINDOWTRACKING, 0, False, 0
End Sub

按钮 1 工作正常并激活 XMouse。但是按钮二并没有关闭它。

SPI_SETACTIVEWINDOWTRACKING 是执行此操作的参数。

systemparametersinfo 是这样获取或设置设置的函数调用。参见 https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-systemparametersinfoa

有使用 systemparametersinfo 更改壁纸的示例代码。 https://winsourcecode.blogspot.com/2019/06/changewallpaper.html

感谢您提供的所有信息。我能够解决这个问题。

Private Declare Function SystemParametersInfo Lib "user32" Alias _
"SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, _
ByVal lpvParam As Boolean, ByVal fuWinIni As Long) As Long
Const SPI_SETACTIVEWINDOWTRACKING = 4097


Private Sub Command1_Click()
retVal = SystemParametersInfo(SPI_SETACTIVEWINDOWTRACKING, 0, True, 0)
End Sub

Private Sub Command2_Click()
retVal = SystemParametersInfo(SPI_SETACTIVEWINDOWTRACKING, 0, False, 0)
End Sub

除了这里的帮助之外,我还偶然发现了一些能够满足我需要的东西。 Control the mouse speed under Windows 98 / 2000Controling Active Window Tracking

有几点值得注意。我必须包括这个,否则什么都不会发生:

Const SPI_SETACTIVEWINDOWTRACKING = 4097

另外,第三个参数是

ByRef lpvParam As Boolean

而不是

ByVal lpvParam As Boolean

我传递的是指向指针的指针而不是指向值的指针