Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.03.2012, 01:59   #1
crymchanin
Пользователь
 
Аватар для crymchanin
 
Регистрация: 01.02.2012
Сообщений: 84
Вопрос Получить системное описание файлов

Подскажите пожалуйста какие есть функции (например WINAPI) с помощью которых можно получить описание типа файла (т.е. описание которое дает программа с которой файл ассоциирован в системе, например *.txt - текстовый документ, и т.д.). Заранее спасибо.
crymchanin вне форума Ответить с цитированием
Старый 06.03.2012, 13:05   #2
crymchanin
Пользователь
 
Аватар для crymchanin
 
Регистрация: 01.02.2012
Сообщений: 84
По умолчанию

Нашел один способ - данные из реестра. Но вот только строка с описанием типа файла на английском языке. И почему-то не удается получить описание *.xml файла ( запись в реестре есть), получаю пустую строку. Вот часть кода:

Код:
CString type = PathFindExtension(m_File);
HKEY rKey;

if (type == "")
	type = "File";
else
{
	if(RegOpenKeyEx(HKEY_CLASSES_ROOT, type, 0, KEY_QUERY_VALUE, &rKey) == ERROR_SUCCESS)
	{
		HKEY fKey;
		DWORD pcbData = 255;
		char* pvData = new char[pcbData];

		RegQueryValueEx(rKey, "", NULL, NULL, (LPBYTE)pvData, &pcbData);
		if(RegOpenKeyEx(HKEY_CLASSES_ROOT, pvData, 0, KEY_QUERY_VALUE, &fKey) == ERROR_SUCCESS)
		{
			memset(pvData, 0, pcbData);
			RegQueryValueEx(fKey, "", NULL, NULL, (LPBYTE)pvData, &pcbData);
			type = pvData;
		}
		else
			type = "";
		RegCloseKey(fKey);
		delete[] pvData;
	}
	else
		type = PathFindExtension(m_File);
	RegCloseKey(rKey);
}
m_ListCtrl->SetItemText(nNum, 1, type);
crymchanin вне форума Ответить с цитированием
Старый 07.03.2012, 14:38   #3
crymchanin
Пользователь
 
Аватар для crymchanin
 
Регистрация: 01.02.2012
Сообщений: 84
По умолчанию

Как я понял что-то не так с функцией RegQueryValueEx. Ветку HKEY_CLASSES_ROOT\.xml читает нормально, а вот HKEY_CLASSES_ROOT\xmlfile не хочет. Вот данные реестра:

Код:
[HKEY_CLASSES_ROOT\.xml]
@="xmlfile"
"Content Type"="text/xml"
"PerceivedType"="text"

[HKEY_CLASSES_ROOT\.xml\OpenWithList]

[HKEY_CLASSES_ROOT\.xml\OpenWithList\vsta.exe]
@=""

[HKEY_CLASSES_ROOT\.xml\OpenWithList\winword.exe]
@=""

[HKEY_CLASSES_ROOT\.xml\OpenWithProgids]
"InfoPath.Document.3"=""
"VSTA.xml.8.0"=""
"VisualStudio.xml.10.0"=""

[HKEY_CLASSES_ROOT\.xml\PersistentHandler]
@="{7E9D8D44-6926-426F-AA2B-217A819A5CCE}"
Код:
[HKEY_CLASSES_ROOT\xmlfile]
@="XML Document"
"EditFlags"=hex:00,00,00,00
"FriendlyTypeName"=hex(2):40,00,25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,\
  00,6f,00,6f,00,74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,\
  32,00,5c,00,6d,00,73,00,78,00,6d,00,6c,00,33,00,72,00,2e,00,64,00,6c,00,6c,\
  00,2c,00,2d,00,31,00,00,00

[HKEY_CLASSES_ROOT\xmlfile\BrowseInPlace]

[HKEY_CLASSES_ROOT\xmlfile\CLSID]
@="{48123BC4-99D9-11D1-A6B3-00C04FD91555}"

[HKEY_CLASSES_ROOT\xmlfile\DefaultIcon]
@="\"%1\""

[HKEY_CLASSES_ROOT\xmlfile\shell]
@="open"

[HKEY_CLASSES_ROOT\xmlfile\shell\edit]

[HKEY_CLASSES_ROOT\xmlfile\shell\edit\command]
@="\"C:\\Program Files\\Common Files\\Microsoft Shared\\OFFICE14\\MSOXMLED.EXE\" /verb edit \"%1\""

[HKEY_CLASSES_ROOT\xmlfile\shell\open]

[HKEY_CLASSES_ROOT\xmlfile\shell\open\command]
@="\"C:\\Program Files\\Common Files\\Microsoft Shared\\OFFICE14\\MSOXMLED.EXE\" /verb open \"%1\""

[HKEY_CLASSES_ROOT\xmlfile\ShellEx]

[HKEY_CLASSES_ROOT\xmlfile\ShellEx\IconHandler]
@="{AB968F1E-E20B-403A-9EB8-72EB0EB6797E}"
Ответ кто нибудь даст мне?
crymchanin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль.Описание лабораторной работы. Помиогите сделать описание проги .какая формула что делает. Elimay25 Паскаль, Turbo Pascal, PascalABC.NET 1 01.03.2012 16:34
как получить системное время в формате 03:32:00 а не 3:32:00 betirsolt Общие вопросы Delphi 2 18.04.2010 02:18
Получить список имен файлов на сайте syserg Работа с сетью в Delphi 8 28.03.2010 14:01
Получить список всех файлов и папок FTP Nester Работа с сетью в Delphi 4 28.04.2009 12:57
Получить список файлов и папок. gusluk Общие вопросы Delphi 3 10.03.2009 12:49