gpt4 book ai didi

c# - 如何通过单击任务栏来检测应用程序是否被激活

转载 作者:行者123 更新时间:2023-11-30 22:43:41 26 4
gpt4 key购买 nike

我有一个包含多个窗口的应用程序,其中只有主窗口出现在任务栏中。

单击任务栏中的图标,我希望我的所有应用程序窗口显示在任何其他打开的窗口之上。

我尝试了 Form_Activated 事件,但如果通过在主窗口中直接单击激活应用程序,也会触发此事件。

那么我如何检测是否有人仅从任务栏激活了应用程序?

最佳答案

它已经这样工作了。但是,您必须使用 Show(owner) 重载,以便“子”窗口始终位于主窗口之上,并且不会丢失在另一个应用程序的窗口后面。几乎任何商业程序都是这样工作的。

区分Activated原因是可以的,Windows提供了之前激活窗口的窗口句柄。然后您可以检查它是否是您自己的窗口之一。然而,这在事件中不可用,您必须自己捕获消息。像这样:

    protected override void WndProc(ref Message m) {
base.WndProc(ref m);
// Trap WM_ACTIVATE when we get active
if (m.Msg == 6 && m.WParam.ToInt32() == 1) {
if (Control.FromHandle(m.LParam) == null) {
Console.WriteLine("activated from another process");
}
}
}

关于c# - 如何通过单击任务栏来检测应用程序是否被激活,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3834257/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com