SendInput с C # блокируется конкретным приложением - PullRequest
0 голосов
/ 01 июля 2019

Я разрабатываю приложение, которое использует SendInput для имитации ввода с клавиатуры.Он отлично работает почти со всеми приложениями, которые я тестировал, но есть одно приложение, которое блокирует SendInput.

Я использую библиотеку InputSimulator для выполнения действия.Ниже приведено исключение при попытке выполнить тестирование с этим конкретным приложением.

System.Exception

Сообщение: некоторые смоделированные команды ввода не были успешно отправлены.Наиболее распространенная причина этого - функции безопасности Windows, в том числе изоляция конфиденциальности пользовательского интерфейса (UIPI).Ваше приложение может отправлять команды только приложениям того же или более низкого уровня.Точно так же некоторые команды ограничены приложениями Accessibility / UIAutomation.Обратитесь к домашней странице проекта и образцам кода для получения дополнительной информации.

StackTrace: em WindowsInput.WindowsInputMessageDispatcher.DispatchInput (входные данные INPUT []) em WindowsInput.KeyboardSimulator.TextEntry (текст строки) em GCDBarcodeReceiveWPF <.MainWindow.> c__DisplayClass41_1.b__2 () на C: \ Users \ GuiDupas \ Dropbox \ Desenvolvimento \ VisualStudio \ ProjetosVisualStudio \ GCDSendInputWPF \ GCDSendInputWPF \ MainWindow.xaml.cs: linha 402

1012:
InputSimulator a = new InputSimulator();
a.Keyboard.TextEntry(inputValue);

Мой манифест приложения выглядит следующим образом:

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="requireAdministrator" uiAccess="true" />
      </requestedPrivileges>
      <applicationRequestMinimum>
        <defaultAssemblyRequest permissionSetReference="FullTrust" />
        <PermissionSet class="System.Security.PermissionSet" version="1" ID="FullTrust" SameSite="site" Unrestricted="true" />
      </applicationRequestMinimum>
    </security>
  </trustInfo>

Я уже пытался использовать <requestedExecutionLevel level="highestAvailable" uiAccess="true" /> в манифесте приложения безуспешно.

КакМогу ли я решить эту проблему с этим конкретным приложением.

...