首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Rundll32交换鼠标按钮?

如何使用Rundll32交换鼠标按钮?
EN

Stack Overflow用户
提问于 2011-01-24 04:42:04
回答 5查看 14.9K关注 0票数 7

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

来自MSDN的SwapMouseButton函数

如何通过rundll32.exe从命令提示符将布尔数据传递给从user32.dll运行的命令中的布尔类型参数? 我试图从CMD (命令提示符)上运行这个命令。 RundL32.EXEuser32.dll,SwapMouseButton * 星号在这里是论点应该去的地方。我已经在没有参数的情况下运行了它,它交换了鼠标左键和右键(看起来是布尔参数的默认条目)。现在我想撤销它。但是,我已经尝试了其中的每一个在参数中传递FALSE,但是都没有工作(没有一个将鼠标按钮设置为正常)。

  • F
  • F
  • 错误
  • 错误
  • 错误
  • “假”
  • “假”
  • “假”
  • -1

如有需要,请帮我把论点传过去。提前谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 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#编写程序

代码语言:javascript
复制
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);
    }
}

用下列方法汇编:

代码语言:javascript
复制
"%SystemRoot%\Microsoft.NET\Framework64\v3.5\csc" swap.cs

交换/取消交换按钮:

代码语言:javascript
复制
swap
swap /u
票数 14
EN

Stack Overflow用户

发布于 2012-05-09 02:19:01

非常感谢C#解决方案。就像一种魅力。

我做了一个轻微的修改,这样我就可以简单地点击桌面上的快捷方式来切换主鼠标按钮,而不需要传递参数。如果我的方法对其他人有帮助,下面是这个版本:

代码语言:javascript
复制
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
        }
    }
}
票数 17
EN

Stack Overflow用户

发布于 2015-05-17 10:40:39

有hack,它可以用于为左撇子用户配置鼠标布局。只需运行以下命令:

代码语言:javascript
复制
rundll32.exe user32.dll,SwapMouseButton

运行此命令可以为左撇子用户重新配置鼠标布局。

我要解释一下这种行为:

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

代码语言:javascript
复制
void CALLBACK  EntryPoint(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow);

SwapMouseButton具有以下功能原型:

代码语言:javascript
复制
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函数

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4806575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档