Index: lib/sdk/scrnsave/scrnsave.c =================================================================== --- lib/sdk/scrnsave/scrnsave.c (revision 64505) +++ lib/sdk/scrnsave/scrnsave.c (working copy) @@ -149,12 +149,24 @@ return RegisterClass(&cls) != 0; } -static void LaunchConfig(void) +static void LaunchConfig(LPTSTR p) { + HWND hWndParent; // Only show the dialog if the RegisterDialogClasses function succeeded. // This is the same behaviour as MS' scrnsave.lib. - if( RegisterDialogClasses(hMainInstance) ) - DialogBox(hMainInstance, MAKEINTRESOURCE(DLG_SCRNSAVECONFIGURE), GetForegroundWindow(), (DLGPROC) ScreenSaverConfigureDialog); + if (!RegisterDialogClasses(hMainInstance)) + return; + + if ((p != NULL) && (p[1] == ':')) + { + hWndParent = (HWND)_toulptr(p + 2); + } + else + { + hWndParent = GetForegroundWindow(); + } + + DialogBox(hMainInstance, MAKEINTRESOURCE(DLG_SCRNSAVECONFIGURE), hWndParent, (DLGPROC) ScreenSaverConfigureDialog); } static int LaunchScreenSaver(HWND hParent) @@ -241,7 +253,7 @@ case 'C': case 'c': // Display the configuration dialog - LaunchConfig(); + LaunchConfig(p); return 0; case '-': @@ -252,7 +264,7 @@ } } - LaunchConfig(); + LaunchConfig(NULL); return 0; }