[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr GetWindowDC(IntPtr hWnd);
  hdc = GetWindowDC(IntPtr.Zero); //参数 0 就是取得整个屏幕的GC句柄
  System.Drawing.Graphics g =new System.Drawing.Graphics.FromHdc(hdc);这样获得的是屏幕的句柄(我打开一个窗体还在窗体上画出来了).我的目的是得到windows桌面的句柄,我画出来的东西总是在windows桌面上显示.

解决方案 »

  1.   

    你是什么意思?
    如果你打开一个窗口挡住了一部分桌面背景区域,那应该怎么画呢?
    是直接画在窗口上,还是根本不画?
    实际上肯定会画在窗口上啊GetWindowDC(IntPtr.Zero);我到从来没用过,我都是用GetDesktopWindow来获得桌面句柄的
      

  2.   

    GetDesktopWindows
      

  3.   

    可以拉
      IntPtr wndDesktop = FindWindow("Progman", "Program Manager");//实现盯桌面,最底层GC句柄
                hdc = GetWindowDC(wndDesktop);当时我点击windows的显示桌面它也消失了.
      

  4.   

     [DllImport("User32.dll",EntryPoint="FindWindow")] 
            private static extern IntPtr FindWindow(string lpClassName,string lpWindowName);           
     [DllImport("user32.dll", CharSet = CharSet.Auto)]
            public static extern IntPtr GetWindowDC(IntPtr hWnd); IntPtr wndDesktop = FindWindow("Progman", "Program Manager");//实现盯桌面,最底层GC句柄
     IntPtr hdc = GetWindowDC(wndDesktop); System.Drawing.Graphics g = System.Drawing.Graphics.FromHdc(hdc)
      g.DrawString("你好", f, sldbrush, TaskDrawArea); 
    这样我就可以在桌面上画我想画的东西.有一个问题就是当我们点“显示桌面”按钮时,而我在桌面上画的东西也不见拉。再点一下“显示桌面”
    这才显示出来。我的目的:在桌面上画出来的东西总是在windows桌面上显示,点击“显示桌面”对在桌面上画的东西不起作用.