我似乎在这里陷入死胡同。我有一个项目,执行以下操作:UAC Window On Top
- 只是运行和停留在通知区域
- 当用户按下鼠标中键,它显示了一个形式
- 然后用户可以从表单选择了什么,并快乐。
这工作得很好,但不工作的是,当窗体显示时,它不会激活。
现在,在我修改app.manifest到requireAdmin
之前,它工作正常。任何时候显示表格,它都会激活。
但是现在我以管理员身份运行窗体,因为我需要能够使用它控制我们的其他应用程序之一(即以管理员身份运行),窗体显示正常,但不激活。
我曾尝试: - TopMost = true
在Form_Load方法 内 - 调用SetForegroundWindow
与形式处理上的Form_Load - 调用上都的Form_Load ShowDialog
,也试了一下形式在构建时。 - 调用上的Form_Load Activate
以及当表单建
这里作为我的布局:
- 程序运行,需要UAC权限由于清单,用户同意,它揭开序幕
- 只有通知图标出现,显示了一个可爱的小气泡说,它的运行
- 的Program.cs监控键盘/鼠标钩子
- 当鼠标中键,或任何键盘钩子被触发,它会创建一个新的表单对象
- 设置表单应该出现的位置
- 然后最后显示表单。
再次,没有UAC和requireAdmin
里面的app.manifest,这工作正常。但一旦它以管理员身份运行,不会停留在前面。我知道MS已经使得SetForegroundWindow
的要求在更高版本的Windows(Vista,7,8)上更严格,但是我真的需要能够使这个表单显示为最顶层的活动窗口(就像上下文菜单)。
我该如何做到这一点?
你正在犯几个可用性罪。如果你想确保你的窗口获得前景的爱,那么你需要使用上下文菜单来激活它。 –
不太清楚你所指的是什么。这不像我是关键日志或类似的东西。 – zackrspv