Отключить и записать ярлыки Windows - PullRequest
0 голосов
/ 20 октября 2019

Я пытаюсь записать комбинации клавиш от пользователя.

Сильфонный код отлично работает для таких вещей, как ctr+A, и он даже записывает win-key, даже если он не останавливает его эффекты.

Но если я хочу записать такие вещи, как ctr+alt+del, alt+tab или alt+F4 он вообще не записывается!

CoreWindow.GetForCurrentThread().Dispatcher.AcceleratorKeyActivated += handleKey;

private void handleKey(CoreDispatcher sender, AcceleratorKeyEventArgs args)
        {
            bool isKeyDown = args.EventType.HasFlag(CoreAcceleratorKeyEventType.KeyDown);
            bool isKeyUp   = args.EventType.HasFlag(CoreAcceleratorKeyEventType.KeyUp);
            var isKeyReleaseOrWasNotDownAlready = args.KeyStatus.IsKeyReleased || !args.KeyStatus.WasKeyDown;

            if ((isKeyDown || isKeyUp) && isKeyReleaseOrWasNotDownAlready)
            {
                args.Handled = true;
                triggerKeyEvent(args);//sends event to a recorder
            }
        }

Есть ли способ остановить распространение горячих клавиш и записать его?

Ответы [ 2 ]

1 голос
/ 21 октября 2019

Я обнаружил, что использование KeyboardDeliveryInterceptor работает для всего, кроме ctr+alt+del или win+L, но эти комбинации невозможно заблокировать.

Не забудьте добавить <rescap:Capability Name="inputForegroundObservation"/> ограниченную возможность.

0 голосов
/ 21 октября 2019

UWP AcceleratorKeyActivated не может захватить горячую клавишу системного уровня. Если вы хотите захватить Ctrl + Alt + Del , Alt + Tab или Alt + F4 , попробуйте создать приложение win32, зарегистрировать горячую клавишу глобуса и использовать службу приложений для связи с uwp. Для получения дополнительной информации, пожалуйста, обратитесь к этому блогу , а это код sample .

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