Windows Specific Implementations ================================ Setting the foreground window ----------------------------- In the `instanceStarted()` example in the `README` we demonstrated how an application can bring it's primary instance window whenever a second copy of the application is started. On Windows the ability to bring the application windows to the foreground is restricted, see [`AllowSetForegroundWindow()`][AllowSetForegroundWindow] for more details. The background process (the primary instance) can bring its windows to the foreground if it is allowed by the current foreground process (the secondary instance). To bypass this `SingleApplication` must be initialized with the `allowSecondary` parameter set to `true` and the `options` parameter must include `Mode::SecondaryNotification`, See `SingleApplication::Mode` for more details. Here is an example: ```cpp if( app.isSecondary() ) { // This API requires LIBS += User32.lib to be added to the project AllowSetForegroundWindow( DWORD( app.getPrimaryPid() ) ); } if( app.isPrimary() ) { QObject::connect( &app, &SingleApplication::instanceStarted, this, &App::instanceStarted ); } ``` ```cpp void App::instanceStarted() { QApplication::setActiveWindow( [window/widget to set to the foreground] ); } ``` [AllowSetForegroundWindow]: https://msdn.microsoft.com/en-us/library/windows/desktop/ms632668.aspx