在98下已经成功了,2000下只是看见桌面闪一下,什么也没变的说....

解决方案 »

  1.   

    我的是可以的:
    if openpicturedialog1.Execute then
        systemparametersinfo(SPI_SETDESKWALLPAPER,1,pchar(openpicturedialog1.FileName),SPIF_UPDATEINIFILE);
      

  2.   

    //没任何问题的!!!!
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      if OpenDialog1.Execute then
      begin
        Image1.Picture.LoadFromFile(OpenDialog1.FileName);
        FileName := OpenDialog1.FileName;
      end;
    end;procedure TForm1.Button2Click(Sender: TObject);
    Var
      Reg:TRegistry;
    Begin
      if (FileName='') Then
      begin
        Messagedlg('请先选择一幅位图',mtinformation,[mbOK],0);
      end
      else
      begin
        try
          Reg:=TRegistry.Create;  
          Reg.Rootkey:= Hkey_Current_User;  //HKEY_CURRENT_USER\Control Panel\Desktop
          if Reg.OpenKey('\Control Panel\Desktop',true) then
          begin
            Reg.WriteCurrency('TileWallpaper',1);
            Reg.WriteString('Wallpaper',FileName);
            Reg.WriteInteger('WallpaperStyle',0);
            if SystemParametersInfo(SPI_SETDESKWALLPAPER,1,pchar(FileName),SPIF_UPDATEINIFILE) then
            begin
              Self.Caption := '设置成功';
            end
            else
            begin
              Self.Caption := '设置失败';
            end;
            Reg.CloseKey;
          end;
        finally
          Reg.Free;
        end;
      end;
    end;