Delphi通过调用COM对象实现更改桌面壁纸


本文整理自网络,侵删。

 
从前我也是用SystemParametersInfo这API来改桌面壁纸的,问题多多,也不知道哪错了,就没深究下去。看了CSDN的帖子后,大彻大悟~~ 
        在XP下,SystemParametersInfo只支持BMP格式的图片,如果用其他格式的话就会黑屏?(我记得当年我就是这情况 现在懒得测试了) 把这API的调用方法扔出来:
SystemParametersInfo(SPI_SETDESKWALLPAPER, 1, pointer(pchar(‘c:\a.bmp’)), 0); 
       因为这API函数的局限性

uses shlobj,  ComObj;

procedure SetWP(wp:string);
var
    hObj: IUnknown;
    ADesktop: IActiveDesktop;
begin
    hObj := CreateComObject(CLSID_ActiveDesktop);
    ADesktop := hObj as IActiveDesktop;
    ADesktop.SetWallpaper(PWideChar(WideString(wp)), 0);
    ADesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
end;

//调用方法
SetWP('C:\1.jpg');

注意:因为调用的是COM对象,那么就需要初始化COM库
如果没有引用类似 dialogs 那种单元的话,就需要手动调用CoInitialize() 然后退出时释放对象

uses ActiveX;

initialization
    CoInitialize(nil);

finalization
    CoUninitialize;

相关阅读 >>

Delphi的几种类型转换

Delphi 弹窗显示sql字符串

Delphi 倒计时源码

Delphi 一组数据,按由大到小进行排序,并输出最大值与最小值

Delphi循环移位操作

Delphi 自定义消息拦截

Delphi tms web core webmemo 横竖滚动条

Delphi 调用viewer-windows10 图像浏览器

Delphi 判断是否为文件名

Delphi10.3构造一个json数据的第三种方法,并格式化输出

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...