Delphi通过调用COM对象实现更改桌面壁纸
2015-11-26 21:37
537 查看
从前我也是用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;
http://www.lsworks.net/article/29.html
在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;
http://www.lsworks.net/article/29.html
相关文章推荐
- Delphi之TDrawGrid绘制
- Delphi中的消息截获(六种方法)
- Delphi下获取IE的UserAgent的方法
- Delphi使用Windows API函数AnimateWindow实现窗体特效
- Delphi下URL汉字编码解码的两个函数
- Delphi下重载窗体CreateParams翻转关闭按钮
- Delphi下创建异形窗体
- Delphi调用安装驱动sys的单元
- Delphi获取系统服务描述信息
- Delphi利用Webbrowser登陆QQ群文档
- Delphi在Webbrowser上绘制图像
- 内存共享【Delphi版】
- Delphi十进制和十六进制互转
- Delphi Help
- Delphi反汇编内部字符串处理函数不完全列表
- delphi 数据连接规范
- Delphi New,Getmem,ReallocMem联系与区别
- 去掉delphi XE8或者更高版本编辑器自带的begin end之间的线条
- RAD Studio, Delphi, C++Builder限时年终优惠活动
- Delphi中使用Office中VBA的优缺点