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读取一个access数据库中的表名

Delphi 一个文件重复生成的小工具[附源码]

Delphi 把窗体上的所有edit清空怎么做

Delphi tms web core 复制内容到剪切板

Delphi randomfrom 随机返回字符串数组avalues中的一个元素

Delphi中关于canvas.textout的用法

Delphi opendialog控件用法

Delphi 抓图后打印这张图片,弹出打印属性框

Delphi 获得指定进程的id号

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



打赏

取消

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

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

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

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

评论

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