• 打开文件夹,并选中文件


    #ifndef    ExploreFileH
    #define ExploreFileH
     
    #include <Windows.h>
    #include <Shlobj.h>




    #ifdef UNICODE
    #define ExploreFile ExploreFileW
    #elif _UNICODE
    #define ExploreFile ExploreFileW
    #else
    #define ExploreFile ExploreFileA
    #endif




    BOOL
    ExploreFileA (const char* pszFile)
    {
    wchar_t wszFile [MAX_PATH + 1] = {0};
    if (!MultiByteToWideChar(
    CP_ACP,
    MB_PRECOMPOSED,
    pszFile,
    -1,
    wszFile,
    MAX_PATH))
    {
    return FALSE;
    }

    return ExploreFileW (wszFile);
    }




    BOOL
    ExploreFileW (const wchar_t* pwszFile)
    {
    LPITEMIDLIST pidl;
    LPCITEMIDLIST cpidl, cpidl2;
    IShellFolder* pDesktopFolder;

    ULONG ulEaten;
    DWORD dwAttributes;
    HRESULT hr;

    if (pwszFile == NULL) {
    return FALSE;
    }

    ulEaten = wcslen (pwszFile);

    if (FAILED (SHGetDesktopFolder (&pDesktopFolder))) {
    return FALSE;
    }

    hr = pDesktopFolder->ParseDisplayName (
    NULL,
    0,
    (LPOLESTR)pwszFile,
    &ulEaten,
    &pidl,
    &dwAttributes);

    if (FAILED (hr)) {
    pDesktopFolder->Release ();
    return FALSE;
    }

    cpidl2 = cpidl = pidl;


    CoInitialize (NULL);
    if (FAILED (SHOpenFolderAndSelectItems (
    cpidl,
    0,
    &cpidl2, // 一定要弄个cpidl2,否则会有内存泄露,一次4K,木有搞懂,高手帮解答。
    NULL)))
    {
    pDesktopFolder->Release ();
    CoUninitialize ();
    return FALSE;
    }

    pDesktopFolder->Release ();
    CoUninitialize ();
    return TRUE;
    }



    #endif // ExploreFileH
  • 相关阅读:
    asp.net下的网页编辑器
    在Visual C#中访问不同数据库
    VS2008 sp1中文版下载地址
    常用封装链接数据库类
    常用封装日志类
    动态构建OrderBy的Lambda表达式
    用户管理抽象类
    存储过程导出数据库数据
    应用程序xml 配置文件抽象基类
    ini文件示例说明
  • 原文地址:https://www.cnblogs.com/lin1270/p/2267775.html
Copyright © 2020-2023  润新知