C # Force регистр / перезаписать горячие клавиши - PullRequest
0 голосов
/ 29 августа 2018

Я хочу принудительно зарегистрировать / перезаписать горячие клавиши ... поэтому этот код работает нормально, но он не работает, когда эта горячая клавиша уже зарегистрирована для другого приложения ...

поэтому я хочу перезаписать горячую клавишу, возможно ли это?

[DllImport("user32", SetLastError=true)]
private static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint vk);

[DllImport("user32", SetLastError = true)]
private static extern bool UnregisterHotKey(IntPtr hWnd, int id);

enum KeyModifier
{
     None = 0,
     Alt = 1,
     Control = 2,
     Shift = 4,
     WinKey = 8
}

public ExampleForm()
{
     InitializeComponent();

     int id = 0;     // The id of the hotkey. 
     RegisterHotKey(this.Handle, id, (int)KeyModifier.Shift, Keys.A.GetHashCode());       // Register Shift + A as global hotkey. 
}

1 Ответ

0 голосов
/ 29 августа 2018

Я согласен с IInspectable (и, очевидно, с Раймондом). Вам следует избегать этого. Но если вы абсолютно обязаны это сделать, я считаю, что Windows Hooks, использующие SetWindowHookEx, - это путь.

Хуки системного уровня - это серьезная вещь, и при их реализации следует соблюдать осторожность, поскольку они влияют на производительность системы. .

Для получения подробной информации и рабочего кода смотрите здесь и здесь .

Заметьте еще раз: Это перебор, и все равно, что использовать кувалду (или я бы сказал, Разрушительный молот), чтобы сломать гайку. Но иногда ты должен делать то, что должен!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...