3

我有一个旨在最小化系统托盘的应用程序。那里没有问题。

我遇到的问题是,当我设置该可执行文件的桌面快捷方式并启动它时,我无法确定 Windows 正在做什么来强制最小化状态,例如:

在此处输入图像描述

我在表单的构造函数中放置了一些调试输出,并通过快捷方式启动。我没有得到命令行参数和WindowState产量检查Normal。然而,该应用程序开始最小化到任务栏。

但是,这就是问题所在:我希望它开始最小化到系统托盘,就像表单在屏幕上并且用户最小化它一样。当然,并非总是如此,只是在使用“最小化”快捷方式时,或者当用户单击表单上的最小化时。

编辑: 出于好奇......我的初始测试有缺陷,因为我检查了构造函数。将测试放在Load方法中会产生一个Minimized状态,然后我可以对此做出反应并调用我的代码来执行“最小化到托盘”。

4

1 回答 1

3

Windows 正在使用参数启动该过程以最小化主窗口。

在 C# 中,您可以通过将WindowStyle (MSDN)设置为ProcessStartInfoProcess.Start().

在原生世界中,您将使用CreateProcess (MSDN) API 并将STARTUPINFO设置wShowWindowSW_MINIMIZE.

要查询窗口状态,请使用GetWindowInfo (MSDN),查看dwStyle并检查是否WS_MINIMIZE已设置。在 C# 中,这应该在Form.WindowState中。

于 2014-12-02T20:07:40.143 回答