C#气球通知弹出窗口覆盖所有其他应用程序
我在C#中有一个气球式弹出窗口(来自notifyIcon),它工作得非常好,除非在用户监视器上有一个全屏应用程序,比如power point演示。在这种情况下,弹出窗口根本不显示。但是,一旦该应用程序退出或最小化(或任务栏置于前面),您就可以再次看到气球弹出窗口 有没有办法让这个弹出窗口显示在所有窗口上?类似于表单的“最顶层”设置?如果有人需要,我的气球代码如下C#气球通知弹出窗口覆盖所有其他应用程序,c#,.net,c#-4.0,C#,.net,C# 4.0,我在C#中有一个气球式弹出窗口(来自notifyIcon),它工作得非常好,除非在用户监视器上有一个全屏应用程序,比如power point演示。在这种情况下,弹出窗口根本不显示。但是,一旦该应用程序退出或最小化(或任务栏置于前面),您就可以再次看到气球弹出窗口 有没有办法让这个弹出窗口显示在所有窗口上?类似于表单的“最顶层”设置?如果有人需要,我的气球代码如下 notifyIcon1.BalloonTipText = "Issue found!"; notifyIcon1.ShowBalloo
notifyIcon1.BalloonTipText = "Issue found!";
notifyIcon1.ShowBalloonTip(5000);
谢谢大家! 既然看起来没有办法做到这一点,下面是我所做的。它就像一个自定义的气球消息,只需将表单设置为无边框,保持较小,并将TopMost=true。您需要调整WorkingArea.Right和WorkingArea.Bottom以适应表单大小。添加计时器以在10秒后自动终止表单(在我完成所有测试后会更短),我本来不想走这条路线,因为我希望气球消息提供了一种方法:
private void notifyUser_Load(object sender, EventArgs e)
{
var screen = Screen.FromPoint(this.Location);
this.Location = new Point(screen.WorkingArea.Right - 250, screen.WorkingArea.Bottom - 85);
}
private void timer1_Tick(object sender, EventArgs e)
{
count++;
if (count > 10)
{
count = 0;
this.Close();
}
}
对于每个担心用户不想看到它的人来说,这个程序是专门为监视Windows中的其他应用程序/设置/日志而创建的,如果有错误,他们会想知道。Power Points并不是在这些计算机上运行的,这只是一个例子,所以每个人都知道我的意思。我以后会把它弄得“更漂亮”的。这实际上是可能的。当您的应用程序(或其他应用程序)全屏运行时,它也会覆盖任务栏,从而覆盖系统托盘,从而防止气泡显示。诀窍是在显示通知之前将焦点放在Windows系统托盘上。下面是如何做到这一点
也许做Power Point演示的人不想看到你的气球…一切都可以做到,但你不应该尝试。这是违反用户界面标准的收件人:一个反对让windows看起来很糟糕的做法的用户。你在使用哪种UI技术
Winforms
?可能重复您不认为其他窗口可能会标记为“始终在顶部”吗?如果是这样的话,你要求的“始终在顶部”并不总是意味着“始终在顶部”——除了同时,你要求自己的“始终在顶部”总是意味着“始终在顶部”。你应该记住一个基本原则:你并不特别。你没有得到特殊待遇。适用于其他人的程序的规则同样适用于您的程序。
[DllImport("user32.dll")] static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll")] static extern bool SetForegroundWindow(IntPtr hWnd);
SetForegroundWindow(FindWindow("Shell_TrayWnd", null));
notifyIcon1.visible = true;
notifyIcon1.ShowBalloonTip(5000);