动态桌面方案

整理一下可以实现动态桌面的方案。

1. qt

qt使用QMediaPlayer播放视频,对于mp4等视频依赖解码后端,比如ffmpeg,需要编译multimedia_backend_ffmpeg

2. ffmpeg+kanzi 3.6

https://ffmpeg.org//

编译ffmpeg比较困难,可去官网下载,一般是x86版本,所以不要用kanzi 3.9(64位)

ffmpeg-5.1.2-full_build-shared 稳定

ffmpeg-8.0.1-full_build-shared 最新

3. gstreamer + glfw + opengl

https://gstreamer.freedesktop.org/download

可以选择32-bit

MSVC 32-bit (VS 2019, Release CRT)

  • 1.26.10 runtime installer
  • 1.26.10 development installer

glfw + opengl封装成了2d引擎 自制2d游戏引擎

gst-plugins 发布

exe旁放gst-plugins文件夹,里面有

glib-2.0-0.dll

gobject-2.0-0.dll

gstapp-1.0-0.dll

gstreamer-1.0-0.dll

gstvideo-1.0-0.dll

程序支持播放视频后,再把窗口设置为windows桌面的子窗口就行。

c 复制代码
if (isDesktop) {
        SendMessageToDesktop();//发送消息
        Sleep(100);             // 2. 稍微等一下(可选,防止系统还没反应过来)
        HWND desktopWnd = findDesktopIconWnd();//获取桌面句柄

        if (desktopWnd)
        {
            GetWindow().SetIsDesktopFlag(true);
            HWND hwndGLFW = GetWindow().GetNativeWindowID();
            CC_INFO("Window handle: %p \n", hwndGLFW);
            SetParent(hwndGLFW, desktopWnd);

            int screenW = GetSystemMetrics(SM_CXSCREEN);
            int screenH = GetSystemMetrics(SM_CYSCREEN);

            // 设置窗口大小和位置,并确保窗口在 WorkerW 下方
            SetWindowPos(hwndGLFW,
                HWND_BOTTOM,
                0, 0,
                screenW, screenH,
                SWP_NOACTIVATE | SWP_FRAMECHANGED | SWP_SHOWWINDOW);
        }
        else {
            exit(0);
        }

    }
相关推荐
「QT(C++)开发工程师」1 小时前
C++ auto 用法详解
开发语言·c++
OPEN-F1 小时前
C++STL教程:容器适配器与实用工具
开发语言·c++
OPEN-F1 小时前
C++模板教程:变参模板、折叠表达式与SFINAE
java·开发语言·c++
有点。1 小时前
C++二叉搜索树进阶
开发语言·c++
HugoStudio_SWAN1 小时前
【擦除重绘】C++ 控制台动画:弹跳 Logo DVD 屏保效果
开发语言·c++·学习·程序人生
kyle~3 小时前
C++_STL---迭代器失效
开发语言·c++
wuminyu4 小时前
深入剖析 Panama Off-heap 的性能损耗与开销
java·linux·c语言·jvm·c++
rhythm-ring5 小时前
宏定义续行符 \ 的使用与踩坑
c语言·c++
张人玉5 小时前
基于 Python 机器学习 与 PyQt5 桌面框架开发的可视化分析系统——基于大数据的网上购物消费行为分析可视化大屏
python·qt·机器学习·echarts·three.js
江安下小雨6 小时前
muduo网络库(十六):新增连接池模块
网络·c++