本文整理自网络,侵删。
从前我也是用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 randomfrom 随机返回字符串数组avalues中的一个元素
更多相关阅读请进入《Delphi》频道 >>