C# 当任务栏/开始菜单在我最上面的窗体/窗口上时,是否将窗口消息发送到它?

C# 当任务栏/开始菜单在我最上面的窗体/窗口上时,是否将窗口消息发送到它?,c#,winforms,message,topmost,window-messages,C#,Winforms,Message,Topmost,Window Messages,我在Windows7中有一个C#Windows窗体程序,但我认为它适用于任何Windows程序 我的程序的主要形式覆盖了整个屏幕,并且具有最顶层的属性集。但是,例如,当我单击开始键打开开始菜单时,任务栏和开始菜单将显示在我的始终在顶部窗体的顶部 如果发生这种情况,并且我的表单/窗口不再是最上面的窗口(或在Z顺序的顶部),是否有发送到我的表单/窗口的窗口消息(WM_3;)?我想用WndProc捕捉它 谢谢你我认为把雷蒙德·陈(Raymond Chen)的故事公诸于世是明智的,尽管这只是一个有趣的故

我在Windows7中有一个C#Windows窗体程序,但我认为它适用于任何Windows程序

我的程序的主要形式覆盖了整个屏幕,并且具有最顶层的属性集。但是,例如,当我单击开始键打开开始菜单时,任务栏和开始菜单将显示在我的始终在顶部窗体的顶部

如果发生这种情况,并且我的表单/窗口不再是最上面的窗口(或在Z顺序的顶部),是否有发送到我的表单/窗口的窗口消息(WM_3;)?我想用WndProc捕捉它


谢谢你

我认为把雷蒙德·陈(Raymond Chen)的故事公诸于世是明智的,尽管这只是一个有趣的故事,但还是要非常严肃地对待它


引用:“当两个程序像这样“决一胜负”时,你无法预测哪一个会赢,但你可以100%肯定地预测谁会输:用户。”

正如rene在上述帖子中所说,如果多个应用程序使用相同的逻辑,这将是一个竞争条件,但如果你仍然想这样做,我认为看一看会是一个好的开始

当你得到信息时,你打算怎么做?您想停止任务栏和“开始”菜单的显示,还是只想知道?我想使用BringToFront将我的窗口带到前面。我现在的做法是每100毫秒使用一个计时器来调用BringToFront,但我担心这是在浪费资源,可能会降低计算机的速度。这难道不会让用户无法使用“开始”菜单吗?任务栏和“开始”菜单快速进入视图,然后被隐藏,这看起来一定很糟糕。这一切的目的是什么?在关闭我的程序(这很容易做到)后,用户可以像往常一样使用开始菜单。这是一个演示问题,我希望我的程序在运行的过程中始终处于领先地位。你最好希望用户不是在运行另一个具有相同想法的程序。感谢你分享这篇博文,阅读效果非常好。我会尽量记住这些建议。