コード例 #1
0
        protected override ProcessStartInfo GetRenderExeInfo(WallpaperModel model)
        {
            string path = model.RunningData.AbsolutePath;
            //文档:https://mpv.io/manual/stable/
            string playerPath = Path.Combine(WallpaperApi.Options.ExternalPlayerFolder, $@"{PlayerFolderName}\mpv.exe");

            if (!File.Exists(playerPath))
            {
                return(null);
            }

            FileInfo info = new FileInfo(playerPath);

            if (info.Length == 0)
            {
                return(null);
            }

            string args = $"\"{path}\" --hwdec=auto --panscan=1.0 --loop-file=inf --fs --geometry=-10000:-10000";

            if (!model.Option.HardwareDecoding)
            {
                args = $"\"{path}\" --hwdec=no --panscan=1.0 --loop-file=inf --fs --geometry=-10000:-10000";
            }

            ProcessStartInfo r = new ProcessStartInfo(playerPath)
            {
                Arguments       = args,
                UseShellExecute = false
            };

            return(r);
        }
コード例 #2
0
 static internal void ShowWallpaper(WallpaperModel wallpaper, params int[] screenIndexs)
 {
     foreach (var screen in screenIndexs)
     {
         Status.Wallpapers[screen] = wallpaper;
     }
 }
コード例 #3
0
 public virtual Task ShowWallpaper(WallpaperModel wallpaper, params uint[] screenIndexs)
 {
     return(Task.Run(() =>
     {
         foreach (var index in screenIndexs)
         {
             RenderControl renderControl = null;
             if (!_controls.ContainsKey(index))
             {
                 WallpaperManager.UIInvoke(() =>
                 {
                     renderControl = _controls[index] = new RenderControl();
                     renderControl.InitRender();
                 });
             }
             else
             {
                 renderControl = _controls[index];
             }
             var host = RenderHost.GetHost(index);
             WallpaperManager.UIInvoke(() =>
             {
                 host !.ShowWallpaper(renderControl);
             });
             renderControl.Load(wallpaper.Path);
         }
     }));
 }
コード例 #4
0
        public static async Task ShowWallpaper(WallpaperModel wallpaper, params int[] screenIndexs)
        {
            if (_ipc == null)
            {
                _ipc = new IPCHelper(IPCHelper.ServerID, IPCHelper.RemoteRenderID);
            }

            if (_currentProcess == null)
            {
                var pList = Process.GetProcessesByName("LiveWallpaperEngineRender");
                _currentProcess = pList?.Length > 0 ? pList[0] : null;
                if (_currentProcess == null)
                {
                    _currentProcess = Process.Start("LiveWallpaperEngineRender.exe");
                    //等待render初始完成
                    await _ipc.Wait <Ready>();
                }
            }

            //显示壁纸
            await _ipc.Send(new InvokeRender()
            {
                InvokeMethod = nameof(IRender.ShowWallpaper),
                Parameters   = new object[] { wallpaper, screenIndexs },
            });
        }
コード例 #5
0
ファイル: BaseRender.cs プロジェクト: qin-dadie/LiveWallpaper
        public async Task CloseWallpaperExAsync(WallpaperModel nextWallpaper = null, params string[] screens)
        {
            var playingWallpaper = _currentWallpapers.Where(m => screens.Contains(m.Screen)).ToList();

            if (playingWallpaper.Count == 0)
            {
                return;
            }

            foreach (var item in screens)
            {
                Debug.WriteLine($"close {GetType().Name} {item}");
            }

            //取消对应屏幕等待未启动的进程
            _showWallpaperCts?.Cancel();
            _showWallpaperCts?.Dispose();
            _showWallpaperCts = null;

            await InnerCloseWallpaperAsync(playingWallpaper, nextWallpaper);

            playingWallpaper.ToList().ForEach(m =>
            {
                _currentWallpapers.Remove(m);
            });
        }
