我正在开发一个使用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" />
,但没有成功。
如何使用此特定应用程序解决此问题。