我也试了postmessage一个F5键的消息给桌面,还是不行……

解决方案 »

  1.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,shellapi,
      ExtCtrls, StdCtrls, Buttons,jpeg,registry;type
      TForm1 = class(TForm)
        BitBtn1: TBitBtn;
        BitBtn2: TBitBtn;
        Image1: TImage;
        OpenDialog1: TOpenDialog;
        procedure BitBtn1Click(Sender: TObject);
        procedure BitBtn2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.BitBtn1Click(Sender: TObject);
      var j:TjpegImage;
          a:Word;
          b:Thandle;
          h:Hpalette;
    begin
      if openDialog1.Execute then begin
         j:=TJpegImage.Create ;
         j.LoadFromFile(opendialog1.filename);
         j.SaveToClipboardFormat(a,b,h);
         Image1.Picture.Bitmap.LoadFromClipboardFormat (a,b,h);
         bitbtn2.Enabled :=true;
         j.Free;
      end;
    end;procedure TForm1.BitBtn2Click(Sender: TObject);
      var Reg:Tregistry;
    begin
       image1.Picture.SaveTofile('e:\aa.bmp');
       Reg:=Tregistry.Create;{创建Tregistry对象的实例}
       Reg.Rootkey:= Hkey_Current_User;{设置根键名称}
       Reg.OpenKey('Control Panel\Desktop',False); {打开Control Panel\Desktop 路径对应的主键}
       Reg.WriteString ('TileWallPaper','0');
       Reg.WriteString('Wallpaper','e:\aa.bmp');{向TileWallpaper 和Wallpaper串覆盖写入新值}
       Systemparametersinfo(SPI_SETDESKWallpaper,0,Nil,SPIF_SendChange);{向Windows发送消息,通知Windows更换壁纸}
       Reg.CloseKey;{将更改内容写入注册表并关闭}
       Reg.Free;{释放对象}end;end.
      

  2.   

    fontain() 朋友,我用的就是你说的这些代码,但不能自动更新桌面,torble(阿裕) 朋友,在使用活动桌面的情况下,有没有办法通知Windows更新桌面?因为Windows自带的画图就可以办到立即更新,不管我用没用活动桌面……