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表示初始化成功,否则您的代码将不会被右击事件调用了 

  • 相关阅读:
    附加数据库 对于 服务器“00-PC”失败
    SQL 语句转换格式函数Cast、Convert
    sql语句:union
    ISNULL-sqlserver语句
    SQL中的CASE WHEN语句
    SQL SELECT INTO 语句
    Sql语句中IN等方面的用法
    combobox的不常用的方法和将txt文本内容加到textbox中显示
    程序员:“菜鸟”和“大神”差距在哪
    过劳死离我们有多远?
  • 原文地址:https://www.cnblogs.com/fangkm/p/1432245.html
Copyright © 2011-2022 走看看