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 ...