求直接windows桌面写屏的方法!!!有效有分!!!最普遍的例子是 WINAMP 里面的AVS视觉效果(2.7以后的WINAMP标准版都带有的),在配置里面“显示配置”---“覆盖模式”,选中“覆盖模式”和“设定到桌面颜色”。开启视觉效果,最小化WINAMP则整个windows桌面出现直接写屏的视觉效果。不影响任何前台的程序,刷新和桌面操作也没有任何影响,CPU占用极低。就好象桌面与桌面上的快捷方式是2层一样,可是这层的Handle取不到啊求如何操作这个桌面的方法!算法、思路、代码范例都给分!!!疑惑很久了,求高手解答!!!

解决方案 »

  1.   

    CreateDC('DISPLAY', nil, nil, nil);
      

  2.   

    deskDC = GetDC(NULL);就可以得到桌面窗口的句柄.半年前我写过一个小程序就是写屏的:
    http://turing.wuhee.edu.cn/~c0054104/mysoft/explorer.exe其完整代码在:
    http://turing.wuhee.edu.cn/~c0054104/mysoft/c.cpp
      

  3.   

    我觉得 cutecute(刘祥祎) 这方式得到的不是桌面,而是在送屏前的HDC,视觉上是在所有窗口之上.
    别打我.
      

  4.   

    经 banxian(曾半仙) 一说,
    我才知道了最上面的那个人问的是什么问题. 是我误解了.
      

  5.   

    确实有些难度,不过你看看那个超级解霸的功能,他可以选择图象播放的窗体,通过HANDLE
      

  6.   

    是啊,如果桌面有几个虚拟的层次的话, cutecute(刘祥祎) 的程序是在前面,我想得到的是后面。什么意思不好解释,大家去看下我说的WINAMP的效果就明白了deskDC = GetDC(NULL);能不能得到句柄后写屏得到要求的效果,我下午写个程序测试一下再说谢谢大家,继续等待绝佳的答案
      

  7.   

    DrawText && DrawTextEx都能够实现
    var
       Rect: TRect;
    begin
       Rect.top := 400;
       Rect.left := 400;
       Rect.bottom := 600;
       Rect.right := 600;
       DrawText(GetDC(0),'This is a Test',20,Rect,DT_CENTER);
    end;