c# - Windows 如何从桌面快捷方式强制 "minimized"状态?

标签 c# winforms shortcut-file

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

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

enter image description here

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

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

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

最佳答案

Windows 正在启动带有参数的进程以最小化主窗口。

在 C# 中,您可以通过设置 WindowStyle (MSDN) 来完成相同的操作在 ProcessStartInfo 中用于 Process.Start()

在本地世界中,您将使用 CreateProcess (MSDN) API 并传递一个 STARTUPINFO , 将 wShowWindow 设置为 SW_MINIMIZE

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

关于c# - Windows 如何从桌面快捷方式强制 "minimized"状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27257808/

相关文章:

vb.net - TabPage选择,重新选择TabPage时将Focus移至上一个ActiveControl

深入处理 VB.NET 事件

windows - 允许用户在 Inno Setup 中为图标/快捷方式选择热键

c# - Opera 后退按钮缓存功能

c# - 如何降低这些 if else 语句的圈复杂度

c# - 将 Nuget 包从一个项目添加到另一个项目

c# - DataGridView - 使用 DataPropertyName 显示子元素属性

c# - 如何在 LINQ to DB 模型类中添加表之间的关系

.net - 使用网页创建桌面快捷方式

bash - 如果在命令中使用管道,桌面快捷方式将不起作用