I have an application that is designed to minimize to the system tray. No issues there.
The problem I am having is that I cannot determine what Windows is doing to force the minimized state when I set up a desktop shortcut to that executable and launch it, such as:
I put some debug outputs in the form's constructor and launched via the shortcut. I get no command line arguments and a check of WindowState
yields Normal
. Yet the app starts minimized to the taskbar.
However, that's the rub: I want it to start minimized to the system tray, just as it would if the form were on-screen and the user minimized it. Not all the time, just when a "minimize" shortcut is used, or when the user clicks Minimize on the form, of course.
EDIT: for the curious...my initial testing was flawed because I checked in the constructor. Placing the test in the Load
method produced a Minimized
state, to which I could then react and call my code to perform the "minimize-to-tray".
Windows is starting the process with parameters to minimize the main window.
In C#, you can do the same by setting WindowStyle (MSDN) at ProcessStartInfo
for use in Process.Start()
.
In the native world, you would use the CreateProcess (MSDN) API and pass a STARTUPINFO, setting wShowWindow
to SW_MINIMIZE
.
To query the window state, use GetWindowInfo (MSDN), look at dwStyle
and check if WS_MINIMIZE
is set. In C#, this should be in Form.WindowState.