如何把jpg 文件设成桌面

来源:互联网  时间:2016/7/18 21:58:57

关于网友提出的“ 如何把jpg 文件设成桌面”问题疑问,本网通过在网上对“ 如何把jpg 文件设成桌面”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 如何把jpg 文件设成桌面
描述:

或者是html文件。如何才能设成桌面


解决方案1:

同意  Means_pan(酷鱼-真的是"难得胡涂")

解决方案2:

unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, 
Dialogs, jpeg, registry, ExtDlgs, StdCtrls, Buttons;
type
  TForm1 = class(TForm)
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    SpeedButton3: TSpeedButton;
    OpenPictureDialog1: TOpenPictureDialog;
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
    openpicturedialog1.execute;
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
Var
    reg: tregistry;
    jpeg: tjpegimage;
    bmp: tbitmap;
begin
    if (openpicturedialog1.filename='') then 
        messagedlg(请选择一副图片',mtinformation,[mbOK],0)
    Else
    begin
        jpeg:=tjpegimage.Create;
        jpeg.LoadFromFile(openpicturedialog1.filename);        bmp:=tbitmap.Create;
        bmp.assign(jpeg);
        bmp.savetofile('c:\windows\wall.bmp');
        reg:=tregistry.Create;
        reg.rootkey:=hkey_current_user;
        reg.openkey('control panel\desktop',false);
        reg.writestring('tilewallpaper','0');
        reg.writestring('wallpaper','c:\windows\wall.bmp');
        systemparametersinfo(spi_setdeskwallpaper,0,nil,spif_sendchange);
        reg.closekey;
        reg.Free;
        messagedlg('桌面设置成功!',mtinformation,[mbOK],0);
    end;
end;
procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
    close;
end;
end.

解决方案3:

不错,谢谢!~~~~

解决方案4:

更换墙纸    
// 1.Way:
uses
Registry;
procedure SetWallpaper(sWallPaperBMPPath: string; bTile: Boolean);
var
reg: TRegIniFile;
begin
reg := TRegIniFile.Create('Control Panel');
try
with reg do
begin
WriteString('', 'Wallpaper', sWallPaperBMPPath);
WriteString('', 'TileWallpaper', IntToStr(Ord(bTile)));
end;
finally
reg.Free;
end;
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, nil, SPIF_SENDWININICHANGE);
end;
// 2. Way:
procedure TForm1.Button1Click(Sender: TObject);
var
sWallPaperBMPPath: string;
begin
sWallPaperBMPPath := 'C:[WinDIR].bmp';
if not SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, Pointer(sWallPaperBMPPath),
SPIF_SENDWININICHANGE) then
ShowMessage('Succesful.')
else
ShowMessage('Failed!');
end;
// 3. Set the wallpaper for the Active Desktop.
{
You may have noticed that using SystemParametersInfo to change the wallpaper
when ActiveDesktop is turned on doesn't work. The reason is because you need
to use the IActiveDesktop COM interface. Using SystemParametersInfo still works,
but it doesn't update the wallpaper.
Requires Internet Explorer 4.0 or later).
}
uses
ShlObj, ComObj;
function ChangeWallpaper(aFile: String): Boolean;
const
CLSID_ActiveDesktop: TGUID = '{75048700-EF1F-11D0-9888-006097DEACF9}';
var
hObj: IUnknown;
ADesktop: IActiveDesktop;
str: string;
wstr: PWideChar;
begin
hObj := CreateComObject(CLSID_ActiveDesktop);
ADesktop := hObj as IActiveDesktop;
wstr := AllocMem(MAX_PATH);
try
StringToWideChar(aFile, wstr, MAX_PATH);
ADesktop.SetWallpaper(wstr, 0);
ADesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
finally
FreeMem(wstr);
end;
end;
**************************************
活动桌面下更换墙纸:
uses shlobj;
获得墙纸
procedure TForm1.Button1Click(Sender: TObject);
var
ADeskTop:IActiveDesktop;
wallpaper:PwideChar;
begin
ADeskTop:=CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop;
GetMem(wallpaper,128);
ADeskTop.GetWallpaper(wallpaper,128,0);
ShowMessage(string(wallpaper));
FreeMem(wallpaper);
end;
设置墙纸
procedure TForm1.Button1Click(Sender: TObject);
var
ADeskTop:IActiveDesktop;
wallpaper:PwideChar;
begin
ADeskTop:=CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop;
wallpaper:='d:2.bmp';
ADeskTop.SetWallpaper(wallpaper,0);
ADeskTop.ApplyChanges(AD_APPLY_ALL);
end;
 
 

解决方案5:

对于jpg的图片,直接用SystemParametersInfo不行
必须要转化为bmp图片才行
uses jpeg;
var
  bmp: TBitmap;
  jpg: TJpegImage;
begin
  try
    bmp := TBitmap.Create;
    jpg := TJpegImage.Create;
    jpg.LoadFromFile('c:\kitty.jpg');
    bmp.Assign(jpg);
    bmp.SaveToFile('c:\kitty.bmp');
    //SystemParametersInfo(SPI_SETDESKWALLPAPER,0,pchar('c:\kitty.jpg'),SPIF_SENDWININICHANGE or SPIF_UPDATEINIFILE);
    SystemParametersInfo(SPI_SETDESKWALLPAPER,0,pchar('c:\kitty.bmp'),SPIF_SENDWININICHANGE or SPIF_UPDATEINIFILE);
  finally
    bmp.Free;
    jpg.Free;
  end;
end;
另外一种方法是修改注册表中的键值,我没有试

上一篇一个有关HTTP协议的底层技术性问题(高分相送)
下一篇如何将不同类的信息保存在二进制文件中,可以保存和读取?类似一个本地数据库
明星图片
相关文章
《 如何把jpg 文件设成桌面》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)