嘿,我正在尝试制作一个程序,将任何程序最小化到系统托盘,而不是通常最小化它。这可能吗?我一直在谷歌上四处寻找,但找不到任何东西。
1 回答
系统托盘中的图标称为“通知图标”。
要对您自己的应用程序执行此操作,如果您使用 WinForms,您可以使用NotifyIcon类在系统托盘中显示图标。然后,您只需将窗口设置为不显示在任务栏中。
如果您使用 WPF 没有替代品,您仍然必须使用旧的 WinForms NotifyIcon 类,请查看此MSDN 示例以获取更多信息。
如果您想隐藏另一个应用程序,您需要做的是使用 API 调用来更改应用程序窗口的状态。
您可以使用FindWindow获取要隐藏的窗口的句柄,然后可以使用GetWindowLong获取窗口状态。然后您需要从状态中删除WS_EX_APPWINDOW标志并使用SetWindowLong方法应用新样式,这会将其从任务栏中删除。然后,您可以使用Get / SetWindowState方法找出窗口的状态并隐藏/最小化它。
您仍然只需要使用 NotifyIcon 类在系统托盘中显示您自己的图标。
祝你好运。这不是我个人尝试过的,但我已经以其他方式使用了所有这些方法调用。如果您在发现之前没有从 C# 完成 API 的工作,您可能需要做一些谷歌搜索来找出版本 API 方法的 DllImports。不过应该不会太难。
Crazyd22发现了一篇 codeproject 文章,它使用了一组略有不同的 API 方法,但实现了几乎相同的效果。(见下面的评论。)