C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 20 - Узнаем специальные папки Windows / Win 32 API / Win32 API

Шаг 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
);

| |
Автор Каев Артем.
[AD]