问题如下.
用C#读取注册表,比如读取WINDOWS的版本,然后想把版本的值打印到壁纸上,好比是右上角.
问题是怎么实现这个.
谢谢大家了.

解决方案 »

  1.   

    DrawTextDeskTop.SetDeskTop("Value", this.Font, Brushes.Yellow);
    public class DrawTextDeskTop
    {
        [DllImport("user32.dll", EntryPoint = "GetDesktopWindow")]
            public static extern IntPtr GetDesktopWindow();        [DllImport("user32.dll", EntryPoint = "GetWindowDC")]
            public static extern IntPtr GetWindowDC(IntPtr hwnd);        [DllImport("user32.dll", EntryPoint = "ReleaseDC")]
            public static extern int ReleaseDC(IntPtr hwnd,IntPtr hdc);        public static void SetDeskTop(string p_Text, Font p_Font, Brush p_Brushes)
            {
                IntPtr _DeskTopIntPtr = GetDesktopWindow();
                IntPtr _DC = GetWindowDC(_DeskTopIntPtr);            Graphics _Graphics = Graphics.FromHdc(_DC);
                int _X =Screen.PrimaryScreen.Bounds.Width;
                SizeF _Size = _Graphics.MeasureString(p_Text, p_Font);
                _X -= (int)_Size.Width;            _Graphics.DrawString(p_Text, p_Font, p_Brushes, _X, 0);
                Win32API.ReleaseDC(_DeskTopIntPtr, _DC);            
            }
    }取注册表`~~你找下把
      

  2.   

    To  zgke 
    非常感谢.注册表的值已经取完了,可是最后的Win32API总无法通过.
    虽然前面已经调用了  "user32.dll"Win32API还需要什么Using 或者dll吗
      

  3.   

    Win32API 把这个删除了 就好了
      

  4.   

    你用HOOK做获取消息 或则 你做个时间一直刷
      

  5.   

    zgke大侠,怎么做时间刷,可不可以用后台线程之类
    设一个循环让它一直显示呢
      

  6.   

    那就用Windows“控制面板”中的“任务计划”让它每60秒执行一次。
      

  7.   

    To wuyi8808还得牵涉到任务计划,有点劳心劳力.
    打算在C#里一次搞定.
      

  8.   

    或则做个TIMER控件 让他刷去好了 
      

  9.   

       如果只是想在桌面上显示 Windows 版本号,不必这么麻烦,按下面去做就行了(google一下得到的):  通过修改注册表,可以在桌面右下角显示出你的Windows版本号。  首先运行注册表编辑器:开始->运行->输入: regedit, 然后打开已有的或新建下列操作子键, 并根据下表编辑其相应键值项(如果不存在请新建此项)  在注册表中找到:  操作子键 HKEY_CURRENT_USER\Control Panel\Desktop  键值项(数据类型) :PaintDesktopVersion(DWord值)  键值:0(不显示Windows的版本号); 1(显示Windows的版本号)  (备注)把这项改成1,注销或重起系统以后,就可以在桌面右下角显示你的Windows版本号了。
      

  10.   

    呵呵抱歉,我只是举个例子获取版本号,
    其实是获取其他的文档名称等等.关于Time 控件,我自己先试试看.谢谢大家.
      

  11.   

    可以考虑这样:
    它会一直执行,要停止它,在任务管理器中把进程杀了。using System;
    using System.Drawing;
    using System.Threading;
    using System.Runtime.InteropServices;class Program
    {
      static void Main()
      {
        for (;;)
        {
          DrawTextDeskTop.SetDeskTop(DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss"), new Font("宋体",16), Brushes.Yellow); 
          Thread.Sleep(1000);
        }
      }
    }class DrawTextDeskTop 

      [DllImport("user32.dll", EntryPoint = "GetDesktopWindow")] 
      public static extern IntPtr GetDesktopWindow();   [DllImport("user32.dll", EntryPoint = "GetWindowDC")] 
      public static extern IntPtr GetWindowDC(IntPtr hwnd);   [DllImport("user32.dll", EntryPoint = "ReleaseDC")] 
      public static extern int ReleaseDC(IntPtr hwnd,IntPtr hdc);   public static void SetDeskTop(string p_Text, Font p_Font, Brush p_Brushes) 
      { 
        IntPtr _DeskTopIntPtr = GetDesktopWindow(); 
        IntPtr _DC = GetWindowDC(_DeskTopIntPtr); 
        Graphics.FromHdc(_DC).DrawString(p_Text, p_Font, p_Brushes, 60, 200); 
        ReleaseDC(_DeskTopIntPtr, _DC);            
      } 
      

  12.   

    To  wuyi8808 
    很感谢.但是有个问题
    画面一旦被什么窗口经过后,会变得惨不忍睹.
      

  13.   

    如果不行 你用控件的方式把 使用
       [DllImport("user32.dll", EntryPoint = "SetParent")]
            public static extern int SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
    把但你控件透明的另外处理.,.
      

  14.   

    To  zgke 
    说的太深奥了,我没有那么专业.