コード例 #6
0
        public async Task ShowWallpaper(WallpaperModel wallpaper, params uint[] screenIndexs)
        {
            if (_renderProcess == null || _renderProcess.HasExited)
            {
                var renderAPIPort = NetworkHelper.GetAvailablePort(8080);
                _api = new WebRenderAPI("http://*****:*****@"WebRender\livewallpaperwebrender.exe");
                _renderProcess = Process.Start(path, $"--hostPort={renderAPIPort}");
            }

            HostInfo info = await _api.GetInfo();

            while (info == null || !info.Initlized)
            {
                await Task.Delay(1000);

                info = await _api.GetInfo();
            }

            var hosts = await _api.ShowWallpaper(wallpaper, screenIndexs);

            foreach (var scIndex in screenIndexs)
            {
                IntPtr windowHandle = hosts[scIndex];
                WallpaperHelper.GetInstance(scIndex).SendToBackground(windowHandle);
            }
        }
コード例 #7
0
        public async Task ShowWallpaper(WallpaperModel wallpaper, params int[] screenIndexs)
        {
            var ipc = await GetIPCHelper();

            await ipc.Send(new InvokeILiveWallpaperAPI()
            {
                InvokeMethod = nameof(ILiveWallpaperAPI.ShowWallpaper),
                Parameters   = new object[] { wallpaper, screenIndexs }
            });
        }
コード例 #8
0
        protected virtual Task <ShowWallpaperResult> InnerShowWallpaper(WallpaperModel wallpaper, CancellationToken ct, params string[] screens)
        {
            var infos = screens.Select(m => new RenderInfo()
            {
                Wallpaper = wallpaper,
                Screen    = m
            }).ToList();

            return(Task.FromResult(new ShowWallpaperResult()
            {
                RenderInfos = infos, Ok = true
            }));
        }
コード例 #9
0
 public Task ShowWallpaper(WallpaperModel wallpaper, params uint[] screenIndexs)
 {
     foreach (var index in screenIndexs)
     {
         var process = Process.Start(wallpaper.Path);
         // 刚创建的进程可能无法获取到MainWindowHandle属性,所以延时两秒保证属性获取正常
         Thread.Sleep(2 * 1000);
         WallpaperHelper.GetInstance(index).SendToBackground(process.MainWindowHandle);
         // 设置要接受鼠标消息的窗口的句柄
         mouseEventReciver.HTargetWindow = process.MainWindowHandle;
     }
     return(Task.CompletedTask);
 }
コード例 #10
0
 public virtual Task ShowWallpaper(WallpaperModel wallpaper, params int[] screenIndexs)
 {
     foreach (var index in screenIndexs)
     {
         if (!_controls.ContainsKey(index))
         {
             _controls[index] = new RenderControl();
             _controls[index].InitRender();
         }
         var screen = RenderHost.GetHost(index);
         screen.ShowWallpaper(_controls[index]);
         _controls[index].Load(wallpaper.Path);
     }
     return(Task.CompletedTask);
 }
コード例 #11
0
        public async Task ShowWallpaper(WallpaperModel wallpaper, params int[] screenIndexs)
        {
            if (_renderProcess == null || _renderProcess.HasExited)
            {
                var renderAPIPort = GetAvailablePort(9000);
                _renderProcess = Process.Start("", renderAPIPort.ToString());
            }

            foreach (var scIndex in screenIndexs)
            {
                IntPtr windowHandle = await GetHostFromRemote(scIndex);

                WallpaperHelper.GetInstance(scIndex).SendToBackground(windowHandle);
            }
            throw new System.NotImplementedException();
        }
コード例 #12
0
        public async Task <ShowWallpaperResult> ShowWallpaper(WallpaperModel wallpaper, params string[] screens)
        {
            foreach (var item in screens)
            {
                Debug.WriteLine($"show {GetType().Name} {item}");
            }

            List <RenderInfo> changedRender = new List <RenderInfo>();
            //过滤无变化的屏幕
            var changedScreen = screens.Where(m =>
            {
                bool ok         = false;
                var existRender = _currentWallpapers.FirstOrDefault(x => x.Screen == m);
                if (existRender == null)
                {
                    ok = true;
                }
                else
                {
                    ok = existRender.Wallpaper.Path != wallpaper.Path;
                    changedRender.Add(existRender);
                }
                return(ok);
            }).ToArray();

            if (changedScreen.Length > 0)
            {
                //关闭已经展现的壁纸
                await InnerCloseWallpaperAsync(changedRender, true);

                _showWallpaperCts = new CancellationTokenSource();
                var showResult = await InnerShowWallpaper(wallpaper, _showWallpaperCts.Token, changedScreen);

                if (!showResult.Ok)
                {
                    return(showResult);
                }

                //更新当前壁纸
                showResult.RenderInfos.ForEach(m => _currentWallpapers.Add(m));
            }

            return(new ShowWallpaperResult()
            {
                Ok = true
            });
        }
コード例 #13
0
ファイル: BaseRender.cs プロジェクト: qin-dadie/LiveWallpaper
        public async Task <BaseApiResult <List <RenderInfo> > > ShowWallpaper(WallpaperModel wallpaper, params string[] screens)
        {
            foreach (var item in screens)
            {
                Debug.WriteLine($"show {GetType().Name} {item}");
            }

            //List<RenderInfo> changedRenderInfo = new();
            //过滤无变化的屏幕
            var changedScreen = screens.Where(m =>
            {
                bool ok             = false;
                var existRenderInfo = _currentWallpapers.FirstOrDefault(x => x.Screen == m);
                if (existRenderInfo == null)
                {
                    ok = true;
                }
                else
                {
                    //路径变化或者播放参数变化,都要重新播放
                    ok = existRenderInfo.Wallpaper.RunningData.AbsolutePath != wallpaper.RunningData.AbsolutePath ||
                         existRenderInfo.Wallpaper.Option != wallpaper.Option;
                    //changedRenderInfo.Add(existRenderInfo);
                }
                return(ok);
            }).ToArray();

            if (changedScreen.Length > 0)
            {
                //关闭已经展现的壁纸
                await CloseWallpaperExAsync(wallpaper, changedScreen);

                _showWallpaperCts = new CancellationTokenSource();
                var showResult = await InnerShowWallpaper(wallpaper, _showWallpaperCts.Token, changedScreen);

                if (!showResult.Ok)
                {
                    return(showResult);
                }

                //更新当前壁纸
                showResult.Data.ForEach(m => _currentWallpapers.Add(m));
            }

            return(BaseApiResult <List <RenderInfo> > .SuccessState());
        }
コード例 #14
0
 public async Task<Dictionary<uint, IntPtr>> ShowWallpaper(WallpaperModel wallpaper, uint[] screenIndexs)
 {
     try
     {
         string ids = GetIds(screenIndexs);
         using var client = new HttpClient();
         string url = _baseUrl + $"/showWallpaper?path={wallpaper.Path}&screenIndexs={ids}";
         var json = await client.GetStringAsync(url);
         var result = JsonConvert.DeserializeObject<Dictionary<uint, IntPtr>>(json);
         return result;
     }
     catch (Exception ex)
     {
         System.Diagnostics.Debug.WriteLine(ex.Message);
         return null;
     }
 }
コード例 #15
0
        public async Task ShowWallpaper(WallpaperModel wallpaper, params uint[] screenIndexs)
        {
            try
            {
                using var cts = new CancellationTokenSource();
                cts.CancelAfter(TimeSpan.FromSeconds(10));

                var para = new ShowWallpaperRequest()
                {
                    Wallpaper = wallpaper
                };
                para.ScreenIndexs.AddRange(screenIndexs);
                _ = await _client.ShowWallpaperAsync(para);
            }
            catch (Exception)
            {
            }
        }
コード例 #16
0
        protected override ProcessStartInfo GetRenderExeInfo(WallpaperModel model)
        {
            string path = model.RunningData.AbsolutePath;
            //文档:https://mpv.io/manual/stable/
            string playerPath = Path.Combine(WallpaperApi.Options.ExternalPlayerFolder, $@"{PlayerFolderName}\LiveWallpaperEngineWebRender.exe");

            if (!File.Exists(playerPath))
            {
                return(null);
            }

            var r = new ProcessStartInfo(playerPath)
            {
                Arguments       = $"\"{path}\" --position=-10000,-10000",
                UseShellExecute = false
            };

            return(r);
        }
コード例 #17
0
        public async Task ShowWallpaper(WallpaperModel wallpaper, params uint[] screenIndexs)
        {
            if (wallpaper.Type == WallpaperType.NotSupport)
            {
                wallpaper.Type = RenderFactory.ResoveType(wallpaper.Path);
            }

            if (wallpaper.Type == WallpaperType.NotSupport)
            {
                return;
            }

            foreach (var index in screenIndexs)
            {
                //类型不一致关闭上次显示的壁纸
                if (CurrentWalpapers.ContainsKey(index) && wallpaper.Type != CurrentWalpapers[index].Type)
                {
                    CloseWallpaper(screenIndexs);
                }
            }

            var currentRender = RenderFactory.GetOrCreateRender(wallpaper.Type);
            await currentRender.ShowWallpaper(wallpaper, screenIndexs);

            foreach (var index in screenIndexs)
            {
                if (!CurrentWalpapers.ContainsKey(index))
                {
                    CurrentWalpapers.Add(index, wallpaper);
                }
                else
                {
                    CurrentWalpapers[index] = wallpaper;
                }
            }

            ApplyAudioSource();
        }
コード例 #18
0
        public async Task ShowWallpaper(WallpaperModel wallpaper, params int[] screenIndexs)
        {
            //CloseWallpaper(screenIndexs);
            if (wallpaper.Type == null)
            {
                wallpaper.Type = RenderFactory.ResoveType(wallpaper.Path);
            }
            if (wallpaper.Type.DType == WalllpaperDefinedType.NotSupport)
            {
                return;
            }

            foreach (var index in screenIndexs)
            {
                //类型不一致关闭上次显示的壁纸
                if (_currentWalpapers.ContainsKey(index) && wallpaper.Type.DType != _currentWalpapers[index].Type.DType)
                {
                    CloseWallpaper(screenIndexs);
                }
            }

            var currentRender = RenderFactory.GetOrCreateRender(wallpaper.Type.DType);
            await currentRender.ShowWallpaper(wallpaper, screenIndexs);

            foreach (var index in screenIndexs)
            {
                if (!_currentWalpapers.ContainsKey(index))
                {
                    _currentWalpapers.Add(index, wallpaper);
                }
                else
                {
                    _currentWalpapers[index] = wallpaper;
                }
            }
        }
コード例 #19
0
        protected override Task <ShowWallpaperResult> InnerShowWallpaper(WallpaperModel wallpaper, CancellationToken ct, params string[] screens)
        {
            return(Task.Run(() =>
            {
                foreach (var screenName in screens)
                {
                    CacheOldWallpaper(screenName, () => _desktopFactory.GetWallpaper(screenName));

                    string monitoryId = GetMonitoryId(screenName);
                    _desktopFactory.SetWallpaper(monitoryId, wallpaper.Path);
                }

                List <RenderInfo> infos = screens.Select(m => new RenderInfo()
                {
                    Wallpaper = wallpaper,
                    Screen = m
                }).ToList();
                return new ShowWallpaperResult()
                {
                    Ok = true,
                    RenderInfos = infos
                };
            }));
        }
コード例 #20
0
ファイル: BaseRender.cs プロジェクト: qin-dadie/LiveWallpaper
        protected virtual Task <BaseApiResult <List <RenderInfo> > > InnerShowWallpaper(WallpaperModel wallpaper, CancellationToken ct, params string[] screens)
        {
            var infos = screens.Select(m => new RenderInfo()
            {
                Wallpaper = wallpaper,
                Screen    = m
            }).ToList();

            return(Task.FromResult(BaseApiResult <List <RenderInfo> > .SuccessState(infos)));
        }
コード例 #21
0
        private async void btnSelect_Click(object sender, RoutedEventArgs e)
        {
            //System.Diagnostics.Debug.WriteLine("before ShowWallpaper " + GetActiveWindowTitle());
            using (var openFileDialog = new OpenFileDialog())
            {
                openFileDialog.InitialDirectory = "WallpaperSamples";
                openFileDialog.Filter           = "All files (*.*)|*.*";

                if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    var displayScreen = monitorsVM.Where(m => m.Checked).Select(m => m.DeviceName).ToArray();
                    btnApply_Click(null, null);
                    var wp = new WallpaperModel()
                    {
                        Path = openFileDialog.FileName
                    };
                    var showResult = await WallpaperApi.ShowWallpaper(wp, displayScreen);

                    if (!showResult.Ok)
                    {
                        if (showResult.Error == ErrorType.NoPlayer)
                        {
                            var r = System.Windows.MessageBox.Show($"{showResult.Error} {showResult.Message}, Whether to download the player?", "", MessageBoxButton.OKCancel);
                            if (r == MessageBoxResult.OK)
                            {
                                popup.Visibility = Visibility.Visible;
                                txtPopup.Text    = "downloading...";
                                var url = WallpaperApi.PlayerUrls.FirstOrDefault(m => m.Type == wp.Type).DownloadUrl;

                                void WallpaperManager_SetupPlayerProgressChangedEvent(object sender, SetupPlayerProgressChangedArgs e)
                                {
                                    Dispatcher.BeginInvoke(new Action(async() =>
                                    {
                                        txtPopup.Text = $"{(e.ActionType == SetupPlayerProgressChangedArgs.Type.Unpacking ? "unpacking" : "downloading")} ... {(int)(e.ProgressPercentage * 100)}%";

                                        if (e.AllCompleted)
                                        {
                                            WallpaperApi.SetupPlayerProgressChangedEvent -= WallpaperManager_SetupPlayerProgressChangedEvent;
                                            popup.Visibility = Visibility.Collapsed;

                                            if (e.Result.Ok)
                                            {
                                                showResult = await WallpaperApi.ShowWallpaper(wp, displayScreen);
                                            }
                                            else
                                            {
                                                System.Windows.Forms.MessageBox.Show($"Message:{e.Result.Message},Error:{e.Result.Error}");
                                            }
                                        }
                                    }));
                                }

                                WallpaperApi.SetupPlayerProgressChangedEvent -= WallpaperManager_SetupPlayerProgressChangedEvent;
                                WallpaperApi.SetupPlayerProgressChangedEvent += WallpaperManager_SetupPlayerProgressChangedEvent;

                                var setupResult = WallpaperApi.SetupPlayer(wp.Type.Value, url);
                            }
                        }
                        else
                        {
                            System.Windows.MessageBox.Show($"{showResult.Error} {showResult.Message} ");
                        }
                    }
                }
            }
            //System.Diagnostics.Debug.WriteLine("after ShowWallpaper" + GetActiveWindowTitle());
            //IntPtr progman = User32Wrapper.FindWindow("Progman", null);
            //User32Wrapper.SetForegroundWindow(window); //change focus from the started window//application.
            //User32Wrapper.SetFocus(window);
            Activate();
        }
