zoukankan      html  css  js  c++  java
  • 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;

    http://www.lsworks.net/article/29.html

  • 相关阅读:
    树型表的设计 上海
    FTP通讯封装 上海
    线程淡写 上海
    TCP通讯故障 上海
    设计模式引导 上海
    初试Delegate 上海
    c# 扫描端口 上海
    攻读计算机研究生的看法(转载) 上海
    挖掘表字段中的汉字 上海
    新生活运动 上海
  • 原文地址:https://www.cnblogs.com/findumars/p/4999035.html
Copyright © 2011-2022 走看看