从前我也是用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

Delphi通过调用COM对象实现更改桌面壁纸的更多相关文章

  1. 【Win10应用开发】自定义桌面壁纸

    调用通用的API来设置桌面壁纸,是一件既简单又有趣的事情,结合XAML可以生成图像的特性,你甚至可以做一个应用,让用户用他所拍的照片做成一张自定义壁纸,然后作为桌面壁纸. 这个API是通用的,应用运行 ...

  2. 在Delphi中使用C++对象(两种方法,但都要改造C++提供的DLL)

    Delphi是市场上最好的RAD工具,但是现在C++占据着主导地位,有时针对一个问题很难找到Delphi或Pascal的解决方案.可是却可能找到了一个相关的C++类.本文描述几种在Delphi代码中使 ...

  3. DELPHI学习---类和对象(五篇)

    Classes and objects(类和对象) 类(或者类类型)定义了一个结构,它包括字段(也称为域).方法和属性:类的实例叫做对象:类的字段.方法和属性被称为它的部件(components)或成 ...

  4. 在Delphi中使用C++对象(转)

    源:http://blog.csdn.net/henreash/article/details/7352335 Delphi是市场上最好的RAD工具,但是现在C++占据着主导地位,有时针对一个问题很难 ...

  5. delphi dll调用问题

    dll传递string实现方法 delphi中dll传递string的实现方法: dll项目uses第一个引用sharemem单元; 调用的项目uses第一个引用sharemem单元; 调用的单元us ...

  6. Android NDK开发之Jni调用Java对象

    https://my.oschina.net/zhiweiofli/blog/114064 通过使用合适的JNI函数,你可以创建Java对象,get.set 静态(static)和 实例(instan ...

  7. Delphi动态调用Java的WebService 转

    Delphi动态调用Java的WebService —— 基于“Axis2发布WebService例子(HelloWorld)” uses ComObj; var WsObject: Variant; ...

  8. java双线程调用同一个对象+锁

    两个线程(Thread)调用同一个对象(使用Runnable接口的对象ThreadJob) 误区:下一个线程会从上一个线程结束的地方开始 正解:如 public domd implements Run ...

  9. 如何在Delphi中调用VC6.0开发的COM

    上次写了如何在VC6.0下对Delphi写的COM进行调用,原本想马上写如何在Delphi中调用VC6.0开发的COM时,由于在写事例程序中碰到了个很怪的问题,在我机子上用VC写的接口程序编译能通过. ...

随机推荐

  1. Python学习笔记(六)Python的列表生成式、生成器

    列表生成式 List Comprehensions 列表生成式是Python内置的非常简单却强大的可以用来创建list的生成式. 简单的数值范围的list可以使用一下方式生成: >>> ...

  2. 【关于360极速浏览器的xx极速模式自动切换到兼容模式】

    原理上是可以的. 1  360基于Chromium 开源浏览器内核,它本身就是一个壳子.. 2  7.0之后的极速浏览器,不支持 它官方的那个声明标记.<meta name=”renderer” ...

  3. 创建FBI树

    需求:数串由2^n个'0' '1'数串组成,对于一个数串,有01混合出现,则视为F,全0数串为B,全1数串为I. 将给定数串进行切割,如10010011可以用二叉树表示为 F(10010011) / ...

  4. 全国计算机等级考试二级教程-C语言程序设计_第5章_循环结构

    for循环结构的嵌套 外层循环每循环一次,内层循环会完整循环一次. 外层循环是竖. 内层循环是横. for, do...while, while的选择: 如果有固定次数,如阶乘! ,判断素数,用 fo ...

  5. hdu 5569 matrix(简单dp)

    Problem Description Given a matrix with n rows and m columns ( n+m ,) and you want to go to the numb ...

  6. 关于各种排列(dfs)

    代码一:数字有重复: #include <cstdio> ],arr[]={,,,}; void dfs(int v){ if(v >= n){ ;i<n;i++) print ...

  7. Android九宫格图片(9.png)的讲解与制作

    刚开始学习Android的时候,会见到res/drawable的几个文件里面有*.9.png格式命名的图片文件.起初以为这只是Android素材的一些特殊命名,其实不是.它是能实现图片素材拉伸.收缩不 ...

  8. C++ 顶层 const

    我的主力博客:半亩方塘 本文的主要參考来源来自于:C++ Primer 中文版(第 5 版) 第 57 面至第 58 面 1. 顶层 const 与底层 const 概念 我们知道,指针本身是一个对象 ...

  9. jps无法获取到tomcat(java)进程

    一.问题描述: Ubuntu 10.10版本,同个JDK 1.6版本,启动tomcat后,使用jps无法获取本机Java进程. 二.jps工作原理: 1. java进程启动时,若没有指定 -Djava ...

  10. 3D转换

    CSS3 允许您使用 3D 转换来对元素进行格式化. 在本章中,您将学到其中的一些 3D 转换方法: 1. rotateX() 2. rotateY() <!DOCTYPE HTML>&l ...