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 如何判断当前网卡是物理网卡

剪贴板单元 clipboards.pas

Delphi简单判断程序30秒没有键盘和鼠标动作示例

Delphi 实现简易语音发音(基于tts方式)

Delphi jpg图片 旋转 切边 缩放

Delphi 延时的4种方法

Delphi 获取当前目录下的.txt文本不要带后缀扩展名

Delphi 计算ip地址范围

Delphi 的编码与解码(或叫加密与解密)函数

Delphi firedac连接oracle

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



打赏

取消

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

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

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

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

评论

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