C# 禁用NotifyIconOverflowWindow自动隐藏

C# 禁用NotifyIconOverflowWindow自动隐藏,c#,winapi,taskbar,flyout,C#,Winapi,Taskbar,Flyout,我已经做了弹出窗口类似于win7电池表。除了通过位于NotifyAreaOverflowWindowaka notify overfow区域的notify图标显示外,它的行为与内置窗口一样,该窗口在一段时间后自动隐藏,而只有当我的弹出按钮关闭时才应该隐藏。我可以通过spyxx发现的唯一区别是,在一段时间后,溢出窗口只会向自己发送一条WM\u SHOWWINDOW wp:0 lp:0消息 当弹出按钮处于活动状态时,如何防止溢出窗口自动隐藏 图1:点击位于溢出区的notify(通知)图标+几秒钟

我已经做了弹出窗口类似于win7电池表。除了通过位于
NotifyAreaOverflowWindow
aka notify overfow区域的notify图标显示外,它的行为与内置窗口一样,该窗口在一段时间后自动隐藏,而只有当我的弹出按钮关闭时才应该隐藏。我可以通过
spyxx
发现的唯一区别是,在一段时间后,溢出窗口只会向自己发送一条
WM\u SHOWWINDOW wp:0 lp:0
消息

当弹出按钮处于活动状态时,如何防止溢出窗口自动隐藏

  • 图1:点击位于溢出区的notify(通知)图标+几秒钟用户不活动后,显示测试弹出按钮
  • 图2:单击位于溢出区的notify(通知)图标显示电池电量计弹出按钮,用户处于不活动状态+2分钟
弹出型按钮与任何其他窗口都没有区别

如果我理解你的问题,即窗口会随着时间的推移而消失,那么解决方案就相当简单。不要使用任何
NotifyAreaOverflowWindow
是什么。相反,使用适当的属性(无控制框、无最大/最小按钮、无标题文本等)创建自己的窗口。因为设置您正在使用的类/对象的持续时间可能超出您的控制。它可能是为单个通知而设计的,而不是一些中等有用的东西;)

此外,你还可以随心所欲地做一些新奇的事情,而不会遇到更多的问题

以下教程详细介绍了如何将其完美定位: 你应该打电话

NotifyWinEvent(EVENT_SYSTEM_MENUPOPUPSTART, Handle, OBJID_CLIENT, 0);
在你打开窗户打电话之前

NotifyWinEvent(EVENT_SYSTEM_MENUPOPUPEND, Handle, OBJID_CLIENT, 0);

在你把它藏起来之后。

投票人没有提供任何评论,但我认为你应该在你的问题上投入更多的精力。提示:使用换行符,并添加一个屏幕截图,你想避免什么,一些代码等。我不能发布任何图片或编辑文本更好(尝试),因为这一切都是从手机发送的。关于代码,可以将其命名为Windows SDK 7.1中名为NotificationIcon的shell示例。。你是用C#重写的,还是你的问题标记错误了+该示例中的窗口在处于非活动状态时隐藏自身。您是否在任何地方单击,或者窗口在一段时间后隐藏?尝试移动其图标以通知流量区域,然后单击它。等待过了一段时间,溢出区域将隐藏起来,窗口将挂在那里。我需要溢出窗口不隐藏,而弹出显示。通知区域是用户的财产;除了将应用程序放入其中或删除该应用程序之外,您无法与它进行交互。谢谢你的回复。NotifyAreaOverflowWindow是指在本文档中被称为通知区域溢出的窗口(显示在第二张图片的数字2附近)。我不直接使用它,我只是希望它保持可见,只要我自己的弹出按钮是。我的答案保持不变。我建议你只创建自己的窗口,这样你就可以进行适当的控制。请参阅我提供的链接。