我的情况:浏览器显示由本地运行的网络服务器提供的网页。当用户单击页面上的按钮时,我想跳转到另一个可能已经在运行的应用程序。在 Windows 上工作时,我考虑在本地运行的网络服务器中处理按钮单击,然后查找相应HWND
的调用SetForegroundWindow
它。
但是,就目前而言,本地运行的网络服务器没有足够的权限来SetForegroundWindow
. 这些限制是有道理的,但我认为单击是一个足以证明跳转到另一个应用程序的独特事件。
我阅读了一些技术来规避这个限制并强制一个窗口进入前台:
- AttachThreadInput:似乎是个坏主意。
- 发送热键:似乎被Chromium 项目使用,但涉及创建自己的消息循环。它的作者说它可能是一个 Windows 错误(即使旧的新事物在没有明确警告的情况下提到它)。此外,如果另一个已经调用的应用程序注册了这个热键,它就不能可靠地工作。
- 启动一个独立的包装器(从而希望给它足够的权限
SetForegroundWindow
),它的唯一任务是切换到另一个应用程序:看起来很重量级,但可能比其他解决方案更容易。
以上没有一个看起来对我特别有吸引力。我有更好的选择吗?