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

  • 相关阅读:
    [原]音视频播放笔记
    [原]很多时候, 错误源于自己
    [原]找工作之tj
    [原]昨天碰到的一个诡异问题
    [原]硬盘分区规划
    [原]编程手记2008.08.26
    [原]编程手记2008.08.28
    eclipse 某些java文件乱码
    图片垂直居中,兼容ie6
    ul里不能直接嵌套div
  • 原文地址:https://www.cnblogs.com/findumars/p/4999035.html
Copyright © 2011-2022 走看看