一款DYI动态桌面壁纸程序

自己制作的动态桌面壁纸才能真正满足自己的需求。
通过窗口句柄遍历顶级窗口并在上加一层窗口用以播放视频文件实现动态桌面壁纸效果说起来也不繁琐。
以前有用过winFram设计动态桌面壁纸程序,发现运行时,将显示设置下的缩放与布局由100%改成更大时,全屏化窗口无法做到真正全屏,即窗口无法设置进行等比缩放。
而现在Windows10系统上WPF比winForm窗口程序集成好的多。所以我们用WPF来制作动态桌面壁纸程序。
程序所用CPU是与视频大小及清晰度相关,1分半100MB视频所占用的CPU几乎可以忽略不记,内存需要0.4GB左右。
但需要5%的GPU加速。

源代码

在Gird中加入一个MediaElement控件用于播放视频文件
Xaml

        <MediaElement x:Name="MediaElement" Loaded="MediaElement_Loaded" MediaEnded="MediaElement_MediaEnded" LoadedBehavior="Manual"/>

C#

using System;
using System.IO;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Interop;namespace Alice梦幻桌面
{/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{// 指向 Program Manager 窗口句柄private IntPtr programIntPtr = IntPtr.Zero;public MainWindow(){InitializeComponent();}public void Init(){// 通过类名查找一个窗口,返回窗口句柄。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 这个窗口句柄的 WorkerWif (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);}}private void Window_Loaded(object sender, RoutedEventArgs e){DirectoryInfo folder = new DirectoryInfo(Environment.CurrentDirectory + @"\MP4");//定位到应用程序位置try{foreach (FileInfo file in folder.GetFiles("*.mp4"))//在MP4文件夹下寻找并过滤视频文件{MediaElement.Source = new Uri(file.FullName);break;}}catch(ArgumentNullException){MessageBox.Show("MP4文件夹下无MP4媒体文件");}catch(DirectoryNotFoundException){MessageBox.Show("请在目录下添加MP4文件夹");}// 初始化桌面窗口Init();// 窗口置父,设置背景窗口的父窗口为 Program Manager 窗口IntPtr hwnd2 = new WindowInteropHelper(window).Handle;Win32.SetParent(hwnd2, programIntPtr);}private void MediaElement_Loaded(object sender, RoutedEventArgs e){window.WindowState = WindowState.Maximized;//窗口最大化(sender as MediaElement).Play();//视频播放}/// <summary>/// 视频循环播放/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void MediaElement_MediaEnded(object sender, RoutedEventArgs e){(sender as MediaElement).Stop();(sender as MediaElement).Play();}}
}

MP4文件要放到可执行文件所在文件夹下/MP4文件夹中,MediaElement只会播放第一个视频文件,过多放置视频文件并没有意义。

一款DYI动态桌面壁纸程序相关推荐

  1. C\C++ Qt开发的动态桌面壁纸程序

    这个程序可以实现把图片.动图.视频当成壁纸显示在图标图层之下,软件会保存上一次关闭时的选择 重启时恢复,有什么问题评论区看到会回复 有问题欢迎指出,需要编译好的程序 可以私信或留下联系方式发送 废话不 ...

  2. linux桌面壁纸目录,酷炫!推荐一款适用于Linux的壁纸程序

    原标题:酷炫!推荐一款适用于Linux的壁纸程序 Wonderwall是一个用于Unity和GNOME桌面环境的酷炫壁纸程序.其简单的用户界面允许用户在他的Ubuntu桌面上轻松浏览,下载和安装壁纸. ...

  3. upupoo启动不了 mysql_【upupoo动态桌面壁纸和MySQL API 中文手册哪个好用】upupoo动态桌面壁纸和MySQL API 中文手册对比-ZOL下载...

    upupoo动态桌面是一款电脑动态桌面软件,又译为啊噗啊噗,可以将视频设为桌面壁纸,软件也收集了动漫.舞蹈.神曲.风景等大量的视频壁纸资源,全视角动态桌面,交互桌面,改变对传统桌面的认知. 软件功能 ...

  4. upupoo启动不了 mysql_【upupoo动态桌面壁纸和phpMySQLConsole 0.1哪个好用】upupoo动态桌面壁纸和phpMySQLConsole 0.1对比-ZOL下载...

    upupoo动态桌面是一款电脑动态桌面软件,又译为啊噗啊噗,可以将视频设为桌面壁纸,软件也收集了动漫.舞蹈.神曲.风景等大量的视频壁纸资源,全视角动态桌面,交互桌面,改变对传统桌面的认知. 软件功能 ...

  5. upupoo启动不了 mysql_【upupoo动态桌面壁纸和mysql-jdbc.jar哪个好用】upupoo动态桌面壁纸和mysql-jdbc.jar对比-ZOL下载...

    upupoo动态桌面是一款电脑动态桌面软件,又译为啊噗啊噗,可以将视频设为桌面壁纸,软件也收集了动漫.舞蹈.神曲.风景等大量的视频壁纸资源,全视角动态桌面,交互桌面,改变对传统桌面的认知. 软件功能 ...

  6. Digital Clock 3D for Mac(3D机械时钟动态桌面壁纸)

    Digital Clock 3D是一款非常实用的3D时钟动态桌面壁纸.享受复古管时钟,最新的OLED时计,以及与此动态壁纸之间的一切. 选择你最喜欢的风格或者让它变得偶然,品味超逼真的3D图形! Di ...

  7. 超清动态桌面壁纸大全

    超清动态桌面壁纸大全 应用隐私政策 尊敬的用户: 超清动态桌面壁纸大全 应用是由 北京爱尚苹果科技有限公司 (以下简称 " 爱尚苹果科技 " )为您提供的一款 手机桌面壁纸美化软件 ...

  8. 电脑桌面壁纸app_「Dynamic Wallpaper」Mac动态桌面壁纸软件,200+精美视频素材

    系统美化算是一个强需求,不管是手机还是电脑,用户都愿意花些时间,让设备变得更个性化.壁纸算是最直接简易的一种美化方式,而动态壁纸越来越流行了. 「Dynamic Wallpaper」是一款 Mac 动 ...

  9. 基于QT ffmpeg的动态桌面壁纸

    基于QT ffmpeg的动态桌面壁纸 目前制作了一个基于QT ffmpeg的动态桌面壁纸,源码程序在github上 下面为链接: 动态壁纸软件 项目名为 DesktopDynamicWallpaper ...

  10. Mac桌面壁纸文件如何提取里面的壁纸图片?heic动态桌面壁纸怎么导出jpg的图片形式?

    Mac桌面壁纸文件如何提取里面的壁纸图片?heic动态桌面壁纸怎么导出jpg的图片形式?这里用到一款Mac软件--Joyoshare HEIC Converter for Mac(图像转换软件),利用 ...

最新文章

  1. bootstrap跟vue冲突吗_知道微服务,但你知道微前端吗?
  2. 二叉树的遍历(包括递归和非递归方法)
  3. 1 0.99999的悖论_无限小数与芝诺悖论
  4. MSSQL · 最佳实践 · 利用文件组实现冷热数据隔离备份方案
  5. 组策略中分类别禁用设备驱动程序安装,可以用来禁用USB设备
  6. grub-install: warning: this GPT partition label contains no BIOS Boot Partition; embedding won’t be
  7. windows环境下面安装neo4j出错记录
  8. 某“高人”谈论股市,对现在行情的分析
  9. 使用openssl库实现des,3des加密
  10. 【BP回归预测】基于matlab鲸鱼算法优化BP神经网络回归预测(多输入单输出)【含Matlab源码 1554期】
  11. [教程] 如何复活一个完全死机的联发科设备
  12. 常见概率分布的无记忆性分析
  13. 使用阿里的【字体图标】期望的效果
  14. LED显示屏测试软件 v2.0
  15. 从玉农业考察汕尾华侨管理区-林裕豪:携手谋定农业产业
  16. 【转】用天文方法计算二十四节气(下)
  17. 如何处理编码GBK的不可映射字符
  18. Speedoffice(excel)如何加粗边框线条
  19. 面向对象软件工程-学习笔记
  20. 项目管理经验谈- mindjet思维导图的使用

热门文章

  1. web漏洞扫描器-appscan
  2. VS2019 配置OpenGL
  3. “微信之父”张小龙:微信背后的产品观
  4. cad快速看图能合并图纸吗_怎样才能把2张CAD图纸合并
  5. 遥感信息分析与应用期末复习题
  6. 金税盘组件接口调用方法
  7. Qt视频直播软件--项目实战(Day4)
  8. php去除emoji表情代码
  9. Ubuntu20.04 图片标注工具labelImg
  10. 报表工具对比评论汇总,选型看这一篇就够了---------报表工具对比软文最全的收集汇总帖子