示例#1
0
        private void ShowScreenSaver()
        {
            var screenSaverParams = ScreenSaverParam.LoadParams(Screen.AllScreens.Length);

            for (var index = 0; index < Screen.AllScreens.Length; ++index)
            {
                var screen           = Screen.AllScreens[index];
                var screenSaverParam = screenSaverParams[index];
                var window           = new ScreenSaverWindow(index, screenSaverParam, screen.Bounds);
                window.Show();
            }
        }
示例#2
0
        private void PreviewScreenSaver(IntPtr previewHandle)
        {
            var screenSaverParams = ScreenSaverParam.LoadParams(1);
            var window            = new ScreenSaverWindow(0, screenSaverParams[0], previewHandle);

            NativeMethods.GetClientRect(previewHandle, out var rect);
            var previewParam = new HwndSourceParameters("ScreenSaverPreview");

            previewParam.SetPosition(0, 0);
            previewParam.SetSize(rect.Width, rect.Height);
            previewParam.ParentWindow = previewHandle;
            previewParam.WindowStyle  = (int)(NativeWindowStyle.WS_VISIBLE | NativeWindowStyle.WS_CHILD | NativeWindowStyle.WS_CLIPCHILDREN);
            var previewSource = new HwndSource(previewParam);

            previewSource.Disposed  += (s, e) => Application.Current.Shutdown();
            previewSource.RootVisual = window.RootObject;
        }