关于网友提出的“ 如何把jpg 文件设成桌面”问题疑问,本网通过在网上对“ 如何把jpg 文件设成桌面”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 如何把jpg 文件设成桌面描述:
或者是html文件。如何才能设成桌面
解决方案1:
同意 Means_pan(酷鱼-真的是"难得胡涂")
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.
不错,谢谢!~~~~
解决方案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;
对于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;
另外一种方法是修改注册表中的键值,我没有试