当前位置: 首页 > news >正文

卢氏县住房和城乡建设局网站长沙有哪些软件公司

卢氏县住房和城乡建设局网站,长沙有哪些软件公司,国外购物网站大全,成都建工网站文章目录 前言效果展示为什么要做他如何实现他实现步骤获取桌面句柄代码获取桌面句柄libvlc_media_player_set_hwnd函数 动态壁纸代码 总结 前言 在当今的数字世界中#xff0c;个性化和自定义化的体验越来越受到人们的欢迎。动态壁纸是其中一种很受欢迎的方式#xff0c;它… 文章目录 前言效果展示为什么要做他如何实现他实现步骤获取桌面句柄代码获取桌面句柄libvlc_media_player_set_hwnd函数 动态壁纸代码 总结 前言 在当今的数字世界中个性化和自定义化的体验越来越受到人们的欢迎。动态壁纸是其中一种很受欢迎的方式它不仅可以美化桌面还能带来生动的视觉体验。利用开源的 VLC 媒体播放器库libVLC和 C我们可以轻松地创建一个独特的动态壁纸程序将视频内容直接嵌入到 Windows 的桌面背景中。本篇文章将带你一步步实现这个目标通过使用 libVLC 的强大功能将视频作为动态壁纸展示在你的桌面上。 效果展示 为什么要做他 用来训练我们使用VLC播放的能力我们可以自定义壁纸(虽然wallpaper engine也可以实现这个能力但是需要购买难免是比较心疼的) 如何实现他 在Windows里面我们的壁纸其实就和一个窗口差不多他也有句柄我们得到他的句柄然后把视频贴上去就OK了 在VLC中我们可以使用libvlc_media_player_set_hwnd这个函数把播放的视频贴到一个指定的句柄上 那么我们的目标很明确了 获取句柄把视频贴上去 实现步骤 获取桌面句柄 在 Windows 系统中桌面其实是由几个不同的部分组成的。这些部分就像树枝一样一层一层地构成了整个桌面。 父窗口这是整个桌面的基础它就像树干一样支撑着其他部分。这个父窗口在 Windows 中叫做 “Program Manager”Progman。 背景这是你在桌面上看到的图片或颜色是桌面的底层部分就像树的枝叶一样覆盖在整个桌面上。 图标这些是你桌面上看到的各种文件、文件夹和应用程序的快捷方式它们显示在背景之上。 在 Windows 系统中“Program Manager” 包含了一个叫做 “SysListView32” 的窗口这个窗口专门用来显示桌面上的图标。 如果你能把自己比如说一个应用程序或窗口设置在 “Program Manager” 的这个 “SysListView32” 窗口后面那么你的窗口就会出现在桌面图标的后面就好像你躲在树叶后面一样。 所以整个意思是桌面是由父窗口、背景和图标这三部分组成的而通过设置父窗口Program Manager你可以控制自己窗口的显示位置从而把它放在桌面图标的后面。 代码获取桌面句柄 我们使用的是Windows的API你先要包含windows.h HWND FindDTWindow() {// 找到名为 Progman 的顶级窗口句柄它的窗口标题是 Program ManagerHWND hWnd ::FindWindow(LProgman, LProgram Manager);// 发送一个特殊的消息 (0x052C) 给找到的 Progman 窗口// 这条消息会使 Windows 创建一个新的 WorkerW 窗口DWORD_PTR dResult 0;SendMessageTimeout(hWnd, 0x052C, 0, NULL, SMTO_NORMAL, 1000, dResult);// 声明一个变量来存储 WorkerW 窗口的句柄HWND hwndWorkW NULL;// 使用一个 do-while 循环来查找 WorkerW 窗口do {// 查找下一个 WorkerW 窗口hwndWorkW ::FindWindowEx(NULL, hwndWorkW, LWorkerW, NULL);if (NULL hwndWorkW)continue;// 在 WorkerW 窗口中查找 SHELLDLL_DefView 窗口HWND hView ::FindWindowEx(hwndWorkW, NULL, LSHELLDLL_DefView, NULL);if (NULL hView)continue;// 如果找到了 SHELLDLL_DefView 窗口则尝试关闭多余的 WorkerW 窗口HWND h ::FindWindowEx(NULL, hwndWorkW, LWorkerW, NULL);while (NULL ! h) {SendMessage(h, WM_CLOSE, 0, 0);h ::FindWindowEx(NULL, hwndWorkW, LWorkerW, NULL);}break;} while (true);// 返回 Progman 窗口的句柄return hWnd; }libvlc_media_player_set_hwnd函数 libvlc_media_player_set_hwnd 是 libVLC 库中的一个函数用于设置视频输出窗口的句柄 (HWND)。这是在 Windows 平台上使用 libVLC 播放视频时常用的函数。 void libvlc_media_player_set_hwnd(libvlc_media_player_t *p_mi, void *drawable);函数作用 这个函数的主要作用是将视频输出重定向到指定的窗口。换句话说当你使用 libVLC 播放视频时可以指定一个窗口让视频显示在该窗口中。 参数和含义 libvlc_media_player_t *p_mi这是一个指向 libVLC 媒体播放器实例的指针。你需要先创建一个媒体播放器实例然后将它的指针传递给这个函数。 void *drawable这是一个指向窗口句柄 (HWND) 的指针。在 Windows 平台上这个句柄指向你希望视频输出的窗口。 动态壁纸代码 #include iostream// 避免 ssize_t 引发的错误 #if defined(_MSC_VER) #include basetsd.h typedef SSIZE_T ssize_t; #endif#include vlc/vlc.h #include thread #include Windows.husing namespace std;HWND FindDTWindow() {HWND hWnd ::FindWindow(LProgman, LProgram Manager);DWORD_PTR dResult 0;SendMessageTimeout(hWnd, 0x052C, 0, NULL, SMTO_NORMAL, 1000, dResult);HWND hwndWorkW NULL;do {hwndWorkW ::FindWindowEx(NULL, hwndWorkW, LWorkerW, NULL);if (NULL hwndWorkW)continue;HWND hView ::FindWindowEx(hwndWorkW, NULL, LSHELLDLL_DefView, NULL);if (NULL hView)continue;HWND h ::FindWindowEx(NULL, hwndWorkW, LWorkerW, NULL);while (NULL ! h) {SendMessage(h, WM_CLOSE, 0, 0);h ::FindWindowEx(NULL, hwndWorkW, LWorkerW, NULL);}break;} while (true);return hWnd; }// 等待播放结束完整播放 void waitPlaying(libvlc_media_player_t* mp) {libvlc_state_t state;do {state libvlc_media_player_get_state(mp);} while (state ! libvlc_Error state ! libvlc_Ended); }void playerMedia(const char* path) {libvlc_instance_t* vlc libvlc_new(0, NULL);libvlc_media_t* md libvlc_media_new_path(vlc, path);//libvlc_media_new_location(vlc, path);libvlc_media_player_t* mp libvlc_media_player_new_from_media(md);libvlc_media_player_set_media(mp, md);HWND hWnd FindDTWindow();// 设置句柄libvlc_media_player_set_hwnd(mp, hWnd);// 开始播放libvlc_media_player_play(mp);// 等待播放结束waitPlaying(mp);// 释放资源libvlc_media_release(md);libvlc_media_player_release(mp);libvlc_release(vlc); }int main() {playerMedia(./a5.mp4); //RTSP、HTTP ...;return 0; }总结 通过本文的讲解我们成功地利用 C 和 libVLC 创建了一个独特的动态壁纸程序。这个程序不仅能美化你的桌面还能为你带来全新的视觉享受。libVLC 提供了强大的多媒体处理能力而 C 的灵活性则使我们能够充分利用这些功能实现高度自定义的应用程序。希望通过本文你不仅学会了如何使用 libVLC 和 C 创建动态壁纸还能激发更多关于个性化桌面体验的创意和想法。让你的桌面更加生动展示属于你的独特风格。
http://www.zqtcl.cn/news/292414/