コード例 #22
0
        protected override async Task <BaseApiResult <List <RenderInfo> > > InnerShowWallpaper(WallpaperModel wallpaper, CancellationToken ct, params string[] screens)
        {
            List <RenderInfo> infos    = new List <RenderInfo>();
            List <Task>       tmpTasks = new List <Task>();

            ProcessStartInfo pInfo = await Task.Run(() => GetRenderExeInfo(wallpaper));

            if (pInfo == null)
            {
                return(BaseApiResult <List <RenderInfo> > .ErrorState(ErrorType.NoPlayer));
            }

            foreach (var screenItem in screens)
            {
                if (ct.IsCancellationRequested)
                {
                    break;
                }
                var task = Task.Run(async() =>
                {
                    try
                    {
                        var processResult = await StartProcess(pInfo, ct);

                        //壁纸启动失败
                        if (processResult.HostHandle == IntPtr.Zero)
                        {
                            return;
                        }

                        var host = LiveWallpaperRenderForm.GetHost(screenItem);
                        host !.ShowWallpaper(processResult.HostHandle);

                        infos.Add(new RenderInfo(processResult)
                        {
                            Wallpaper = wallpaper,
                            Screen    = screenItem
                        });
                    }
                    catch (OperationCanceledException)
                    {
                    }
                    catch (Exception ex)
                    {
                        Debug.WriteLine(ex);
                    }
                }, ct);

                tmpTasks.Add(task);
            }
            await Task.WhenAll(tmpTasks);

            if (SupportMouseEvent && WallpaperApi.Options.ForwardMouseEvent && wallpaper.Option.EnableMouseEvent)
            {
                foreach (var item in infos)
                {
                    await DesktopMouseEventReciver.AddHandle(item.ReceiveMouseEventHandle, item.Screen);
                }
            }
            return(BaseApiResult <List <RenderInfo> > .SuccessState(infos));
        }
