The first point of a GUI program in Windows is the well-known WinMain () function. It looks like this:
int CALLBACK WinMain( _In_ HINSTANCE hInstance, _In_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nCmdShow );
The hInstance and hPrevInstance arguments are obsolete and are dated by versions of Windows <= 3, versions that did not yet support support processes, and an application was needed to serve several instances of the task itself. The lpCmdLine argument is command line arguments.
nCmdShow is important and subject to your question. Expected values: SW_HIDE, SW_SHOWNORMAL, SW_SHOWMAXIMIZE or SW_SHOWMINIMIZE. You can easily match them with the possible values ββof the ProcessWindowStyle enumeration.
It also appears in the shortcut properties on the desktop. For instance:

I expanded the Run field, note the match with the values ββof the ProcessWindowStyle enumeration. Besides Hidden , a hint of trouble.
A typical C program passes the nCmdShow argument directly to the ShowWindow () function to display the main window (a validation error is omitted):
HWND hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); ShowWindow(hWnd, nCmdShow);
You will be pleased with such a program. However, this is not how many programs actually work. They check the value of nCmdShow and explicitly filter SW_HIDDEN . Or they restore the state of the window that the user last used. In other words, they do this:
HWND hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); if (nCmdShow == SW_HIDDEN) nCmdShow = SW_SHOWNORMAL; if (HasPreviousWindowState) nCmdShow = PreviousWindowState;
This is done for good reason. Restoring to its former state is an obvious preference for usability, many users will prefer that it works just like that, for example, for a browser. I do.
More about the missing Hidden option in the shortcut configuration dialog box, both the OS and well-designed GUI programs intentionally avoid creating a usability nightmare. When the program starts, but the user is not allowed to activate the program. There is no taskbar button for a hidden window. Alt + Tab does not work. The only way to return the user control over the program is to terminate it using the task manager. It can also be used, malware can run the program and execute the command, and the user never notices.
All good reasons why such a program interferes with this. You can not do anything about it, the program redefines your choice and has the last word.