zoukankan      html  css  js  c++  java
  • Windows API 第二篇 SHGetSpecialFolderPath

    BOOL SHGetSpecialFolderPath( HWND hwndOwner,
                                     LPTSTR lpszPath,
                                     int nFolder,
                                     BOOL fCreate );

    参数解释:

    hwndOwnerHandle to the owner window the client should specify if it displays a dialog box or message box.

    lpszPathPointer to a null-terminated string that receives the drive and path of the specified folder. This buffer must be at least MAX_PATH characters in size

    nFolder:A CSIDL that identifies the folder of interest. If a virtual folder is specified, this function will fail.

    fCreate:Indicates if the folder should be created if it does not already exist. If this value is nonzero, the folder will be created. If this value is zero, the folder will not be created.

    一个简单的test
    建立控制台程序:

    #include "stdafx.h"
    #include <Windows.h>
    #include <string>
    #include <Shlobj.h>
    
    using namespace std;;
    
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        WCHAR szPath[MAX_PATH + 1] = { 0 };
        wstring strMsgW;
    
        BOOL bRet;
        //严格一点,每个返回值要判断
        bRet = SHGetSpecialFolderPath(NULL, szPath, CSIDL_PROGRAM_FILES, FALSE);
        strMsgW.append(L"CSIDL_PROGRAM_FILES: ");
        strMsgW.append(szPath);
        strMsgW.append(L"
    ");
    
        bRet = SHGetSpecialFolderPath(NULL, szPath, CSIDL_PROGRAM_FILES_COMMON, FALSE);
        strMsgW.append(L"CSIDL_PROGRAM_FILES_COMMON: ");
        strMsgW.append(szPath);
        strMsgW.append(L"
    ");
    
        bRet = SHGetSpecialFolderPath(NULL, szPath, CSIDL_SYSTEM, FALSE);
        strMsgW.append(L"CSIDL_SYSTEM: ");
        strMsgW.append(szPath);
        strMsgW.append(L"
    ");
    
        bRet = SHGetSpecialFolderPath(NULL, szPath, CSIDL_STARTUP , FALSE);
        strMsgW.append(L"CSIDL_STARTUP: ");
        strMsgW.append(szPath);
        strMsgW.append(L"
    ");
    
        bRet = SHGetSpecialFolderPath(NULL, szPath, CSIDL_APPDATA , FALSE);
        strMsgW.append(L"CSIDL_APPDATA: ");
        strMsgW.append(szPath);
        strMsgW.append(L"
    ");
    
        MessageBox(NULL, strMsgW.c_str(), L"SHGetSpecialFolderPath Test", MB_OK);
    
        return 0;
    }
    
    运行结果:
    
    Windows API 第二篇  SHGetSpecialFolderPath - grown-up - work labor and play
  • 相关阅读:
    HTTP、HTTP2
    1-1 用本地代码调试线上环境代码
    js判断触摸方向
    1-1 node 基础
    1-2 nodejs小节 文件读取
    c++ 递归斐波那契算法及时间复杂度
    十进制转换成二进制以 二进制转换成 8进制和16进制
    centos6.5 安装cmake 3.3.2
    回文字符串
    -Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable
  • 原文地址:https://www.cnblogs.com/priarieNew/p/9753922.html
Copyright © 2011-2022 走看看