怎样把一个html 文件设成当前桌面?(200分)

  • 主题发起人 主题发起人 luckystart
  • 开始时间 开始时间
L

luckystart

Unregistered / Unconfirmed
GUEST, unregistred user!
[red]
在桌面操作很简单。但是怎样用编程实现?
用IActiveDesktop?我试了,没成功。

各位帮忙回答一下。感激不尽[/red]!!
 
怎么没人回啊?
 
编程修改注册表你会吧
 
要通过编程我不会!
 
// 1.Way:

uses
Registry;

procedure SetWallpaper(sWallPaperBMPPath: string; bTile: Boolean);
var
reg: TRegIniFile;
begin
reg := TRegIniFile.Create('Control Panel/Desktop');
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]/wall.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;

 
去csdn文档区,有答案
 
多人接受答案了。
 

Similar threads

后退
顶部