Вопрос или проблема
Я пробовал
RUNDLL32.EXE USER32.DLL,SwapMouseButton
Но это не срабатывает, даже при запуске от имени администратора.
Моя цель — создать файл .bat, который я могу запускать с помощью моей новой шикарной мыши, которую я купил, и который позволяет мне вызывать любую произвольную команду при клике мышью.
Переключение кнопок мыши из командной строки
Мы можем поменять местами кнопки мыши, изменив значение реестра
SwapMouseButtons
в разделе реестраHKEY_CURRENT_USER\Control Panel\Mouse
. Чтобы поменять кнопки мыши местами, нужно установить значение в1
.То же самое можно сделать из командной строки, используя следующую команду.
reg add "HKEY_CURRENT_USER\Control Panel\Mouse" /v SwapMouseButtons /t REG_SZ /d 1
Требуется выход из системы или перезагрузка, чтобы изменения вступили в силу.
Ссылка Переключение кнопок мыши из командной строки:
Альтернативное решение
Как использовать Rundll32 для переключения кнопок мыши? в качестве решения на C# (требуется установленная среда выполнения .NET Framework)
Я использовал текст ниже на Windows 10 и сохранил его как sandbox_mouse_button_swap.wsb
Двойной щелчок по этому файлу открывает песочницу с переключенными кнопками мыши, без необходимости перезагрузки.
<Configuration>
<LogonCommand>
<Command>rundll32.exe user32.dll,SwapMouseButton</Command>
</LogonCommand>
</Configuration>
Я не эксперт в этом — я попробовал оба вышеуказанных решения, но они не сработали, поэтому я просто создал файл .bat с следующим скриптом команд, сохранил его на рабочем столе, и всякий раз, когда я хочу поменять местами, я дважды щелкаю по скрипту, чтобы его запустить, и он делает свою работу за меня.
rundll32.exe user32.dll,SwapMouseButton
Как уже сообщали другие, решение с реестром Windows не так удобно, так как необходимо выходить из системы или перезагружаться, чтобы изменения вступили в силу.
Я нашел это решение на C# здесь: https://pimaxplus.com/en/blog/windows/swapping-mouse-buttons/
Немедленно эффективно, без необходимости выхода из системы/перезагрузки.
Проверено и работает на Windows 11.
Код C# (SwapMouseButtons.cs):
using System;
using System.Runtime.InteropServices;
class SwapMouseButtons {
[DllImport("user32.dll")]
public static extern Int32 SwapMouseButton(Int32 fSwap);
static void Main(string[] args)
{
// Попытаемся сделать правую кнопку мыши основной.
int alreadyPrimary = SwapMouseButton(1);
// Если значение кнопок мыши было ранее изменено,
// до вызова функции, возвращаемое значение неверно.
// Если значение кнопок мыши не было изменено,
// возвращаемое значение равно нулю.
if (alreadyPrimary != 0)
{
// Сделаем левую кнопку мыши основной.
SwapMouseButton(0);
}
}
}
А затем скомпилируем, чтобы получить исполняемый файл (SwapMouseButtons.exe):
"%SystemRoot%\Microsoft.NET\Framework64\v4.0.30319\csc" SwapMouseButtons.cs
Затем я могу вызывать маленький .exe из моего .bat скрипта.
Счастливо.
Ответ или решение
Для переключения основных и дополнительных кнопок мыши через командную строку в Windows 8, не требуя перезагрузки системы, можно использовать метод, который не зависит от редактирования реестра, где обычно требуются перезагрузка или выход из системы для применения изменений. Вместо этого, существует способ, который можно реализовать с помощью небольшого скрипта C#, который запускает определённую функцию.
Шаги для создания и использования C# программы для переключения кнопок мыши
-
Создание C# кода:
Открыть любой текстовый редактор (например, Notepad) и ввести следующий код:
using System; using System.Runtime.InteropServices; class SwapMouseButtons { [DllImport("user32.dll")] public static extern Int32 SwapMouseButton(Int32 fSwap); static void Main(string[] args) { // Переключаем кнопки мыши int alreadyPrimary = SwapMouseButton(1); // Переключаем кнопки // Проверка, было ли окончательное состояние if (alreadyPrimary != 0) { // Возвращаем первоначальное состояние SwapMouseButton(0); } } }
-
Компиляция программы:
Сохраните файл с расширением
.cs
, например,SwapMouseButtons.cs
. Затем откройте командную строку с правами администратора и выполните следующую команду (предварительно замените путь к вашей версии .NET Framework, если это необходимо):"%SystemRoot%\Microsoft.NET\Framework64\v4.0.30319\csc" SwapMouseButtons.cs
Это создаст исполняемый файл
SwapMouseButtons.exe
в текущей директории. -
Создание .bat файла:
Создайте текстовый файл с расширением
.bat
, например,SwapMouse.bat
, содержащий следующую строку, чтобы выполнить ваше скомпилированное приложение:start /b C:\Path\To\Your\SwapMouseButtons.exe
Не забудьте заменить
C:\Path\To\Your\
на фактический путь к вашемуSwapMouseButtons.exe
. -
Запуск скрипта:
Теперь, когда вы хотите переключить кнопки мыши, достаточно дважды щёлкнуть по вашему
.bat
файлу, и изменения вступят в силу немедленно.
Преимущества данного метода
- Без перезагрузки: В отличие от изменения реестра, который требует перезагрузки или выхода из системы, данный метод немедленно применяет изменения.
- Гибкость использования: Вы можете инициировать переключение кнопок мыши с помощью ваших новых там, где это необходимо, всего лишь кликая по файлу.
- Легкость в настройке: Вам не нужно углубляться в настройки системы или реестра.
Заключение
Использование C# для переключения основных и дополнительных кнопок мыши в Windows 8 является простым и эффективным решением. Убедитесь, что у вас установлен .NET Framework, чтобы компиляция работала корректно. Этот подход позволяет избежать неудобства, связанного с перезагрузкой, и обеспечивает простоту использования с возможностью интеграции с любыми внешними устройствами.