最小化任何程序到系统托盘

Cra*_*d22 3 c# system-tray systray

嘿,我正在尝试制作一个程序,将程序最小化到系统托盘而不是通常最小化它.这可能吗?我一直在寻找谷歌,但无法找到任何东西.

Sim*_*ens 5

系统托盘中的图标称为"通知图标".

要对您自己的应用程序执行此操作,如果您使用WinForms,则可以使用NotifyIcon类在系统托盘中显示图标.然后,您只需将窗口设置为不在任务栏中显示.

如果您使用的是WPF,则无法替换,您仍然必须使用旧的WinForms NotifyIcon类,请查看此MSDN示例以获取有关此内容的更多信息.


如果要隐藏另一个应用程序,您需要做的是使用API​​调用来更改应用程序窗口的状态.

您可以使用FindWindow来获取要隐藏的窗口的句柄,然后可以使用GetWindowLong来获取窗口状态.然后,您需要从状态中删除WS_EX_APPWINDOW标志,并使用SetWindowLong方法应用新样式,这将从任务栏中删除它.然后,您可以使用Get/SetWindowState方法找出窗口的状态并隐藏/最小化它.

您仍然只需要使用NotifyIcon类在系统托盘中显示您自己的图标.

祝所有这一切顺利.这不是我个人尝试过的,但我已经以其他方式使用了所有这些方法调用.如果您没有从C#中完成API,那么您可能会发现需要进行一些谷歌搜索来找出版本API方法的DllImports.虽然不应该太难.


Crazyd22发现了一个代码项目文章,该文章使用了一组略有不同的API方法,但实现了几乎相同的效果.(见下面的评论.)