动态桌面方案

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

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);
        }

    }
相关推荐
aqiu11111141 分钟前
【C++算法打怪专栏】8. 字符串转换整数 (atoi)
开发语言·c++·算法
h39746 小时前
DirectShow过滤器开发-视频源过滤器
c++·windows·音视频·directshow
程序猿编码7 小时前
榨干 RTX5090 算力!Qwen3 专用单卡推理引擎,手写C++/CUDA 算子实现 MTP 推测解码
开发语言·c++·大模型推理·qwen3·多模态推理
西飘客8 小时前
vs 怎么根据dll 生成lib文件
c++·qt
bkspiderx9 小时前
Qt 插件机制:动态扩展应用功能的核心框架
开发语言·qt·元数据·qt 插件·qpluginloader
程序员老陆9 小时前
深入理解 C++ thread_local:线程私有存储的正确打开方式
开发语言·c++·程序设计
半杯咖啡半行码11 小时前
Qt开发实战:数据库、MV 模式、QProcess与串口通信全攻略
数据库·qt
半杯咖啡半行码12 小时前
C++ 编程与 STL 模板:从泛型编程到内存安全详解
开发语言·c++
时间的拾荒人12 小时前
Qt 界面优化:绘图详解 —— 从基础图形到图片处理
开发语言·qt·面试
MayZork13 小时前
Qt 文件操作:QSaveFile 与 QTemporaryFile(含 QTemporaryDir)实战
开发语言·qt