我有一个C ++应用程序可以将触摸事件转换为鼠标输入。我正在使用 SendInput API在Windows 7(32/64位)系统上发送鼠标事件。为了允许用户在应用程序中输入字符,我使用内置的Windows 屏幕键盘(osk.exe)。
当我的应用程序生成的任何鼠标按下事件发生当光标位于OSK窗口的窗口装饰(标题栏,系统菜单等)上时冻结鼠标。似乎只处理鼠标按下事件,因为我可以看到OSK获得焦点。我的应用程序不断发送其他鼠标事件,但它们对OSK窗口没有影响。唯一的出路是按下/释放连接到系统的物理USB鼠标。
奇怪的是,通过在我的应用程序上的OSK键盘按钮上发送鼠标按下来使用OSK输入字符工作正常。只是试图移动(或关闭)OSK窗口冻结了鼠标处理。
作为解决方案,我尝试了下面的事情: (1)在我的应用程序的清单文件中生成 uiAccess = true (2)申请代码已经签署 (3)应用程序驻留在受信任的位置
但仍然会出现问题。
如果我以管理员的身份运行我的应用程序,那么它可以正常工作。但我不希望我的应用程序以“以管理员身份运行”开始。
有什么建议吗?