1. 程式人生 > >獲取"我的文件“路徑

獲取"我的文件“路徑

方法一:來自網路;

CString getMyDoc()		// 獲取“我的文件”路徑
{
	TCHAR m_lpszDefaultDir[MAX_PATH] = {0};
	TCHAR szDocument[MAX_PATH] = {0};
	memset(m_lpszDefaultDir, 0, _MAX_PATH);
	LPITEMIDLIST pidl = NULL;
	SHGetSpecialFolderLocation(NULL, CSIDL_PERSONAL, &pidl);
	if (pidl && SHGetPathFromIDList(pidl, szDocument))
	{
		GetShortPathName(szDocument, m_lpszDefaultDir, _MAX_PATH);
	}

	return CString(szDocument);
}

方法二:

函式SHGetSpecialFolderLocation():

#include "shlobj.h" //包含標頭檔案
WINSHELLAPI HRESULT WINAPI SHGetSpecialFolderLocation (HWND hwndOwner, int nFolder,LPITEMIDLIST * ppidl); //函式宣告

hwndOwner: 指定了"所有者視窗",在呼叫這個函式是可能出現的對話方塊或資訊框.

nFolder: 是一個整數id,決定哪個目錄是待查詢目錄,它的取值可能是
CSIDL_BITBUCKET                    回收站
CSIDL_CONTROLS                    控制面板
CSIDL_DESKTOP                      

Windows桌面desktop;
CSIDL_DESKTOPDIRECTORY   desktop的目錄;

CSIDL_DRIVES                            我的電腦
CSIDL_FONTS                             字型目錄
CSIDL_NETHOOD                       網路上的芳鄰
CSIDL_NETWORK                       網路上的芳鄰virtual folder
CSIDL_PERSONAL                      我的文件
CSIDL_PRINTERS                        印表機

CSIDL_PROGRAMS                    程式組
CSIDL_RECENT                          最近開啟文件
CSIDL_SENDTO                          傳送到選單項

CSIDL_STARTMENU                    快啟選單

CSIDL_STARTUP                         啟動目錄

CSIDL_TEMPLATES                     臨時文件
ppidl: pidl地址. SHGetSpecialFolderLocation把地址寫到pidl.

示例程式碼VC++ 6.0測試通過):
LPITEMIDLIST pidl;
LPMALLOC pShellMalloc;
char szDir[200];

if(SUCCEEDED(SHGetMalloc(&pShellMalloc)))
{
if(SUCCEEDED(SHGetSpecialFolderLocation(NULL,CSIDL_DESKTOP,&pidl))) {
// 如果成功返回true
SHGetPathFromIDList(pidl, szDir);
pShellMalloc->Free(pidl);
}
pShellMalloc->Release();
}
::MessageBox (NULL,szDir,"Path",MB_OK);

VC獲取指定資料夾路徑

flyfish  2010-3-5

一 使用Shell函式


1 獲取應用程式的安裝路徑

TCHAR buf[_MAX_PATH];
SHGetSpecialFolderPath(NULL,buf,CSIDL_PROGRAM_FILES,NULL);
AfxMessageBox(buf);


2 獲取應用程式資料路徑的資料夾

 TCHAR bufApplicateData[_MAX_PATH];

SHGetSpecialFolderPath(NULL,bufApplicateData,CSIDL_APPDATA,NULL);
AfxMessageBox(bufApplicateData);

3 獲取系統資料夾

 TCHAR buf[_MAX_PATH];

SHGetSpecialFolderPath(NULL,buf,CSIDL_SYSTEM,NULL);
AfxMessageBox(buf);

4 獲取Windows目錄

 TCHAR buf[_MAX_PATH];

SHGetSpecialFolderPath(NULL,buf,CSIDL_WINDOWS,NULL);
AfxMessageBox(buf);

5 獲取其他指定資料夾

 主要使用SHGetSpecialFolderPath函式

函式原型:BOOL SHGetSpecialFolderPath(HWND hwndOwner,LPTSTR lpszPath,int nFolder, BOOL fCreate);
引數nFolder指明獲取什麼樣的資料夾。如下參考
MSDN可以搜尋關鍵字:CSIDL
MSDN URL:ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.WIN32COM.v10.en/shellcc/platform/shell/reference/enums/csidl.htm


二 使用其他API函式

 1 獲取系統資料夾

TCHAR  buf[_MAX_PATH];
GetSystemDirectory( buf, _MAX_PATH );
AfxMessageBox(buf);

2 獲取Windows目錄

TCHAR  buf[_MAX_PATH];
GetWindowsDirectory( buf, _MAX_PATH );
AfxMessageBox(buf);

以上程式在VC2005中除錯通過。


相關推薦

獲取Android路徑

activity lca nal oid agen 位置 ext adc ger Environment.getDataDirectory().getPath() : /dataEnvironment.getDownloadCacheDirectory().getPath(

學習日記19、獲取某個路徑下所有的信息

視圖 app avi sele () oar bst cto 獲取文件信息 public JsonResult GetView(string suoshu) { string url = ""; Dictionary

windows程序設計 獲取系統路徑

ret 創建 存儲 windows directory 打印 div word 獲取 獲取系統文件路徑,打印到txt文件中。 #include <windows.h> int WINAPI WinMain( HINSTANCE hInstance,

c++獲取Windows“路徑

https://stackoverflow.com/questions/2414828/get-path-to-my-documents #include <windows.h> #include <iostream> #include <shlobj.h&

獲取"路徑

方法一:來自網路; CString getMyDoc() // 獲取“我的文件”路徑 { TCHAR m_lpszDefaultDir[MAX_PATH] = {0}; TCHAR szDocument[MAX_PATH] = {0}; memset(m_lp

java獲取桌面,路徑

javax.swing.filechooser.FileSystemView fsv = javax.swing.filechooser.FileSystemView.getFileSystemView(); fsv.getHomeDirectory();     //這便

C#根據字體名通過註冊表獲取該字體路徑(win10)

cat mic 約束 lec 運行 window mac war 控件 方法一: 直接先上源碼: private System.Collections.Generic.SortedDictionary<string, string> ReadF

Java獲取配置路徑

[] sha import cep excel null tcl source 相對路徑 一直以為使用new File(相對路徑)可以讀取class目錄下的文件,其實不然。網上查詢了一些資料,弄清楚了原理,總結如下: package com.coshaho.learn;

c#獲取路徑

textbox dial open info 引入 tex lena fin sel 首先的引入 using System.IO; OpenFileDialog file = new OpenFileDialog(); file.ShowDialo

python獲取當前文路徑以及父路徑

image 成功 pytho python img 技術 lin lai tina #當前文件的路徑 pwd = os.getcwd() #當前文件的父路徑 father_path=os.path.abspath(os.path.dirname(pwd)+os.path.

C#使用System.IO.Path獲取路徑

filepath 目錄 tle provide volume 指示 完整路徑 nat col class Program { static void Main(string[] args) { //獲取

1.5 獲取路徑

gpo dir print file cnblogs != println AC private package main import ( "fmt" "os" "path/filepath" ) func main() { ex, e

python利用對話框獲取路徑

line \n AC lap hid path b2b pat lines 一、單文件 python3: 1 import tkinter as tk 2 from tkinter import filedialog 3 4 root = tk.Tk() 5 root

獲取pe調試符號pdb路徑

pdb一般如果編譯器設置了調試符號文件,則編譯後的PE文件中調試字段會包含該路徑,在一般的溯源分析中我們可能會註意到: 使用工具:pestudio 如下圖,將文件加載進工具後,查看debug字段,可以發現pdb路徑。註意:該路徑不一定存在。。。 獲取pe文件調試符號文件pdb路徑

C語言獲取執行(XXX.exe)名和目錄路徑

color lan .net director blank Go 執行 pause sys 同CSDN上的 https://blog.csdn.net/Higashino_Keigo/article/details/80489874 C語言獲取執行文件(XXX.exe)文件

php獲取路徑信息函數

php獲取文件路徑信息函數代碼: /* @desc:獲取路徑信息 @param path 傳入路徑,如a/b/c.jpg @return info dir:路徑,name:文件名,suffix:後綴名 */ function fileinfo($path){ $dir = dirname($path); $

Java獲取路徑的幾種方法

ews XML 獲取 mil 路徑 etc ans nbsp tin 第一種: File f = new File(this.getClass().getResource("/").getPath()); System.out.print

php路徑獲取

options info 文件 截取 後綴 文件名 col inf basename 物理截取: $file = ‘/www/htdocs/inc/lib.inc.php‘; $filename = basename($file); echo $filename, ‘

在asp.net mvc3 中,在controller中使用HttpPostedFileBase file 參數獲取上傳的路徑問題

amp nbsp 指點 不包含 index 之前 eas www .com 轉載:https://zhidao.baidu.com/question/444203596.html 在asp.net mvc3 中,在controller中使用HttpPostedFileB

獲取路徑

dea pan -s bin usr 兩種 格式 per robot 1、python獲取文件當前絕對路徑的兩種方法 方法1: import sys print(sys.argv) 得到文件當前絕對路徑字符串的一個列表 [‘D:/pycharm/PracticeProje