c# 更新桌面使用接口

更新桌面使用接口:IActiveDesktop
Com接口不能直接在.net中使用,所以需要在.net中重新定义,接口中使用的 , 结构也需要重新定义从网上找到这样一个类
引用地址:http:
// www.dotnet247.com/247reference/msgs/41/205722.aspx
using  System;
using  System.Runtime.InteropServices;

namespace  WallPaper
{
enum  WPSTYLE
{
    CENTER 
=   0 ,
    TILE 
=   1 ,
    STRETCH 
=   2 ,
    MAX 
=   3
}

struct  WALLPAPEROPT
{
    
public   int  dwSize;
    
public  WPSTYLE dwStyle;
}

struct  COMPONENTSOPT
{
    
public   int  dwSize;
    [MarshalAs(UnmanagedType.Bool)]
    
public   bool  fEnableComponents;
    [MarshalAs(UnmanagedType.Bool)]
    
public   bool  fActiveDesktop;
}

struct  COMPPOS
{
    
public   const   int  COMPONENT_TOP  =   0x3FFFFFFF ;
    
public   const   int  COMPONENT_DEFAULT_LEFT  =   0xFFFF ;
    
public   const   int  COMPONENT_DEFAULT_TOP  =   0xFFFF ;

    
public   int  dwSize;
    
public   int  iLeft;
    
public   int  iTop;
    
public   int  dwWidth;
    
public   int  dwHeight;
    
public   int  izIndex;
    [MarshalAs(UnmanagedType.Bool)]
    
public   bool  fCanResize;
    [MarshalAs(UnmanagedType.Bool)]
    
public   bool  fCanResizeX;
    [MarshalAs(UnmanagedType.Bool)]
    
public   bool  fCanResizeY;
    
public   int  iPreferredLeftPercent;
    
public   int  iPreferredTopPercent;
}

[Flags]
enum  ITEMSTATE
{
    NORMAL 
=   0x00000001 ,
    FULLSCREEN 
=   00000002 ,
    SPLIT 
=   0x00000004 ,
    VALIDSIZESTATEBITS 
=  NORMAL  |  SPLIT  |  FULLSCREEN,
    VALIDSTATEBITS 
=  NORMAL  |  SPLIT  |  FULLSCREEN  |   unchecked (( int ) 0x80000000 |   0x40000000
}

struct  COMPSTATEINFO
{
    
public   int  dwSize;
    
public   int  iLeft;
    
public   int  iTop;
    
public   int  dwWidth;
    
public   int  dwHeight;
    
public   int  dwItemState;
}

enum  COMP_TYPE
{
    HTMLDOC 
=   0 ,
    PICTURE 
=   1 ,
    WEBSITE 
=   2 ,
    CONTROL 
=   3 ,
    CFHTML 
=   4 ,
    MAX 
=   4
}

[StructLayout(LayoutKind.Sequential, CharSet 
=  CharSet.Unicode)]
struct  COMPONENT
{
    
private   const   int  INTERNET_MAX_URL_LENGTH  =   2084 ;    //    =   
    
//  INTERNET_MAX_SCHEME_LENGTH   (32)   +   ": // \0".Length   +   
    
//  INTERNET_MAX_PATH_LENGTH   (2048)   

    
public   int  dwSize;
    
public   int  dwID;
    
public  COMP_TYPE iComponentType;
    [MarshalAs(UnmanagedType.Bool)]
    
public   bool  fChecked;
    [MarshalAs(UnmanagedType.Bool)]
    
public   bool  fDirty;
    [MarshalAs(UnmanagedType.Bool)]
    
public   bool  fNoScroll;
    
public  COMPPOS cpPos;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst 
=   260 )]
    
public   string  wszFriendlyName;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst 
=  INTERNET_MAX_URL_LENGTH)]
    
public   string  wszSource;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst 
=  INTERNET_MAX_URL_LENGTH)]
    
public   string  wszSubscribedURL;

    
#if    AD_IE5   
      
public     int    dwCurItemState;   
      
public    COMPSTATEINFO   csiOriginal;   
      
public    COMPSTATEINFO   csiRestored;   
    
#endif
}

enum  DTI_ADTIWUI
{
    DTI_ADDUI_DEFAULT 
=   0x00000000 ,
    DTI_ADDUI_DISPSUBWIZARD 
=   0x00000001 ,
    DTI_ADDUI_POSITIONITEM 
=   0x00000002 ,
}

[Flags]
enum  AD_APPLY
{
    SAVE 
=   0x00000001 ,
    HTMLGEN 
=   0x00000002 ,
    REFRESH 
=   0x00000004 ,
    ALL 
=  SAVE  |  HTMLGEN  |  REFRESH,
    FORCE 
=   0x00000008 ,
    BUFFERED_REFRESH 
=   0x00000010 ,
    DYNAMICREFRESH 
=   0x00000020
}

