獲取「我的文件」路徑

2021-05-23 23:34:39 字數 2364 閱讀 6743

獲取「我的文件」路徑

很多時候「我的文件」位置經常被人移到d盤,如下是獲取「我的文件」路徑:

"stdafx.h

"<

windows.h

>

<

shlobj.h

>

"shell32.lib")

<

iostream

>

intmain(

intargc, 

char

*argv)

;   

0,_max_path);   

lpitemidlist pidl

=null;   

shgetspecialfolderlocation(null,   csidl_personal,   

&pidl);   

if(pidl   

&&shgetpathfromidlist(pidl,   szdocument))   

std::cout

<<

m_lpszdefaultdir

<<

std::endl;

printf(

"hello world!/n");

return0;

可以使用shgetspecialfolderlocation函式獲得「我的電腦」所對應的虛擬資料夾的id。然後使用shellexecuteex開啟這個虛擬資料夾。

使用api函式shgetspecialfolderlocation。shlobj.h裡有shgetspecialfolderlocation的原型宣告。這個函式可以幫我們找到windows的桌面目錄、啟動目錄、我的文件目錄等。

shgetspecialfolder需要三個引數。 第乙個引數是hwnd,它指定了"所有者視窗":在呼叫這個函式時可能出現的對話方塊或訊息框。第二個引數是乙個整數id,決定哪個目錄是待查詢目錄,它的取值可能是:

csidl_bitbucket

**站csidl_controls

控制面板

csidl_desktop

windows 桌面desktop

csidl_desktopdirectory

desktop的目錄

csidl_drives

我的電腦

csidl_fonts

字型目錄

csidl_nethood

網路上的芳鄰

csidl_network

網路上的芳鄰虛擬目錄

csidl_personal

我的文件

csidl_printers

印表機csidl_programs

程式組csidl_recent

最近開啟的文件

csidl_sendto

「傳送到」選單項

csidl_startmenu

任務條啟動選單項

csidl_startup

啟動目錄

csidl_templates

文件模板

這裡只是最常用的部分。完整的請參考http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/enums/csidl.asp

。 最後乙個引數是pidl位址。shgetspecialfolderlocation把位址寫到pidl。

下面是乙個例子:

lpitemidlist pidl;

tchar szpath [max_path];

lpmalloc pmalloc;

if( succeeded( shgetspecialfolderlocation ( null, csidl_drives, &pidl )))

} 由於「我的電腦」是虛擬資料夾,所以必須使用shellexecuteex函式,如果是普通資料夾,則可以使用shgetpathfromidlist獲得檔名,然後利用shellexecute函式開啟。例如要開啟「傳送到」資料夾,可以這樣:

if( succeeded( shgetspecialfolderlocation ( null, csidl_sendto, &pidl )))

if( succeeded( shgetmalloc ( &pmalloc )))}

如果是虛擬資料夾,shgetpathfromidlist函式會失敗。

對於普通資料夾也可以使用shgetspecialfolderpath函式,而不使用shgetspecialfolderlocation函式,這樣更簡單些,但執行環境必須是windows 2000以後的作業系統或安裝了ie 4.0以上版本。

獲取系統特殊路徑如 我的文件,開始路徑等

使用api函式shgetspecialfolderlocation。shlobj.h裡有shgetspecialfolderlocation的原型宣告。這個函式可以幫我們找到windows的桌面目錄 啟動目錄 我的文件目錄等。shgetspecialfolder需要三個引數。第乙個引數是hwnd,它...

獲取maya文件以及安裝環境路徑

c users xx documents maya 2017 import osimport maya.cmds as cmds maya version cmds.about version true 4 path os.environ home maya maya version result ...

批處理 獲取當前使用者的「我的文件」

批處理指令碼可以幫我們做大量的重複性操作,如程式編譯等。有時我們需要獲取當前使用者的文件目錄,比如我們開發的program引用了第三方的控制項,但控制項被安裝在了 我的文件 這時候批處理 就需要稍加一點變化,從登錄檔獲取personal鍵值,並賦值給變數user doc,user doc就是我們要的...