zoukankan      html  css  js  c++  java
  • vc++基础班[24]---系统各种路径信息的获取

    vc++基础班[24]---系统各种路径信息的获取
    ------------------------------------------ Begin ----------------------------------------
     
    ①、Windows、System32、temp 等目录的获取:
    TCHAR szPath[MAX_PATH] = {0};
    GetSystemDirectory(szPath, MAX_PATH); //C:WINDOWSsystem32
    GetWindowsDirectory(szPath, MAX_PATH); //C:WINDOWS
    GetTempPath(MAX_PATH, szPath); //C:DOCUME~1SycLOCALS~1Temp
     
    ②、桌面目录、我的文档等目录的获取:
    超强目录获取函数:SHGetSpecialFolderPath,他是 shell api,具体解释见MSDN;
    //获取桌面路径:
    TCHAR szPath[MAX_PATH] = {0};
    SHGetSpecialFolderPath(m_hWnd, szPath, CSIDL_DESKTOP, FALSE);
    MessageBox(szPath);
     
    //获取我的文档路径:
    SHGetSpecialFolderPath(m_hWnd, szPath, CSIDL_PERSONAL, FALSE);
     
    其他 CSIDL 的值:
      CSIDL_FLAG_CREATE($8000)
        windows 2000:如果这个CSIDL所引用的文件夹不存在,则创建这个文件夹!.
       CSIDL_FLAG_DONT_VERIFY($4000)
        WINDOWS 2000: 无论这个CSIDL所引用的文件夹是否存在都使用它!
     
      CSIDL_ADMINTOOLS($30)
        表示当前用户的“管理工具”系统文件夹
      CSIDL_APPDATA($1A)
        表示当前用户的特定的应用程序数据存储文件夹,例如:C:Documents and SettingsusernameApplication Data
      CSIDL_BITBUCKET($A)
        表示回收站
      CSIDL_COMMON_ADMINTOOLS($2F)
        表示所有用户的“管理工具”系统文件夹
      CSIDL_COMMON_ALTSTARTUP($1D)
        表示所有用户的 (只支持WINDOWS NT 系统)
      CSIDL_COMMON_APPDATA($23)
        表示所有用户的特定的应用程序数据存储文件夹,例如:C:Documents and SettingsAll UsersApplication Data
      CSIDL_COMMON_DESKTOPDIRECTORY($19)
        表示所有用户的“桌面”文件夹,例如:C:Documents and SettingsAll UsersDesktop。
      CSIDL_COMMON_DOCUMENTS($2E)
        表示所有用户的“我的文档”文件夹,例如:C:Documents and SettingsAll UsersDocuments
      CSIDL_COMMON_FAVORITES($1F)
        表示所有用户的“我的收藏夹”文件夹。
      CSIDL_COMMON_PROGRAMS($17)
        表示所有用户的“程序”文件夹,例如:C:Documents and SettingsAll UsersStart MenuPrograms
      CSIDL_COMMON_STARTMENU($16)
        表示所有用户的“开始菜单”文件夹,例如:C:Documents and SettingsAll UsersStart Menu
      CSIDL_COMMON_STARTUP($18)
        表示所有用户的“启动”文件夹,例如:C:Documents and SettingsAll UsersStart MenuProgramsStartup
      CSIDL_COMMON_TEMPLATES($2D)
        表示所有用户的“模块”文件夹,例如:C:Documents and SettingsAll UsersTemplates
      CSIDL_CONTROLS($3)
        表示“控制面板”文件夹
      CSIDL_COOKIES($21)
        表示当前用户Internet Explorer的cookie 文件夹,例如:C:Documents and SettingsusernameCookies
      CSIDL_DESKTOP($0)
        表示“桌面”虚拟文件夹,包含了计算机中的所有内容
      CSIDL_DESKTOPDIRECTORY($10)
        表示当前用户的“桌面”文件夹,例如:C:Documents and SettingsusernameDesktop
      CSIDL_DRIVES($11)
        表示“我的电脑”虚拟文件夹,包含了计算机中所有的驱动器
      CSIDL_FAVORITES($6)
        表示当前用户的“收藏夹”文件夹,例如:C:Documents and SettingsusernameFavorites
      CSIDL_FONTS($14)
        表示“系统字体”文件夹,例如:C:WINNTFonts
      CSIDL_HISTORY($22)
        表示Inernet Explorer的“历史记录”文件夹
      CSIDL_INTERNET($1)
        表示Internet的这个虚拟文件夹
      CSIDL_INTERNET_CACHE($20)
        表示当前用户的Internet Explorer的"Cache"文件夹,例如:C:Documents and SettingsusernameTemporary Internet Files
      CSIDL_LOCAL_APPDATA($1C)
        表示当前用户的应用程序数据文件夹,例如:C:Documents and SettingsusernameLocal SettingsApplication Data
      CSIDL_MYMUSIC
        表示当前用户存储音乐文件的文件夹,例如:C:Documents and SettingsUserMy DocumentsMy Music
      CSIDL_MYPICTURES($27)
        表示当前用户存储图像文件的文件夹,例如:C:Documents and SettingsusernameMy DocumentsMy Pictures
      CSIDL_NETHOOD($13)
        表示当前用户存在的网络连接的文件夹,例如:C:Documents and SettingsusernameNetHood
      CSIDL_NETWORK($12)
        表示“网上邻居”这个虚拟文件夹
      CSIDL_PERSONAL($5)
        表示当前用户的“我的文档”文件夹,例如:C:Documents and SettingsusernameMy Documents
      CSIDL_PRINTERS($4)
        指向“打印机”这个虚拟文件夹
      CSIDL_PRINTHOOD($1B)
        表示当前用户存在的网络打印机的虚拟文件夹,例如:C:Documents and SettingsusernamePrintHood
      CSIDL_PROFILE($28)
        表示当前用用户配置文件的文件夹
      CSIDL_PROGRAM_FILES($26)
        表示程序文件的文件夹,例如:C:Program Files
      CSIDL_PROGRAM_FILES_COMMON($2B)
        表示系统程序共用组件文件夹,例如:C:Program FilesCommon
      CSIDL_PROGRAMS($2)
        表示当前用户的“程序”菜单文件夹,例如:C:Documents and SettingsusernameStart MenuPrograms
      CSIDL_RECENT($8)
        表示当前用户的“文档”菜单文件夹,例如:C:Documents and SettingsusernameStart MenuPrograms
      CSIDL_SENDTO($9)
        表示当前用户的“发送到”文件夹,例如:C:Documents and SettingsusernameSendTo
      CSIDL_STARTMENU($B)
        表示当前用户的“开始”菜单文件夹,例如:C:Documents and SettingsusernameStart Menu
      CSIDL_STARTUP($7)
        表示当前用户的“启动”菜单文件夹,例如:C:Documents and SettingsusernameStart MenuProgramsStartup
      CSIDL_SYSTEM($25)
        表示WINDOWS系统的系统文件夹,例如:C:WINNTSYSTEM32
      CSIDL_TEMPLATES($15)
        表示的是系统中存储文档模块的文件夹
      CSIDL_WINDOWS($24)
        表示的是系统中Windows目录的文件珍,例如:C:WINNT
     
    ③、应用程序当前目录的获取与设置及存在的问题讲解:
    获得当前进程的当前目录:GetCurrentDirectory
    设置当前进程的当前目录:SetCurrentDirectory
    ※※※ 注意:只是获取或者设置当前进程的当前目录,而并不是进程的镜像文件(.exe)所在的目录!
    所以,这里提醒大家,虽然在一般默认的情况下,当前exe所在目录与exe进程的当前目录相等,
    但是,最好不要使用 GetCurrentDirectory 函数来获取当前exe所在的目录,有潜在的问题,例如:
    TCHAR szPath[MAX_PATH] = {0};
    GetCurrentDirectory(MAX_PATH, szPath);
    MessageBox(szPath);
     
    CFileDialog dlg(FALSE);
    dlg.DoModal();
     
    GetCurrentDirectory(MAX_PATH, szPath);
    MessageBox(szPath);
     
    ④、可执行文件所在目录[包括EXE和DLL];
    DWORD GetCurrentFolder(DWORD nBufferLength, LPTSTR lpBuffer)
    {
     DWORD dwRet = 0;
     CString strPath;
     GetModuleFileName(AfxGetInstanceHandle(), strPath.GetBufferSetLength(MAX_PATH), MAX_PATH);
     strPath.ReleaseBuffer();
     
     int idx = strPath.ReverseFind('\');
     if (idx >= 0) {
      strPath = strPath.Left(idx);
     } else {
      return 0;
     }
     
     dwRet = strPath.GetLength();
     _tcsncpy_s(lpBuffer, nBufferLength, strPath, dwRet);
     dwRet = (nBufferLength >= dwRet) ? dwRet : nBufferLength;
     
     return dwRet;
    }
     
    ⑤、工程当前目录与Debug调试目录的不同:
    分别用 vc 启动程序和鼠标双击启动程序,观察调用 GetCurrentDirectory 函数获得结果的不同!
    所以:有的时候会提示找不到DLL之类的错误!
     
    ⑥⑦⑧⑨⑩
    系统信息的获取
        ①、当前用户名称、计算机名称的获取;
        ②、CPU、内存、硬盘信息的获取。
    ------------------------------------- End -------------------------------------------
  • 相关阅读:
    013.ES6 -对象字面量增强型写法
    012. ES6
    011. ES6 语法
    10. 9. Vue 计算属性的setter和getter 以及 计算属性的缓存讲解
    4. Spring MVC 数据响应方式
    3. SpringMVC 组件解析
    9. Vue 计算属性
    【洛谷 2984】给巧克力
    【洛谷 1821】捉迷藏 Hide and Seek
    【洛谷 1821】银牛派对Silver Cow Party
  • 原文地址:https://www.cnblogs.com/liaocheng/p/4243351.html
Copyright © 2011-2022 走看看