Delphi獲取系統特殊路徑

2021-06-16 23:14:56 字數 4565 閱讀 6152

unit demomain;

inte***ce

uses

windows, messages, sysutils, variants, classes, graphics, controls, forms,

dialogs, shlobj, comctrls, stdctrls, registry;

type

tform1 = class(tform)

listview1: tlistview;

button1: tbutton;

edit1: tedit;

button2: tbutton;

procedure button1click(sender: tobject);

procedure button2click(sender: tobject);

private

procedure addlistitem(lcaption, lsubitem: string);

procedure addtolistview;

function getspecialfolderdir(const folderid: integer): string;

function getmydocpath: string;

public

end;

var form1: tform1;

implementation

procedure tform1.addlistitem(lcaption, lsubitem: string);

var i: tlistitem;

begin

i := listview1.items.add;

i.caption := lcaption;

i.subitems.add(lsubitem);

end;

procedure tform1.addtolistview;

begin

addlistitem('桌面', getspecialfolderdir(0));

addlistitem('所有使用者桌面', getspecialfolderdir(25));

addlistitem('開始選單程式', getspecialfolderdir(2));

addlistitem('所有使用者開始選單程式', getspecialfolderdir(23));

addlistitem('我的文件', getspecialfolderdir(5));

addlistitem('收藏夾', getspecialfolderdir(6));

addlistitem('所以使用者收藏夾', getspecialfolderdir(31));

addlistitem('啟動資料夾', getspecialfolderdir(7));

addlistitem('所有使用者啟動資料夾', getspecialfolderdir(24));

addlistitem('recent資料夾', getspecialfolderdir(8));

addlistitem('傳送到', getspecialfolderdir(9));

addlistitem('登陸使用者開始選單', getspecialfolderdir(11));

addlistitem('所有使用者開始選單', getspecialfolderdir(22));

addlistitem('網路上的芳鄰', getspecialfolderdir(19));

addlistitem('字型資料夾', getspecialfolderdir(20));

addlistitem('template資料夾', getspecialfolderdir(21));

addlistitem('所有使用者template資料夾', getspecialfolderdir(45));

addlistitem('列印資料夾', getspecialfolderdir(27));

addlistitem('當前使用者本地應用程式設定資料夾', getspecialfolderdir(28));

addlistitem('internet臨時資料夾', getspecialfolderdir(32));

addlistitem('internet快取資料夾', getspecialfolderdir(33));

addlistitem('當前使用者歷史資料夾', getspecialfolderdir(34));

addlistitem('所有使用者應用程式設定資料夾', getspecialfolderdir(35));

addlistitem('windows系統目錄', getspecialfolderdir(36));

addlistitem('程式資料夾', getspecialfolderdir(38));

addlistitem('system32系統目錄', getspecialfolderdir(37));

addlistitem('當前使用者收藏夾', getspecialfolderdir(39));

addlistitem('當前使用者資料夾', getspecialfolderdir(40));

addlistitem('公共資料夾', getspecialfolderdir(43));

addlistitem('管理工具', getspecialfolderdir(47));

addlistitem('登陸使用者管理工具', getspecialfolderdir(48));

addlistitem('所有使用者收藏夾', getspecialfolderdir(54));

addlistitem('主題資源資料夾', getspecialfolderdir(56));

addlistitem('cd burning', getspecialfolderdir(59));

end;

function tform1.getspecialfolderdir(const folderid: integer): string;

var pidl: pitemidlist;

buffer: array[0..255] of char;

begin

//取指定的資料夾專案表

shgetpathfromidlist(pidl, buffer); //轉換成檔案系統的路徑

result := strpas(buffer);

end;

procedure tform1.button1click(sender: tobject);

begin

addtolistview;

end;

function tform1.getmydocpath: string;

var reg: tregistry;

begin

reg := tregistry.create;

tryreg.rootkey := hkey_current_user;

if reg.openkey('software\microsoft\windows\currentversion\explorer\shell folders', false) then

result := reg.readstring('personal')

finally

reg.closekey;

reg.free;

end;

end;

procedure tform1.button2click(sender: tobject);

begin

edit1.text := getmydocpath;

end;

end.

winapi: gettemppath - 獲取臨時資料夾路徑

//宣告:

gettemppath(

nbufferlength: dword;

lpbuffer: pchar

): dword;

//舉例:

var arr: array[0..max_path] of char;

num: dword;

temppath, tempfilename: string;

begin

num := gettemppath(max_path, arr);

showmessage(arr);

showmessage(inttostr(num));

temppath := arr;

showmessage(temppath); //臨時檔案路徑

setlength(tempfilename, max_path);

gettempfilename(pchar(temppath), 'exr', 0, pchar(tempfilename)); //獲取臨時檔名

setlength(tempfilename, strlen(pchar(tempfilename)));

showmessage(tempfilename); //臨時檔名

end;

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

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

Delphi 獲取當前程式路徑

在delphi sysutils 單元中 edit1.text paramstr 0 自己全路徑c 555 qq.exe,可用於控制台 edit2.text extractfiledir paramstr 0 獲取本程式的路徑 c qq expandfilename 返回檔案的全路徑 含驅動器 路徑...

Windows API 獲取系統路徑

但是這樣每次開發效率就比較低,所以還是整理下吧,加深下印象,至少後面可以在自己部落格裡就能輕鬆的找到了吧。直接上 吧。include stdafx.h include include include include define make pair id std pair id,t id void ...