使用C#的SendInput被特定应用程序阻止

时间:2019-07-01 20:41:32

标签: c# sendinput

我正在开发一个使用SendInput模拟键盘输入的应用程序。几乎我测试过的所有应用程序都可以正常工作,但其中一个阻止了SendInput。

我正在使用InputSimulator库执行操作。下面是我尝试对此特定应用程序进行测试时的异常返回。

  

System.Exception

     

消息:某些模拟输入命令未成功发送。发生这种情况的最常见原因是Windows的安全功能,包括用户界面隐私隔离(UIPI)。您的应用程序只能将命令发送到海拔相同或较低的应用程序。同样,某些命令仅限于辅助功能/ UIAutomation应用程序。有关更多信息,请参考项目主页和代码示例。

     

StackTrace:em WindowsInput.WindowsInputMessageDispatcher.DispatchInput(INPUT []输入)      em WindowsInput.KeyboardSimulator.TextEntry(字符串文本)      GCDBarcodeReceiveWPF.MainWindow。<> c__DisplayClass41_1.b__2()不适用C:\ Users \ GuiDupas \ Dropbox \ Desenvolvimento \ VisualStudio \ ProjetosVisualStudio \ GCDSendInputWPF \ GCDSendInputWPF \ MainWindow.xaml.cs:linha 402

这是我执行动作的方式:

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" />,但没有成功。

如何使用此特定应用程序解决此问题。

0 个答案:

没有答案