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"\r\n");bRet = SHGetSpecialFolderPath(NULL, szPath, CSIDL_PROGRAM_FILES_COMMON, FALSE);strMsgW.append(L"CSIDL_PROGRAM_FILES_COMMON: ");strMsgW.append(szPath);strMsgW.append(L"\r\n");bRet = SHGetSpecialFolderPath(NULL, szPath, CSIDL_SYSTEM, FALSE);strMsgW.append(L"CSIDL_SYSTEM: ");strMsgW.append(szPath);strMsgW.append(L"\r\n");bRet = SHGetSpecialFolderPath(NULL, szPath, CSIDL_STARTUP , FALSE);strMsgW.append(L"CSIDL_STARTUP: ");strMsgW.append(szPath);strMsgW.append(L"\r\n");bRet = SHGetSpecialFolderPath(NULL, szPath, CSIDL_APPDATA , FALSE);strMsgW.append(L"CSIDL_APPDATA: ");strMsgW.append(szPath);strMsgW.append(L"\r\n");MessageBox(NULL, strMsgW.c_str(), L"SHGetSpecialFolderPath Test", MB_OK);return 0;
}運行結果:

?

Windows API 第二篇  SHGetSpecialFolderPath - grown-up - work labor and play

?

轉載于:https://www.cnblogs.com/priarieNew/p/9753922.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/450518.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450518.shtml
英文地址,請注明出處:http://en.pswp.cn/news/450518.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

面向對象—的__new__()方法詳解

[Python] Python 之 __new__() 方法與實例化 __new__() 是在新式類中新出現的方法&#xff0c;它作用在構造方法建造實例之前&#xff0c;可以這么理解&#xff0c;在 Python 中存在于類里面的構造方法 __init__() 負責將類的實例化&#xff0c;而在 __init__() 啟動之前&#…

git使用回滾,清除暫緩區,解決沖突(持續更新)

1、git restore --staged <文件> 清除暫緩區文件名 2、git reset --hard <版本號> 回滾到上一版本 如看PHPstrom如何操作請參考https://blog.csdn.net/qq_35774849/article/details/107312658 3、解決沖突 &#xff08;1&#xff09;使用默認的解決沖突 打開…

14.安全

1.基本概念 安全問題的產生&#xff1a; 互聯網作為商業交易的工具快速發展&#xff0c;越來越多的公司提供網絡交易服務。很多商業活動在網上進行當前&#xff0c;成千上萬的網民在網上進行各種活動的同時&#xff0c;也在網上傳遞其個人信息每天在網上發生各種各樣的商業活動…

C語言enum關鍵字

很多初學者對枚舉(enum)感到迷惑&#xff0c;或者認為沒什么用&#xff0c;其實枚舉(enum)是個很有用的數據類型。一、枚舉類型的使用方法 一般的定義方式如下&#xff1a;enum enum_type_name{ENUM_CONST_1,ENUM_CONST_2,...ENUM_CONST_n} enum_variable_name;注意&#xff1a…

Dubbo 需求、架構、使用Demo

只是整理下方便自己記錄 內容全部來自官網&#xff1a;http://dubbo.io/books/dubbo-user-book/preface/usage.html 一、需求 在大規模服務化之前&#xff0c;應用可能只是通過 RMI 或 Hessian 等工具&#xff0c;簡單的暴露和引用遠程服務&#xff0c;通過配置服務的URL地址進…

Ubuntu安裝之python開發

Ubuntu安裝之python開發 什么&#xff1f;&#xff1f;Ubuntu(烏班圖)開發&#xff1f;不會用&#xff1f;&#xff1f;怎么進行python開發&#xff1f;&#xff1f;&#xff1f; 烏班圖操作系統下載地址&#xff1a;http://releases.ubuntu.com/18.04/ubuntu-18.04.1-desktop-…

vimdiff和vim-fugitive安裝,使用教程

1、vimdiff的安裝 在終端執行 git config --global merge.tool vimdiff git config --global merge.conflictstyle diff3 git config --global mergetool.prompt false git config --global diff.tool vimdiff git config --global difftool.prompt false git config --…

在 PowerPoint 2016 中嵌入網頁

