Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: [FAQ] ассоциация расширения документа (файла) с приложением  (Прочитано 3592 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« : 19-09-2010 13:22 » 

Код:
//ассоциация расширения файла с приложением
bool ExtentionAssociation(bool bCreate1_or_delete0,const char* pEXT,const char* pAppDocumentName,const char* pModulePath)
{
if(!pEXT || !*pEXT)return false;
if(!pAppDocumentName || !*pAppDocumentName)return false;
if(!pModulePath || !*pModulePath)return false;

//первый ключ
//HKEY_CLASSES_ROOT\\.ext\\
//установить значение строки "default" данного ключа в "internal name" для типа файла - например
//HKEY_CLASSES_ROOT\\.ext\\ Default = "MyApp.Document"

//второй ключ
//HKEY_CLASSES_ROOT\\MyApp.Document\\

//Создайть подключ ....\\command.
//Значение default в ключе command - это расположение и имя приложения,
//заканчивающегося на "%1", которое представляет параметр, в котором приложению
//будет передаваться имя файла данных:

//HKEY_CLASSES_ROOT\\MyApp.Document\\shell\\open\\command\\ Default = "C:\\myapp\\myapp.exe %1"


HKEY k=0;
DWORD dwdRes=0;

std::string sEXT=".";
sEXT+=pEXT;

std::string sRanParam=pAppDocumentName;
sRanParam+="\\shell\\open\\command";

std::string sRanValue=pModulePath;
sRanValue+=" %1";

if(bCreate1_or_delete0)
{
//первый ключ
//HKEY_CLASSES_ROOT\\.ext\\default = "pAppDocumentName"
dwdRes=RegCreateKeyEx(HKEY_CLASSES_ROOT,sEXT.c_str(),0,0,0,KEY_ALL_ACCESS,0,&k,0);
if(dwdRes==ERROR_SUCCESS)
{
RegSetValueEx(k,/*"default"*/0,0,REG_SZ,(BYTE*)pAppDocumentName,strlen(pAppDocumentName));
RegCloseKey(k);k=0;
}

//второй ключ
//HKEY_CLASSES_ROOT\\"pAppDocumentName"\\shell\\open\\command\\default = "pModulePath"+" %1"
dwdRes=RegCreateKeyEx(HKEY_CLASSES_ROOT,sRanParam.c_str(),0,0,0,KEY_ALL_ACCESS,0,&k,0);
if(dwdRes==ERROR_SUCCESS)
{
RegSetValueEx(k,/*"default"*/0,0,REG_SZ,(BYTE*)sRanValue.c_str(),sRanValue.size());
RegCloseKey(k);k=0;
}
}
else
{
//первый ключ
//HKEY_CLASSES_ROOT\\.ext\\default = "pAppDocumentName"
dwdRes=RegOpenKeyEx(HKEY_CLASSES_ROOT,sEXT.c_str(),0,KEY_ALL_ACCESS,&k);
if(dwdRes==ERROR_SUCCESS)
{
SHDeleteKey(k,0);//RegDeleteTree(k,0);
RegCloseKey(k);k=0;
}

//второй ключ
//HKEY_CLASSES_ROOT\\"pAppDocumentName"\\shell\\open\\command\\default = "pModulePath"+" %1"
dwdRes=RegOpenKeyEx(HKEY_CLASSES_ROOT,sRanParam.c_str(),0,KEY_ALL_ACCESS,&k);
if(dwdRes==ERROR_SUCCESS)
{
SHDeleteKey(k,0);//RegDeleteTree(k,0);
RegCloseKey(k);k=0;
}
}

return true;
}

Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines