フォルダのサムネイル表示を有効

(2004.03.25)
    // サムネイルの表示を有効にする
    static HRESULT EnableThumbShellView(LPCTSTR szDirectoryName)
    {
        OSVERSIONINFO version;
        memset(&version, 0, sizeof(version));
        version.dwOSVersionInfoSize = sizeof(version);
        ::GetVersionEx(&version);
        if(version.dwPlatformId == VER_PLATFORM_WIN32_NT)
        {
            if((version.dwMajorVersion >= 5) && (version.dwMinorVersion >= 1))
            {
                // WinXP or Lator
                return S_OK;
            }
        }
 
        CString strDesktopIni = GetProfileFileName(szDirectoryName);
 
        // [.ShellClassInfo]
        // ConfirmFileOp=0
        ::WritePrivateProfileString(_T(".ShellClassInfo"), _T("ConfirmFileOp"), _T("0"), strDesktopIni);
 
        CString strClsID = _T("{8BEBB290-52D0-11d0-B7F4-00C04FD706EC}");
 
        // [ExtShellFolderViews]
        // Default={8BEBB290-52D0-11d0-B7F4-00C04FD706EC}
        ::WritePrivateProfileString(_T("ExtShellFolderViews"), _T("Default"), strClsID, strDesktopIni);
        // {8BEBB290-52D0-11d0-B7F4-00C04FD706EC}={8BEBB290-52D0-11d0-B7F4-00C04FD706EC}
        ::WritePrivateProfileString(_T("ExtShellFolderViews"), strClsID, strClsID, strDesktopIni);
 
        // [{8BEBB290-52D0-11d0-B7F4-00C04FD706EC}]
        // MenuName=縮小版(&H)
        ::WritePrivateProfileString(strClsID, _T("MenuName"), _T("縮小版(&H)"), strDesktopIni);
        // ToolTipText=縮小版(&H)
        ::WritePrivateProfileString(strClsID, _T("ToolTipText"), _T("縮小版(&H)"), strDesktopIni);
        // HelpText=縮小表示で項目を表示します
        ::WritePrivateProfileString(strClsID, _T("HelpText"), _T("縮小表示で項目を表示します"), strDesktopIni);
        // Attributes=0x60000000
        ::WritePrivateProfileString(strClsID, _T("Attributes"), _T("0x60000000"), strDesktopIni);
 
        // 隠しファイルにする
        ::SetFileAttributes(strDesktopIni, FILE_ATTRIBUTE_HIDDEN);
        // フォルダのシェル拡張を有効にする
        ::PathMakeSystemFolder(szDirectoryName);    // SHLWAPI 4.71
 
        return S_OK;
    }
 
    static CString GetProfileFileName(LPCTSTR szDirectoryName)
    {
        CString strDirectoryName = /*CShlwapiHelper::*/PathAddBackslash(szDirectoryName);    // SHLWAPI 4.71
        CString strDesktopIni = strDirectoryName + _T("Desktop.ini");
 
        return strDesktopIni;
    }
 
    // バックスラッシュを付加する
    //  → CShlwapiHlperよりコピー
    static CString PathAddBackslash(CString strPath)
    {
        TCHAR szPath[_MAX_PATH];
        _tcscpy(szPath, strPath);
 
        ::PathAddBackslash(szPath);    // SHLWAPI 4.71
 
        return szPath;
    }
一覧に戻る
© 2003 WAC.com All Right Reserved.