Example #1
0
        internal void ShowWallpaper(IntPtr wallpaperHandle)
        {
            IntPtr hostForm = IntPtr.Zero;

            WallpaperApi.UIInvoke(() =>
            {
                try
                {
                    Controls.Clear();
                    Opacity  = 1;
                    hostForm = Handle;
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine($"ShowWallpaper ex:{ex}");
                }
            });

            //hostfrom下潜桌面
            WallpaperHelper.GetInstance(_screenName).SendToBackground(hostForm);
            //壁纸parent改为hostform
            User32Wrapper.SetParent(wallpaperHandle, hostForm);
            //把壁纸全屏铺满 hostform
            WallpaperHelper.FullScreen(wallpaperHandle, hostForm);
        }
        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);
            }
        }
 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);
 }
Example #4
0
        internal void ShowWallpaper(Control control)
        {
            IntPtr windowHandle = IntPtr.Zero;

            this.InvokeIfRequired(() =>
            {
                Controls.Clear();
                control.Dock = DockStyle.Fill;
                Controls.Add(control);
                Opacity = 1;
                Refresh();
                windowHandle = Handle;
            });
            WallpaperHelper.GetInstance(_screenIndex).SendToBackground(windowHandle);
        }
Example #5
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();
        }
        internal void ShowWallpaper(Control control)
        {
            Load += RenderHost_Load;
            Show();
            Application.DoEvents();
            Controls.Clear();
            control.Dock = DockStyle.Fill;
            Controls.Add(control);
            Update();
            //Invalidate();

            //await Task.Delay(200);
            Opacity = 1;
            Refresh();
            WallpaperHelper.GetInstance(_screenIndex).SendToBackground(Handle);
        }
        internal void ShowWallpaper(Control renderControl)
        {
            IntPtr windowHandle = IntPtr.Zero;

            WallpaperManager.UIInvoke(() =>
            {
                try
                {
                    Controls.Clear();
                    renderControl.Dock = DockStyle.Fill;
                    Controls.Add(renderControl);
                    Opacity = 1;
                    Refresh();
                    windowHandle = Handle;
                }
                catch (Exception ex)
                {
                }
            });
            WallpaperHelper.GetInstance(_screenIndex).SendToBackground(windowHandle);
        }