我在重复另一个论坛的问题,因为我想要同样的答案。
来自MSDN的SwapMouseButton函数。
如何通过rundll32.exe从命令提示符将布尔数据传递给从user32.dll运行的命令中的布尔类型参数? 我试图从CMD (命令提示符)上运行这个命令。 RundL32.EXEuser32.dll,SwapMouseButton * 星号在这里是论点应该去的地方。我已经在没有参数的情况下运行了它,它交换了鼠标左键和右键(看起来是布尔参数的默认条目)。现在我想撤销它。但是,我已经尝试了其中的每一个在参数中传递FALSE,但是都没有工作(没有一个将鼠标按钮设置为正常)。
如有需要,请帮我把论点传过去。提前谢谢。
发布于 2011-01-25 06:01:26
http://blogs.msdn.com/b/oldnewthing/archive/2004/01/15/58973.aspx为此使用了rundll32。
http://support.microsoft.com/kb/q164787信息: Windows和Rundll32接口 ..。Rundll和Rundll32程序不允许您从任何DLL调用任何导出函数。例如,不能使用这些实用程序调用从系统DLL导出的Win32 API (应用程序编程接口)调用。程序只允许您从DLL调用函数,这些函数被显式写入以由它们调用。
如果安装了.NET Framework,它附带了几种语言的编译器(例如,64位系统上的v3.5 C#编译器的%SystemRoot%\Microsoft.NET\Framework64\v3.5\csc.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.NET\Framework64\v3.5\csc" swap.cs交换/取消交换按钮:
swap
swap /u发布于 2012-05-09 02:19:01
非常感谢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
}
}
}发布于 2015-05-17 10:40:39
有hack,它可以用于为左撇子用户配置鼠标布局。只需运行以下命令:
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)作为被调用函数的第一个参数。
应该用作DLL创建的任何窗口的所有者窗口的hwnd -窗口句柄。
由SwapMouseButton调用的函数rundll32需要TRUE作为第一个参数,以便为左撇子用户配置鼠标布局。在user32.dll中,rundll32.exe传递给SwapMouseButton的有效窗口句柄等于0,并在使用BOOL值时定义为TRUE。
您可以在这里找到rundll32.exe和由此可执行文件调用的函数所使用的原型的详细信息:信息: Windows和Rundll32接口
您可以在这里找到有关函数SwapMouseButton的详细信息:SwapMouseButton函数
https://stackoverflow.com/questions/4806575
复制相似问题