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