Какой самый простой способ добавить глобальные сочетания клавиш в Windows? - PullRequest
5 голосов
/ 04 июня 2009

Я бы хотел, чтобы мое приложение обнаруживало сочетания клавиш, когда оно не работает, но поскольку в Windows нет возможности сделать это, разумным вариантом было бы иметь фоновый процесс без какого-либо пользовательского интерфейса, который прослушивает нажатия клавиш , Можно ли отслеживать нажатия клавиш, когда приложение не находится на переднем плане в .Net?

Похоже на это Статья CodeProject имеет то, что мне нужно.

Ответы [ 4 ]

4 голосов
/ 04 июня 2009

Эта библиотека тоже довольно хороша

РЕДАКТИРОВАТЬ: я недавно создал эту библиотеку, которая использует другой подход: NHotkey

4 голосов
/ 04 июня 2009

С ярлыком Windows может быть связана горячая клавиша - щелкните правой кнопкой мыши любую программу в меню «Пуск», выберите «Свойства», и вы увидите окно «Сочетание клавиш». Затем Windows будет искать эту горячую клавишу от вашего имени и запускать вашу программу, когда увидит ее. (Я использую его, чтобы Ctrl+Alt+C запустить Калькулятор.)

Чтобы настроить это программно, используйте IShellLink .

4 голосов
/ 04 июня 2009

Вызывая этот API:

RegisterHotKey

http://msdn.microsoft.com/en-us/library/ms646309.aspx

http://www.pinvoke.net/default.aspx/user32/RegisterHotKey.html

Затем переопределите этот метод "WndProc" для мониторинга нажатий клавиш.

protected override void WndProc(ref System.Windows.Forms.Message m)
    {
        // let the base class process the message
        base.WndProc(ref m);

        // if this is a WM_HOTKEY message, notify the parent object
        const int WM_HOTKEY = 0x312;
        if (m.Msg == WM_HOTKEY) ...............

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.wndproc(VS.71).aspx

3 голосов
/ 04 июня 2009

Нет способа сделать его не навязчивым.

Всегда навязчиво добавлять глобальные сочетания клавиш. Если вам все равно придется это сделать, убедитесь, что это функция отказа от участия.

...