| Форум| Гостевая| Ссылки| Программы| Исходные тексты| Наши партнеры.|
   
| Главная| Рассылки| Услуги| Библиотека| Новости| Авторам| Программистам| Студентам|
delphi c++ assembler
 

Шаг 20 - Узнаем специальные папки Windows.

У Windows'а целая куча специальных папок. Ну, например, папка под принтеры или папка под рабочий стол. Конечно можно зайти в каталог Windows и посмотреть где и что. Только во всех этих рассуждениях есть одно слабое место. Вы не можете заранее предполагать где эти папки находятся и как называются. Если не верите, то почитайте Windows 95 Resource там есть такое понятие как системная политика, которая реализуется с помощью программы PolEdit, которая позволяет устанавливать эти папки самому под конкретного пользователя. Раз дела обстоят так плохо, то должен быть механизм определения этих папок. И он есть. Можно воспользоваться функцией SHGetSpecialFolderLocation, которая и даст Вам возможность узнать их. Смотрим пример.
#include "stdafx.h"
#include "Shlobj.h"
#include "iostream.h"


void main()
{
	LPITEMIDLIST pidl; 
	char buffer[256];

	SHGetSpecialFolderLocation(NULL,CSIDL_RECENT  ,&pidl);
	if (pidl==NULL)
	{
		cout << "Error" << endl;
		return;
	}
	SHGetPathFromIDList(pidl,buffer);
	cout << buffer << endl;
}
В функцию SHGetSpecialFolderLocation передается константа, которая характеризует имя какой папки нужно получить и возвращает указатель на данные (pidl), на основе которого используя функцию SHGetPathFromIDList можно получить само имя. Вот описания функций.
WINSHELLAPI HRESULT WINAPI SHGetSpecialFolderLocation
(
    HWND hwndOwner,
    int nFolder,
    LPITEMIDLIST *ppidl
);	

WINSHELLAPI BOOL WINAPI SHGetPathFromIDList
(
    LPCITEMIDLIST pidl,
    LPSTR pszPath
);

Предыдущий Шаг | Следующий Шаг | Оглавление

By Artem.
Используются технологии uCoz
 

Rambler's Top100 Rambler's Top100

©  Adept Design Studio

Используются технологии uCoz