【发布时间】:2011-02-02 07:37:12
【问题描述】:
所以是的,我发现自己处于执行SwitchToThisWindow 调用以强制我的窗口位于前面的可疑位置。我同意,这并不理想,但并不总是可以反对其他人认为必要的产品“功能”。
现在,我认为 SwitchToThisWindow 是对 AttachThreadInput 黑客进行强制窗口切换的胜利,因为它不太可能死锁,如果 SwitchToThisWindow 被删除或停止运行,我不会抱怨.
但是,SwitchToThisWindow 有一个不幸的副作用,即除了在为 fAltTab 参数传递 FALSE 时将目标窗口推到顶部之外,还将当前前景窗口推到 z 顺序的底部,并且不执行任何操作如果 TRUE 通过。
如何在不诉诸AttachThreadInput 的情况下避免这种“将当前活动推到 z 底部”的行为?
或者,MS 可以删除 AttachThreadInput 作为可行的解决方法,我可以告诉我的经理,这不可能,事实上,实际上,不可能。
【问题讨论】:
-
我认为你不能简单地使用
SetForegroundWindow?目前尚不清楚您需要实现哪些产品功能,除了将窗口放在前面。SetForegroundWindow甚至适用于附加到另一个线程的窗口,而不是您当前所在的线程,但它确实要求您的应用程序当前处于前台。我不知道这是否是个问题。 -
这就是问题所在:即使用户有不同的应用程序处于活动状态,也会出现在前台。
-
我明白了。您想成为 那些 应用程序之一。难怪您将您的职位描述为“不理想”。是否没有回旋余地以“正确”的方式做事并显示通知图标或吐司滑块?向你的老板展示:“Well-designed programs use the notification area appropriately, without being annoying or distracting.”:-)
-
他读过。他不买。在我的支持下,我已经说服他们将其作为一个选项......也许默认情况下不会启用。基本上,一个竞争包可以做到这一点,我们必须竞争,显然是在缺陷和特性上:/