Как я могу отладить uiAccess
Единственная реальная вещь, которую можно отлаживать, - это убедиться, что ОС обнаружила, что вы ее запросили. Очень легко сделать, и то, что вы, вероятно, уже сделали: не подписывайте исполняемый файл. С ожиданием, что теперь вы больше не можете запускать EXE. Если он действительно запускается, то вы точно знаете, что UIPI не был отключен.
Keyboard.IsKeyDown возвращает false
Это ожидаемое поведение и то, что отключение UIPI не исправляет. Это свойство WPF использует GetKeyState () под капотом. Довольно печально известная функция в SO со многими жертвами и очень мало полезных ответов. Состояние клавиатуры и обработка ввода выполняются для каждого процесса (технически для очереди ввода), только процесс, имеющий окно на переднем плане, может ожидать нажатия клавиш. Исправление требует использования функции winapi, которую любит ненавидеть Раймонд Чен, AttachThreadInput (). С ожиданием, что с отключенным UIPI он больше не завершается с ошибкой 5 (иначе доступ запрещен).
Очень сложно правильно использовать, не считая проблем Раймонда, так как вам нужно отследить, какое окно находится на переднем плане. Я не могу сказать, зачем вам это нужно, но наверняка вы бы предпочли SetWindowsHookEx () или RegisterHotKey (), возможно, UI Automation, как это поддерживается пространством имен System.Windows.Automation.