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

  • 相关阅读:
    CentOS7.4安装和配置Zabbix4.0
    CentOS7.4安装jdk1.8.0_201、Tomcat-8.5.38环境
    基于腾讯云CentOS7.4+MySQL5.7+Python3+uWSGI+Nginx的Django项目部署
    Windows Server 2008 R2环境下Apache2.4+Tomcat8配置
    Django2.1.5使用xadmin打造适合国人的后台管理系统
    Django2.1.3 smtp 邮件 553报警
    GitHub的Windows客户端的使用教程
    Ubuntu18.04的网络配置(静态IP和动态IP)
    CentOS6.X、7.X下Jenkins的安装及使用
    CentOS7下搭建Nginx+PHP7的安装配置
  • 原文地址:https://www.cnblogs.com/fangkm/p/1432245.html
Copyright © 2011-2022 走看看