Ejemplo n.º 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();
            }
        }
Ejemplo n.º 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;
        }
Ejemplo n.º 3
0
        public static IList <ScreenSaverParam> LoadParams(int count)
        {
            var screenConfigs     = LoadScreenConfigs(count);
            var appConfig         = AppConfig.Load();
            var screenGroupConfig = ScreenGroupConfig.Load();

            var screenSaverParams = new List <ScreenSaverParam>();
            var groupSourceParams = new Dictionary <int, ScreenSaverParam>();

            for (var index = 0; index < count; ++index)
            {
                var screenPlaylistConfig = screenConfigs[index].RandomPlaylistConfig();
                var screenState          = ScreenState.Load(index);
                var screenSaverParam     = new ScreenSaverParam {
                    Index       = index,
                    AppConfig   = appConfig,
                    InitialTime = screenPlaylistConfig.InitialTime(screenState),
                };
                var groupSourceIndex = screenGroupConfig.GroupSourceIndex(index);
                if (groupSourceIndex == null)   // グループではない
                {
                    screenSaverParam.PlaylistView = screenPlaylistConfig.PlaylistView(screenState);
                    screenSaverParams.Add(screenSaverParam);
                }
                else if (index == groupSourceIndex)     // グループの最初のスクリーン
                {
                    screenSaverParam.PlaylistView = new SynchronizedPlaylistView(
                        screenPlaylistConfig.PlaylistView(screenState),
                        screenGroupConfig.GroupMemberCount(index, count - 1)
                        );
                    groupSourceParams[index] = screenSaverParam;
                    screenSaverParams.Add(screenSaverParam);
                }
                else     // グループの2番目以降のスクリーン
                {
                    screenSaverParams.Add(groupSourceParams[(int)groupSourceIndex]);
                }
            }
            return(screenSaverParams);
        }