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


    #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
  • 相关阅读:
    《快速软件开发》学习笔记 之一
    Python+常用模块(2).md
    Python语法 (1).md
    使用mysql导入txt文件
    Python+numpy(3).md
    笔试二(程序题)
    啦啦啦 我的博客开通了
    java面试笔试
    笔试三(面试二)
    笔试三(面试)
  • 原文地址:https://www.cnblogs.com/lin1270/p/2267775.html
Copyright © 2020-2023  润新知