Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Поиск папки "Program Files"


Автор: Gordon 2.8.2006, 20:51
Ребята, подскажите пожайлуста, как можно определить директорию где находится папка "Program Files" smile 

Автор: Damarus 2.8.2006, 21:11
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/expandenvironmentstrings.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shgetspecialfolderlocation.asp

Автор: Gordon 2.8.2006, 21:32
Damarus, не можешь пример подкинуть, пожайлуста...

Автор: 586 2.8.2006, 22:05
Код
char buff[260];
ExpandEnvironmentStrings("%ProgramFiles%", buff, 260);

Автор: Link90 3.8.2006, 09:04
А ещё путь к папке ProgramFiles можно получить из реестра! Например отсюда:
Ветвь: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion
Ключ: ProgramFilesDir

Удачи!

Автор: Gordon 3.8.2006, 10:35
Спасибо большое, ребята.

Добавлено @ 10:45 
Link90, вот так прокатит:
Код

TRegistry *Reg=new TRegistry;
Reg->RootKey=HKEY_LOCAL_MACHINE;
Reg->OpenKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion",false);
Edit1->Text=Reg->ReadString("ProgramFilesDir");
Reg->CloseKey();    
delete Reg;

Автор: Link90 3.8.2006, 12:15
Gordon, Всё верно, именно так!

Автор: Damarus 3.8.2006, 12:37
Цитата(Gordon @  2.8.2006,  22:32 Найти цитируемый пост)
Damarus, не можешь пример подкинуть, пожайлуста...

1.
Код

TCHAR szBuffer[MAX_PATH];
LPITEMIDLIST ptrItemIdList = NULL;
SHGetSpecialFolderLocation(NULL, CSIDL_PROGRAM_FILES, &ptrItemIdList);
SHGetPathFromIDList(ptrItemIdList, szBuffer);
CoTaskMemFree(ptrItemIdList);


2.
Код

TCHAR szBuffer[MAX_PATH];
SHGetSpecialFolderPath(NULL, szBuffer, CSIDL_PROGRAM_FILES, FALSE);


3.
Код

TCHAR szBuffer[MAX_PATH];
LPITEMIDLIST ptrItemIdList = NULL;
SHGetFolderLocation(NULL, CSIDL_PROGRAM_FILES, NULL, 0, &ptrItemIdList);
SHGetPathFromIDList(ptrItemIdList, szBuffer);
CoTaskMemFree(ptrItemIdList);


4.
Код

TCHAR szBuffer[MAX_PATH];
SHGetFolderPath(NULL, CSIDL_PROGRAM_FILES, NULL, 0, szBuffer);


Добавлено @ 12:41 
Цитата(Gordon @  3.8.2006,  11:35 Найти цитируемый пост)
Link90, вот так прокатит:

Цитата(Link90 @  3.8.2006,  13:15 Найти цитируемый пост)
Gordon, Всё верно, именно так!

Это называется "изобретение велосипеда" smile 

Автор: Gordon 3.8.2006, 13:03
Большое спасибо всем!!! smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)