目前播放器的桌面背景播放功能是如何实现的,把动态视频做为桌面背景,其他图标,任务栏等一切照常使用

rageliu 2008-04-25 02:15:22
vlc,金山影霸等都实现了该功能,vista上的DreamScene也实现了该功能。
知道的朋友指点下,任何相关资料都可以
...全文
6300 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
james2336 2009-12-31
  • 打赏
  • 举报
回复
C# 怎么实现如题功能?菜鸟提问。
yufeng996 2008-05-21
  • 打赏
  • 举报
回复
为什么很多选项是灰色的啊?
rageliu 2008-04-26
  • 打赏
  • 举报
回复
1.视频播放完再次播放时转换不连续

该问题已解决

2.如果硬件加速被关闭或被其他程序占用,会失败

这个问题估计比较麻烦,是整个方案的问题了
rageliu 2008-04-25
  • 打赏
  • 举报
回复
vlc等也是使用的overlay的keycolor
rageliu 2008-04-25
  • 打赏
  • 举报
回复
to laiyiling:

感谢老大的回复,ds方式使用put_owner()可以设置句柄,这和前面2位朋友的方案是一样的,需要使用overlay的keycolor,也就是采用了vmr的方式,该方式我已实现,问题有:
1。视频播放完再次播放时转换不连续
2。如果硬件加速被关闭或被其他程序占用,会失败

to zzz3265:
直接GetDC方式不对,


我目前有些思路,正在修改,再次感谢大家,也等大家的其他想法
Yofoo 2008-04-25
  • 打赏
  • 举报
回复
桌面其实是个ListCtrl(类名:SysListView32)
直接GetDC, 输出视频到HDC 就好了
Elysium 2008-04-25
  • 打赏
  • 举报
回复
不知道,难道是获取屏幕DC??
Kudeet 2008-04-25
  • 打赏
  • 举报
回复
最好的方式还是看VLC的源代码 :)
Kudeet 2008-04-25
  • 打赏
  • 举报
回复
include   <mmsystem.h>   

MCI_ANIM_OPEN_PARMS mciopen;
MCI_ANIM_WINDOW_PARMS mciWindow;
memset((LPSTR)&mciopen,0,sizeof(mciopen));
memset((LPSTR)&mciWindow,0,sizeof(mciWindow));

mciopen.lpstrDeviceType="MPEGVideo";
mciopen.lpstrElementName="c:\\na.mpg";
mciSendCommand(0,MCI_OPEN,MCI_OPEN_TYPE|MCI_OPEN_ELEMENT,(DWORD)(LPVOID)&mciopen);
mciWindow.hWnd=GetDesktopWindow();//如果桌面是web的话。。。要得到IE的句柄
mciSendCommand(mciopen.wDeviceID;
,MCI_WINDOW,MCI_ANIM_WINDOW_HWND,(DWORD)(LPVOID)&mciWindow);
mciSendCommand(mciopen.wDeviceID;
,MCI_PLAY,NULL,NULL);


这样可以简单的实现桌面播放,但是它截获了鼠标键盘消息.

分两种情况!
1:桌面开启了web方式查看的话,想办法得到桌面的IE句柄。
2:如果没有开启,则要得到sysListview32的句柄。
Kudeet 2008-04-25
  • 打赏
  • 举报
回复
首先可以考虑DirectShow的子窗口技术. 记得DirectShow可以指定播放窗口的,如果为NULL,就弹出个新窗体。 你可以尝试找到桌面的窗体句柄,然后设置成DirectShow的播放窗体。
rageliu 2008-04-25
  • 打赏
  • 举报
回复
1搂兄弟的也是overlay keycolor,感谢
rageliu 2008-04-25
  • 打赏
  • 举报
回复
感谢,楼上提供的是overlay keycolor方式,在不开硬件加速或被其他程序占用时就有问题,还有其他方法吗??

再次感谢
  • 打赏
  • 举报
回复
很早之前
打开豪杰
做法是把桌面背景设置成粉红色.
就能看到在桌面背景上放图像了.
Chivalry 2008-04-25
  • 打赏
  • 举报
回复
Introduction
This simple C# WinForms project allows you to playback video from a live capture device or from an existing video file and blend the video using transparency with the existing Windows desktop. The user can still interact with all other application windows "through" the playing video stream.

http://www.codeproject.com/KB/audio-video/TransparentDesktopVideo.aspx

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