自定义桌面背景小程序

5 篇文章 0 订阅

一个自定义桌面背景的小程序

可以将图片、视频当做桌面背景

程序思路:

建立一个窗口,显示自定义的内容,并将窗口设置为桌面背景

设置桌面背景窗口:

使用MediaElement实现图片、视频的播放,设置窗口不可点击:IsHitTestVisible=“True”

窗口初始化设置为背景:

        private IntPtr programIntPtr = IntPtr.Zero;
        bool inited { get; set; }
        public void Init()
        {
            try
            {
                if (inited) return;
                // 通过类名查找一个窗口,返回窗口句柄。
                programIntPtr = Win32.FindWindow("Progman", null);

                // 窗口句柄有效
                if (programIntPtr != IntPtr.Zero)
                {
                    IntPtr result = IntPtr.Zero;

                    // 向 Program Manager 窗口发送 0x52c 的一个消息,超时设置为0x3e8(1秒)。
                    Win32.SendMessageTimeout(programIntPtr, 0x52c, IntPtr.Zero, IntPtr.Zero, 0, 0x3e8, result);

                    // 遍历顶级窗口
                    Win32.EnumWindows((hwnd, lParam) =>
                    {
                        // 找到包含 SHELLDLL_DefView 这个窗口句柄的 WorkerW
                        if (Win32.FindWindowEx(hwnd, IntPtr.Zero, "SHELLDLL_DefView", null) != IntPtr.Zero)
                        {
                            // 找到当前 WorkerW 窗口的,后一个 WorkerW 窗口。 
                            IntPtr tempHwnd = Win32.FindWindowEx(IntPtr.Zero, hwnd, "WorkerW", null);

                            // 隐藏这个窗口
                            Win32.ShowWindow(tempHwnd, 0);
                        }
                        return true;
                    }, IntPtr.Zero);
                }
                //将当前窗口设置为背景窗口
                Win32.SetParent(new WindowInteropHelper(this).Handle, programIntPtr);
                inited = true;

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

在程序主窗口中设置拖拽事件,将资源传输到当前窗口并显示,就可以啦。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值