[Flags]
enum  COMP_ELEM
{
    TYPE 
=   0x00000001 ,
    CHECKED 
=   0x00000002 ,
    DIRTY 
=   0x00000004 ,
    NOSCROLL 
=   0x00000008 ,
    POS_LEFT 
=   0x00000010 ,
    POS_TOP 
=   0x00000020 ,
    SIZE_WIDTH 
=   0x00000040 ,
    SIZE_HEIGHT 
=   0x00000080 ,
    POS_ZINDEX 
=   0x00000100 ,
    SOURCE 
=   0x00000200 ,
    FRIENDLYNAME 
=   0x00000400 ,
    SUBSCRIBEDURL 
=   0x00000800 ,
    ORIGINAL_CSI 
=   0x00001000 ,
    RESTORED_CSI 
=   0x00002000 ,
    CURITEMSTATE 
=   0x00004000 ,
    ALL 
=  TYPE  |  CHECKED  |  DIRTY  |  NOSCROLL  |  POS_LEFT  |  SIZE_WIDTH  |
        SIZE_HEIGHT 
|  POS_ZINDEX  |  SOURCE  |
        FRIENDLYNAME 
|  POS_TOP  |  SUBSCRIBEDURL  |  ORIGINAL_CSI  |
        RESTORED_CSI 
|  CURITEMSTATE
}

[Flags]
enum  ADDURL
{
    SILENT 
=   0x0001
}

[
    ComImport(),
    Guid(
" F490EB00-1240-11D1-9888-006097DEACF9 " ),
    InterfaceType(ComInterfaceType.InterfaceIsIUnknown)
]
interface  IActiveDesktop
{
    
void  ApplyChanges(AD_APPLY dwFlags);
    
void  GetWallpaper([MarshalAs(UnmanagedType.LPWStr)] System.Text.StringBuilder pwszWallpaper,  int  cchWallpaper,  int  dwReserved);
    
void  SetWallpaper([MarshalAs(UnmanagedType.LPWStr)]    string  pwszWallpaper,  int  dwReserved);
    
void  GetWallpaperOptions( ref    WALLPAPEROPT pwpo,  int  dwReserved);
    
void  SetWallpaperOptions([In]    ref    WALLPAPEROPT pwpo,  int  dwReserved);
    
void  GetPattern([MarshalAs(UnmanagedType.LPWStr)] System.Text.StringBuilder pwszPattern,  int  cchPattern,  int  dwReserved);
    
void  SetPattern([MarshalAs(UnmanagedType.LPWStr)]    string  pwszPattern,  int  dwReserved);
    
void  GetDesktopItemOptions( ref    COMPONENTSOPT pco,  int  dwReserved);
    
void  SetDesktopItemOptions([In]    ref    COMPONENTSOPT pco,  int  dwReserved);
    
void  AddDesktopItem([In]    ref    COMPONENT pcomp,  int  dwReserved);
    
void  AddDesktopItemWithUI(IntPtr hwnd, [In]    ref    COMPONENT pcomp, DTI_ADTIWUI dwFlags);
    
void  ModifyDesktopItem([In]    ref    COMPONENT pcomp, COMP_ELEM dwFlags);
    
void  RemoveDesktopItem([In]    ref    COMPONENT pcomp,  int  dwReserved);
    
void  GetDesktopItemCount( out     int  lpiCount,  int  dwReserved);
    
void  GetDesktopItem( int  nComponent,  ref    COMPONENT pcomp,  int  dwReserved);
    
void  GetDesktopItemByID(IntPtr dwID,  ref    COMPONENT pcomp,  int  dwReserved);
    
void  GenerateDesktopItemHtml([MarshalAs(UnmanagedType.LPWStr)]  string  pwszFileName, [In]    ref    COMPONENT pcomp,  int  dwReserved);
    
void  AddUrl(IntPtr hwnd, [MarshalAs(UnmanagedType.LPWStr)]    string  pszSource, [In]    ref    COMPONENT pcomp, ADDURL dwFlags);
    
void  GetDesktopItemBySource([MarshalAs(UnmanagedType.LPWStr)]   string  pwszSource,  ref    COMPONENT pcomp,  int  dwReserved);
}

[
    ComImport(),
    Guid(
" 75048700-EF1F-11D0-9888-006097DEACF9 " )
]
class  ActiveDesktop    /*    :   IActiveDesktop    */    { }
}

 
该类使用方法
ActiveDesktop ad 
=   new  ActiveDesktop();
IActiveDesktop iad 
=  ad  as  IActiveDesktop;
if  (iad  !=   null )
{
    iad.SetWallpaper(
" d:\\WallPaper\\飞翔.jpg " 0 );
    iad.ApplyChanges(AD_APPLY.ALL);
    System.Runtime.InteropServices.Marshal.ReleaseComObject(ad);
    ad 
=   null ;
}   

转载于:https://www.cnblogs.com/yangxiao/articles/1084011.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值