コード例 #23
0
 protected virtual ProcessStartInfo GetRenderExeInfo(WallpaperModel model)
 {
     return(new ProcessStartInfo(model.RunningData.AbsolutePath));
 }
コード例 #24
0
        protected override Task <BaseApiResult <List <RenderInfo> > > InnerShowWallpaper(WallpaperModel wallpaper, CancellationToken ct, params string[] screens)
        {
            return(Task.Run(() =>
            {
                foreach (var screenName in screens)
                {
                    CacheOldWallpaper(screenName, () => _desktopFactory.GetWallpaper(screenName));

                    string monitoryId = GetMonitoryId(screenName);
                    _desktopFactory.SetWallpaper(monitoryId, wallpaper.RunningData.AbsolutePath);
                }

                List <RenderInfo> infos = screens.Select(m => new RenderInfo()
                {
                    Wallpaper = wallpaper,
                    Screen = m
                }).ToList();
                return BaseApiResult <List <RenderInfo> > .SuccessState(infos);
            }));
        }
コード例 #25
0
 public Task ShowWallpaper(WallpaperModel wallpaper, params uint[] screenIndex)
 {
     throw new NotImplementedException();
 }
コード例 #26
0
        public ActionResult ListJson()
        {
            Hashtable request = new Hashtable();
            var       res     = new JsonResult();

            List <WallpaperModel> cateList = new List <WallpaperModel>();

            string sql = "select a.*,b.title as caTitle,c.title as sbTitle from Wallpaper as a left join Category as b on a.caID = b.caID left join Subject as c on a.sbID = c.sbID";

            SqlDataReader reader = SqlHelper.SqlHelper.ExecuteReader(sql, null);

            if (reader.HasRows)
            {
                while (reader.Read())
                {
                    WallpaperModel wallpaperModel = new WallpaperModel();

                    wallpaperModel.wpID = reader.GetInt32(0);
                    wallpaperModel.caID = reader.GetInt32(1);

                    object imgUrl = reader.IsDBNull(2) ? null : reader.GetString(2);
                    wallpaperModel.imageUrl = imgUrl == null ? string.Empty : Convert.ToString(imgUrl);

                    wallpaperModel.clickNum = reader.GetInt32(3);

                    object keyWord = reader.IsDBNull(4) ? null : reader.GetString(4);
                    wallpaperModel.keyWord = keyWord == null ? string.Empty : Convert.ToString(keyWord);

                    wallpaperModel.suID = reader.GetInt32(5);

                    object title = reader.IsDBNull(6) ? null : reader.GetString(6);
                    wallpaperModel.title = title == null ? string.Empty : Convert.ToString(title);

                    object caTitle = reader.IsDBNull(7) ? null : reader.GetString(7);
                    wallpaperModel.caTitle = caTitle == null ? string.Empty : Convert.ToString(caTitle);

                    object sbTitle = reader.IsDBNull(8) ? null : reader.GetString(8);
                    wallpaperModel.sbTitle = sbTitle == null ? string.Empty : Convert.ToString(sbTitle);


                    cateList.Add(wallpaperModel);
                }


                request.Add("message", "查询成功");
                request.Add("isSucceed", true);
                request.Add("data", cateList);
            }
            else
            {
                request.Add("message", "暂时没有壁纸");
                request.Add("isSucceed", false);
            }


            res.Data = request;

            res.JsonRequestBehavior = JsonRequestBehavior.AllowGet;

            return(res);
        }
