微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我如何使用Rundll32 swapmousebutton?

我从另一个论坛重复一个问题,因为我想要相同的答案。

从MSDN的SwapMouseButton函数

如何从命令提示符通过rundll32.exe布尔数据传递到从user32.dll运行的命令中的布尔types参数?

我试图从CMD运行(命令提示符)

Windows相当于/ dev / random

键盘存在时,Windows Phone应用程序会滚动问题

适用于Windows的PECL OAuth-1.2.2

如何使一个符号button与16×16像素的图标大小?

从blob中逐行读取Windows Azure中的存储

rundll32.EXE user32.dll,SwapMouseButton *

这里的星号在哪里是论点应该去的地方。 我已经运行它没有参数,它交换了我的左右鼠标button(似乎TRUE是布尔参数的认条目)。 现在我想撤消它。 不过,我已经尝试了每个这些在参数中传递FALSE,并没有工作(没有设置我的鼠标button恢复正常)。

F

F

“假”

“假”

“假”

-1

请帮助我根据需要传递论据。 提前致谢。

用可变用户IDreplaceWindows目录path中的用户名

GIT C / C ++库作为DLL

从WMI原始计数器收集Windows cpu使用率

Git – 后接收钩不能在远程的Windows服务器上工作

在Windows API中是否存在一个用于在特定应用程序运行时触发代码方法

你不使用rundll32

Q164787:信息:Windows Rundll和rundll32接口

Rundll和rundll32程序不允许您从任何DLL调用任何导出的函数。 例如,您不能使用这些实用程序来调用从系统DLL导出的Win32 API(应用程序编程接口)调用。 这些程序只允许你从一个明确写入的DLL调用函数

如果已经安装了.NET Framework Runtime,则会附带多种语言的编译器(例如,用于64位系统上的v3.5 C#编译器的%systemRoot%Microsoft.NETFramework64v3.5csc.exe )。 你可以用C#编写一个程序 :

using System.Runtime.InteropServices; using System; class SwapMouse { [DllImport("user32.dll")] public static extern Int32 SwapMouseButton(Int32 bSwap); static void Main(string[] args) { if (args.Length > 0 && String.Compare(args[0],"/u",true) == 0) SwapMouseButton(0); else SwapMouseButton(1); } }

编译:

"%systemRoot%Microsoft.NETFramework64v3.5csc" swap.cs

交换/取消切换按钮:

swap swap /u

非常感谢C#解决方案。 它像一个魅力工作。

我做了一些小改动,只需点击桌面快捷方式即可切换鼠标主键,而不用传入任何参数。 如果我的方法帮助别人,这里是这个版本:

using System.Runtime.InteropServices; using System; class SwapMouse { [DllImport("user32.dll")] public static extern Int32 SwapMouseButton(Int32 bSwap); static void Main(string[] args) { int rightButtonIsAlreadyPrimary = SwapMouseButton(1); if (rightButtonIsAlreadyPrimary != 0) { SwapMouseButton(0); // Make the left mousebutton primary } } }

有黑客,可以用来为左手用户配置鼠标的布局。 只需运行以下命令:

rundll32.exe user32.dll,SwapMouseButton

运行此命令为左手用户重新配置鼠标的布局。

我会给你一个这种行为的解释:

rundll32.exe调用函数具有以下函数原型:

void CALLBACK EntryPoint(HWND hwnd,HINSTANCE hinst,LPSTR lpszCmdLine,int nCmdshow);

SwapMouseButton具有以下函数原型:

BOOL WINAPI SwapMouseButton( _In_ BOOL fSwap )

SwapMouseButton使用与rundll32.exe调用的每个函数相同的调用约定(__stdcall)。

如果使用带附加命令行的rundll32.exe调用SwapMouseButton,则此命令行将作为lpszCmdLine传递给此函数,并将被忽略。

如果使用rundll32调用函数,则rundll32自动传递一个有效的窗口句柄(HWND)作为被调用函数的第一个参数。

hwnd – 窗口句柄,应该用作DLL创建窗口的所有者窗口

rundll32调用函数SwapMouseButton函数需要TRUE作为第一个参数,以便为左手用户配置鼠标的布局。 在使用BOOL值时,由rundll32.exe传递给user32.dll中的SwapMouseButton的有效窗口句柄不等于0,并且被定义为TRUE。

你可以在这里找到rundll32.exe和这个可执行文件调用函数使用的原型的详细信息: INFO:Windows Rundll和rundll32 Interface

您可以在这里找到有关函数SwapMouseButton的详细信息: SwapMouseButton函数(Windows)

C中较短的交换器:

#include <windows.h> int main() { if (SwapMouseButton(TRUE)) SwapMouseButton(FALSE); return 0; }

安装Windows SDK并在x86_x64中编译交叉工具命令提示符通过例如。 cl swapmbtn.c "C:Program Files (x86)Windows Kits10Lib10.0.15063.0umx64user32.lib"

重命名为WinMain以防止控制台窗口闪烁。

我通过在开始菜单搜索“鼠标”来解决同样的问题。 你会找到一个同名的选项。 点击它。 将出现一个对话框。 在“按钮配置”框中取消选择按钮选项卡中的“切换主要和次要按钮”选项。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