相关文章:

  • 购物网站模板 php网页设计图片剧中
  • 嘉峪关市建设局网站横沥镇网站建设公司
  • 查找网站软件培训记录
  • 注册网站安全吗制作人漫画
  • jeecms 怎么建设网站嵌入式软件开发兼职
  • 百度怎么自己做网站四川省建设工程交易中心网站
  • 中介如何做网站收客wordpress 运行代码
  • 网页设计与网站建设考试题目如何做建议的网站
  • 网站怎么推广软文政务网站建设存在问题
  • 公司官方网站建设需要多少钱wordpress单页面制作
  • 社群网站建设网站推广的方式有哪几种
  • 培训机构活动策划网站wordpress 改端口
  • 北京网站制作与营销培训用asp做网站视频
  • 江苏丹阳建设公司网站做网站中的剪辑图片
  • 纯静态网站怎样广州工程造价信息网
  • 为什么网页不能打开建设银行网站企业网站开发综合实训
  • 企业网站制作 深圳网站建站行业公司主页建设
  • 外汇直播网站建设开发做网站空间商需要办什么手续
  • 源码哥网站的模板皮肤病在线咨询医生免费咨询
  • 温岭市市住房和城乡建设规划局网站附近的电脑培训班在哪里
  • 网站备案百度站长提交减肥网站源码
  • 网站添加文章机械代加工厂家
  • 学做各种糕点的网站cn网站建设多少钱
  • 首页网站关键词优化教程如何查询网站点击率
  • 文章类型的网站模版北京朝阳区房价2023年最新房价
  • wap网站发布注销主体和注销网站
  • 微信小程序 做网站满足客户的分销管理系统
  • 高佣联盟做成网站怎么做wordpress 更新版本
  • 杭州营销网站建设公司成都网站排名优化报价
  • 网站建设设计哪家好太原新建火车站