コード例 #27
0
ファイル: BaseRender.cs プロジェクト: qin-dadie/LiveWallpaper
 /// <summary>
 /// 可重载,处理具体的关闭逻辑
 /// </summary>
 /// <param name="playingWallpaper"></param>
 /// <param name="closeBeforeOpening">是否是临时关闭,临时关闭表示马上又会继续播放其他壁纸</param>
 /// <returns></returns>
 protected virtual Task InnerCloseWallpaperAsync(List <RenderInfo> playingWallpaper, WallpaperModel nextWallpaper = null)
 {
     return(Task.CompletedTask);
 }
コード例 #28
0
        public override async Task ShowWallpaper(WallpaperModel wallpaper, params uint[] screenIndexs)
        {
            await base.ShowWallpaper(wallpaper, screenIndexs);

            await Task.Run(DesktopMouseEventReciver.Start);
        }
コード例 #29
0
 protected override async Task InnerCloseWallpaperAsync(List <RenderInfo> wallpaperRenders, WallpaperModel nextWallpaper)
 {
     //不论是否临时关闭,都需要关闭进程重启进程
     foreach (var render in wallpaperRenders)
     {
         try
         {
             var p = Process.GetProcessById(render.PId);
             p.Kill();
         }
         catch (Exception ex)
         {
             Debug.WriteLine($"InnerCloseWallpaper ex:{ex}");
         }
         finally
         {
             if (SupportMouseEvent)
             {
                 await DesktopMouseEventReciver.RemoveHandle(render.ReceiveMouseEventHandle);
             }
         }
     }
 }