vlc,金山影霸等都实现了该功能,vista上的DreamScene也实现了该功能。
知道的朋友指点下,任何相关资料都可以

解决方案 »

  1.   

    http://www.vbgood.com/viewthread.php?tid=49884&extra=&page=1
      

  2.   

    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
      

  3.   

    感谢,楼上提供的是overlay keycolor方式,在不开硬件加速或被其他程序占用时就有问题,还有其他方法吗??再次感谢
      

  4.   

    1搂兄弟的也是overlay keycolor,感谢
      

  5.   

    首先可以考虑DirectShow的子窗口技术. 记得DirectShow可以指定播放窗口的,如果为NULL,就弹出个新窗体。 你可以尝试找到桌面的窗体句柄,然后设置成DirectShow的播放窗体。
      

  6.   

    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的句柄。   
      

  7.   

    最好的方式还是看VLC的源代码 :)
      

  8.   

    桌面其实是个ListCtrl(类名:SysListView32)
    直接GetDC, 输出视频到HDC 就好了
      

  9.   

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

  10.   

    vlc等也是使用的overlay的keycolor