用SystemParametersInfo好像只能设置BMP格式的壁纸,于是我尝试使用IActiveDesktop接口,代码片段如下:var
Dk : IActiveDesktop;
begin
Dk:= CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop;
if SUCCEEDED(Dk.SetWallpaper(FileName), 0)) then
ShowMessage('OK!');
Dk.ApplyChanges(AD_APPLY_SAVE or AD_APPLY_REFRESH);
Dk:= nil;
end;可是运行过后系统壁纸没有变化,但是的确是返回了S_OK,而且壁纸列表中的壁纸也没有变,请问是怎么回事呢
Dk : IActiveDesktop;
begin
Dk:= CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop;
if SUCCEEDED(Dk.SetWallpaper(FileName), 0)) then
ShowMessage('OK!');
Dk.ApplyChanges(AD_APPLY_SAVE or AD_APPLY_REFRESH);
Dk:= nil;
end;可是运行过后系统壁纸没有变化,但是的确是返回了S_OK,而且壁纸列表中的壁纸也没有变,请问是怎么回事呢
解决方案 »
- 求dream designer的解压密码
- 变量释放之后已经打开的OLE是否由系统控制?
- Access数据库中,日期格式显示为04-1-1,如何在数据库中就将其限制为正规的2004-01-01呢?
- Delphi 中有没宏替换?
- 亂散分.呵呵
- 请帮我分析一下 网易泡泡 大概是怎么做的
- 菜鸟问题:关于Treeview 如何添加子结点?
- 请问MVC(MODEL VIEW CONTROLS)是什么指的意思??
- TIdTCPServer的客户端断开的问题
- 有本D5书写道:“要把ACTIVEX 控件的注册代码集成到应用程序中并不困难”,这句话什么意思??什么叫做注册代码??(DELPHI 5 开发人员指南 第155页)
- 问个不该问的问题
- 一个基础概念问题!困惑我好久的问题!
按WEB页方式查看活动桌面
打上勾就OK了
const
CLSID_ActiveDesktop: TGUID = '{75048700-EF1F-11D0-9888-006097DEACF9}';
var
ActiveDesktop: IActiveDesktop;
ComponentsOpt: TComponentsOpt;
WStr : PWideChar;
begin
WStr := AllocMem(MAX_PATH);
try
StringToWideChar(WallpaperPath, WStr, MAX_PATH);
ActiveDesktop := CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop;
ComponentsOpt.dwSize := sizeOf(ComponentsOpt);
ActiveDesktop.GetDesktopItemOptions(ComponentsOpt,0);
ComponentsOpt.fActiveDesktop := true; //啟動ActiveDesktop
ActiveDesktop.SetDesktopItemOptions(ComponentsOpt,0);
ActiveDesktop.SetWallpaper(WStr, 0);
ActiveDesktop.ApplyChanges(AD_APPLY_ALL); //儲存設定
finally
FreeMem(wstr);
end;
end;