zoukankan      html  css  js  c++  java
  • IShellExtInit接口

    IShellExtInit接口用于Shell初始化Shell扩展对象的初始化工作。当用户需要定制Shell的快捷菜单或者属性页时,需实现IContextMenu或IShellPropSheetExt接口的同时,
    还需实现IShellExtInit接口.Shell会自动调用该接口的Initialize方法来初始化Shell扩展对象。

    例如:实现快捷菜单时需要知道选中的文件列表,可如下实现Initialize方法

    HRESULT STDMETHODCALLTYPE Initialize( LPCITEMIDLIST pidlFolder, IDataObject *pdtobj, HKEY hkeyProgID)
    {
        
    //文件列表
        if( pdtobj != NULL ) 
        {
            STGMEDIUM stg 
    = { TYMED_HGLOBAL };
            FORMATETC etc 
    = { CF_HDROP, NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL };
            
    //从pdtobj中获取文件列表指针,它们存储在HDROP格式中
            if( SUCCEEDED( pdtobj->GetData( &etc, &stg ) ) ) 
            {
                
    //取得HDROP句柄
                HDROP hDrop = (HDROP) ::GlobalLock( stg.hGlobal );
                
    //获取该操作中被选中的文件的数目
                UINT uCount = ::DragQueryFile( hDrop, (UINT) -1, NULL, 0 );
                
    for( UINT uIndex = 0; uIndex < uCount; uIndex++ ) 
                {
                    TCHAR szFileName[MAX_PATH] 
    = { 0 };
                    
    //获取文件名
                    ::DragQueryFile(hDrop, uIndex, szFileName, (sizeof(szFileName) / sizeof(TCHAR)) - 1);
                    
                    
    //szFileName为文件(夹)名
                }
                ::GlobalUnlock( stg.hGlobal );
                ::ReleaseStgMedium( 
    &stg );
            }
        }    
        
    return S_OK;
    }

    PS:一定要返回S_OK表示初始化成功,否则您的代码将不会被右击事件调用了 

  • 相关阅读:
    webSQL 实现即时通讯
    微信开发(微信公众号)
    回顾 git 常用命令
    面向对象的 javascript
    关于HTML、js加密、混淆、源码保护、代码安全,防止解压直接看源码
    svn 的使用
    css新单位 vw , vh
    图片转成base64, base64转成图片
    EL表达式
    jsp页面获取集合的长度
  • 原文地址:https://www.cnblogs.com/fangkm/p/1432245.html
Copyright © 2011-2022 走看看