WinForm里面,想获取到桌面背景图片的地址,然后把图片设置成WinForm窗体的背景图片,但不知道怎么得到操作系统的桌面背景图片的地址,希望有朋友能够帮忙解决一下!

解决方案 »

  1.   

    file命名空间里有,找到系统路径再找下级路径.
      

  2.   

    需要使用到系统API来操作。
    下面的代码是一个更换桌面背景的,供你参考
    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    using System.Runtime.InteropServices;
    using System.IO;
    namespace desktopWalk
    {
     /// <summary>
     /// Form1 的摘要说明。
     /// </summary>
     public class Form1 : System.Windows.Forms.Form
     {
      private System.Windows.Forms.Button button1;
      private System.Windows.Forms.Button button2;
      private System.Windows.Forms.TextBox textBox1;
      private System.Windows.Forms.GroupBox groupBox1;
      private System.Windows.Forms.GroupBox groupBox2;
      private System.Windows.Forms.Label label1;
      private System.Windows.Forms.PictureBox pictureBox1;
      private System.Windows.Forms.Label label2;
      private System.Windows.Forms.OpenFileDialog openFileDialog1;
      private string filepath;
      /// <summary>
      /// 必需的设计器变量。
      /// </summary>
      private System.ComponentModel.Container components = null;
      [DllImport("user32.dll", CharSet=CharSet.Auto)]
      public static  extern int SystemParametersInfo (int uAction , int uParam , string lpvParam , int fuWinIni) ;  public Form1()
      {
       //
       // Windows 窗体设计器支持所必需的
       //
       InitializeComponent();   //
       // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
       //
      }  /// <summary>
      /// 清理所有正在使用的资源。
      /// </summary>
      protected override void Dispose( bool disposing )
      {
       if( disposing )
       {
        if (components != null) 
        {
         components.Dispose();
        }
       }
       base.Dispose( disposing );
      }  #region Windows Form Designer generated code
      /// <summary>
      /// 设计器支持所需的方法 - 不要使用代码编辑器修改
      /// 此方法的内容。
      /// </summary>
      private void InitializeComponent()
      {
       this.button1 = new System.Windows.Forms.Button();
       this.button2 = new System.Windows.Forms.Button();
       this.textBox1 = new System.Windows.Forms.TextBox();
       this.groupBox1 = new System.Windows.Forms.GroupBox();
       this.label2 = new System.Windows.Forms.Label();
       this.pictureBox1 = new System.Windows.Forms.PictureBox();
       this.label1 = new System.Windows.Forms.Label();
       this.groupBox2 = new System.Windows.Forms.GroupBox();
       this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
       this.groupBox1.SuspendLayout();
       this.SuspendLayout();
       // 
       // button1
       // 
       this.button1.Location = new System.Drawing.Point(312, 62);
       this.button1.Name = "button1";this.button1.TabIndex = 0;
       this.button1.Text = "选择背景";
       this.button1.Click += new System.EventHandler(this.button1_Click);
       // 
       // button2
       // 
       this.button2.Location = new System.Drawing.Point(312, 120);
       this.button2.Name = "button2";
       this.button2.TabIndex = 1;
       this.button2.Text = "更换背景";
       this.button2.Click += new System.EventHandler(this.button2_Click);
       // 
       // textBox1
       // 
       this.textBox1.Location = new System.Drawing.Point(16, 64);
       this.textBox1.Name = "textBox1";
       this.textBox1.Size = new System.Drawing.Size(272, 21);
       this.textBox1.TabIndex = 2;
       this.textBox1.Text = "";
       // 
       // groupBox1
       // 
       this.groupBox1.Controls.AddRange(new System.Windows.Forms.Control[] {
                         this.label2,
                         this.pictureBox1,
                         this.label1,
                         this.groupBox2,
                         this.button1,
                         this.button2,
                         this.textBox1});
       this.groupBox1.Location = new System.Drawing.Point(16, 16);
       this.groupBox1.Name = "groupBox1";
       this.groupBox1.Size = new System.Drawing.Size(392, 240);
       this.groupBox1.TabIndex = 3;
       this.groupBox1.TabStop = false;
       this.groupBox1.Text = "更换背景图片";
       // 
       // label2
       // 
       this.label2.Location = new System.Drawing.Point(8, 128);
       this.label2.Name = "label2";
       this.label2.Size = new System.Drawing.Size(72, 23);
       this.label2.TabIndex = 6;
       this.label2.Text = "预览图片:";
       // 
       // pictureBox1
       // 
       this.pictureBox1.Location = new System.Drawing.Point(104, 120);
       this.pictureBox1.Name = "pictureBox1";
       this.pictureBox1.Size = new System.Drawing.Size(184, 104);
    this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
       this.pictureBox1.TabIndex = 5;
       this.pictureBox1.TabStop = false;
       // 
       // label1
       // 
       this.label1.Location = new System.Drawing.Point(24, 24);
       this.label1.Name = "label1";
       this.label1.Size = new System.Drawing.Size(64, 23);
       this.label1.TabIndex = 4;
       this.label1.Text = "背景图片:";
       // 
       // groupBox2
       // 
       this.groupBox2.Location = new System.Drawing.Point(8, 104);
       this.groupBox2.Name = "groupBox2";
       this.groupBox2.Size = new System.Drawing.Size(376, 8);
       this.groupBox2.TabIndex = 3;
       this.groupBox2.TabStop = false;
       // 
       // Form1
       // 
       this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
       this.ClientSize = new System.Drawing.Size(432, 269);
       this.Controls.AddRange(new System.Windows.Forms.Control[] {
                        this.groupBox1});
       this.MaximizeBox = false;
       this.Name = "Form1";
       this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
       this.Text = "设置背景";
       this.groupBox1.ResumeLayout(false);
       this.ResumeLayout(false);  }
      #endregion  /// <summary>
      /// 应用程序的主入口点。
      /// </summary>
      [STAThread]
      static void Main() 
      {
       Application.Run(new Form1());
      }  private void button2_Click(object sender, System.EventArgs e)
      {
       int nResult ;
       if (File.Exists(filepath))
       {
        nResult = SystemParametersInfo(20, 1, filepath,  0x1 | 0x2 );
        if(nResult==0)
         MessageBox.Show("没有更新成功!");
        else
        MessageBox.Show("正在更换背景图片...");
       }
       else
        MessageBox.Show("文件不存在!");  }  private void button1_Click(object sender, System.EventArgs e)
      {
       openFileDialog1.InitialDirectory = @"C:\";
       if (openFileDialog1.ShowDialog() == DialogResult.OK)
       {
        textBox1.Text = openFileDialog1.FileName;
        string[] strA=textBox1.Text.Split('.');
        Bitmap bm=new Bitmap(textBox1.Text);
        if(strA[1]!="bmp")
        {
         filepath=strA[0]+".bmp";bm.Save(filepath);
        }
        else
         filepath=textBox1.Text;
        this.pictureBox1.Image=bm;
       }  }
     }
    }
      

  3.   

    的确是要操作API,此例还是不行,不过我已经解决了,谢谢!