之前在智圖這個網站上做了一張地圖&#xff0c;在嵌入 PPT 里面的時候碰到了一些問題&#xff0c;現在把找到的解決方法寫下來。 PPT 里面自帶的 WebBrowser 控件可以實現網頁瀏覽的功能。在“開發工具”選項卡下的“其他控件”中找到“Microsoft Web Browser”&#xff0c;在畫…

js 正則表達式 整合

正則表達式:斷言 取字符串區間: /(?<[" star "]).*(?[" end "])/// 簡單封裝 Vue.prototype.strMatch (str,star,end) > { let regs new RegExp("(?<[" star "]).*(?[" end "])"); let req str…

dubbo 注冊中心zookeeper 手冊

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 zookeeper 注冊中心 Zookeeper 是 Apacahe Hadoop 的子項目&#xff0c;是一個樹型的目錄服務&#xff0c;支持變更推送&#xff0c;適…

數組 深入詳解

再論C語言數組 C語言處理數組的方式是它廣受歡迎的原因之一。C語言對數組的處理是非常有效的&#xff0c;其原因有以下三點&#xff1a;第一&#xff0c;除少數翻譯器出于謹慎會作一些繁瑣的規定外&#xff0c;C語言的數組下標是在一個很低的層次上處理的。但這個優點也有一個反…

oracle ins-30131錯誤

打開cmd 但是在我的環境沒效果&#xff0c;而我已知臨時目錄沒有問題。那么在命令行進入安裝軟件目錄&#xff0c;通過命令行啟動安裝程序&#xff0c;設置 ignorePrereq 檢查&#xff0c;此時數據庫軟件可以啟動安裝&#xff0c;是否會出現錯誤&#xff0c;就看忽略的檢查是否…

iOS開發UI篇—簡單介紹靜態單元格的使用

一、實現效果與說明 說明&#xff1a;觀察上面的展示效果&#xff0c;可以發現整個界面是由一個tableview來展示的&#xff0c;上面的數據都是固定的&#xff0c;且幾乎不會改變。 要完成上面的效果&#xff0c;有幾種方法&#xff1a; &#xff08;1&#xff09;可以直接利用代…

展示內容

今天課上展示了軟件 評價為過于簡單 還需另尋他法轉載于:https://www.cnblogs.com/wmqlzm/p/10041683.html

dubbo ,dubbo-provider、dubbo-consumer 配置參數說明

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 dubbo:consumer 服務消費者缺省值配置。配置類&#xff1a; com.alibaba.dubbo.config.ConsumerConfig 。同時該標簽為 <dubbo:refer…

laraval使用sqlite設置從多少開始遞增

DB::statement( "UPDATE SQLITE_SEQUENCE SET seq 起始值 WHERE name 表名" ); sqlite3默認就是1。 新建了含PRIMARY KEY AUTOINCREMENT 主鍵自增表(如 test1)后&#xff0c;會自動在sqlite_sequence表插入或更新一條信息&#xff0c;其中保存了相關主鍵的最大值&…

指針深入探討

C語言變量的內存實質 一、先來理解C語言中變量的實質 要理解C指針&#xff0c;我認為一定要理解C中“變量”的存儲實質&#xff0c;所以我就從“變量”這個東西開始講起吧&#xff01;先來理解理解內存空間吧&#xff01;請看下圖&#xff1a; 如上圖所示&#xff0c;內存只不…

springboot_yml配置

server: port: 8097 session-timeout: 30 tomcat.max-threads: 0 tomcat.uri-encoding: UTF-8 spring: application: name: feedback # 數據庫配置 datasource: name: test #url: jdbc:mysql://192.168.0.180:3306/dsdb #url: jdbc:m…

Python 字符串查找子串的方法之 index() 和 find()

find(substr, beg0, endlen(string)): 在[beg, end]范圍內查找substring&#xff0c;找到返回substr的起始下標&#xff0c;否則返回 -1。 1 string Hello Python 2 print(string.find(h, 0, len(string))) # 輸出 9 3 print(string.find(thon) # 輸出 84 print(strin.find(…

sqlite 設置向下遞增

因為 sqlite是沒有floor函數的 所以用 cast(x as int) - (x < cast(x as int)) 原理 cast(1.1 as int) 1 cast(-1.1 as int) -1&#xff08;我們想要的結果為2&#xff09; 如果x為非負 cast(x as int)是可以的 但是有負的話就加上后面 (x < cast(x as int))…