Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

ассоциаяция приложения с протоколом

501
25 июля 2006 года
hell_admin
110 / / 02.10.2004
Доброго времени суток, надо привязать приложение к определенному протоколу, т.е.
если человек нажимает на ссылку вида:
<A HREF="someprotocol://somaddr"> или вводит адрес в окне браузера с таким протоколом то открывается мое приложение и получает ссылку в качестве параметра.
240
25 июля 2006 года
aks
2.5K / / 14.07.2006
Прописываешь такие ключи в реестр:
HKEY_CLASSES_ROOT\someprotocol - объявление такого протокола
В HKEY_CLASSES_ROOT\someprotocol добавляешь строковое значение с именем URL Protocol. Пустое. Объявляет, что это URL твоего протокола.

Там же в дефолтном параметре (с пустым именем) можно написать скажем URL:My someprotocol

Далее для запуска:
Создаешь ключ:
HKEY_CLASSES_ROOT\someprotocol\shell\open\command
И добавляешь в дефолтный параметр (опять тот что с пустым именем) чтонибудь типа X:\applicationdiretory\YourApplication.exe %1
Запустит твое приложение X:\applicationdiretory\YourApplication.exe и передаст ему ссылу перывм параметром командной строки.

Иконку:
HKEY_CLASSES_ROOT\someprotocol\DefaultIcon
В дефолтном параметре путь до иконки или приложения с иконкой.
501
26 июля 2006 года
hell_admin
110 / / 02.10.2004
Код:
спасибо вот результат мож кому пригодится:

bool SetMoniker()
{

    CString url = _T("your protocol");
    CString def = _T("URL:someproto");

    TCHAR app_path[_MAX_PATH+1]=_T("\0");
    GetModuleFileName(NULL,app_path,_MAX_PATH);

    CString icon(app_path);
    icon += _T(",0");
    CString command(app_path);
    command = _T("\"") + command + _T("\"");
    command += _T(" \"%1\"");
   
    HKEY key;
    if (ERROR_SUCCESS == RegCreateKeyEx(HKEY_CLASSES_ROOT,_T("someproto"),0,0,REG_OPTION_NON_VOLATILE,KEY_WRITE,0,&key,0))
    {
        RegSetValueEx(key,_T("URL Protocol"),0,REG_SZ,(BYTE*)url.GetString(),(DWORD)( url.GetLength()*sizeof (TCHAR)) );
        RegSetValueEx(key,NULL,0,REG_SZ,(BYTE*)def.GetString(),(DWORD)( def.GetLength()*sizeof (TCHAR)) );
        HKEY icon_key;
        if( ERROR_SUCCESS == RegCreateKeyEx(key,_T("DefaultIcon"),0,0,REG_OPTION_NON_VOLATILE,KEY_WRITE,0,&icon_key,0))
        {
            RegSetValueEx(icon_key,NULL,0,REG_SZ,(BYTE*)icon.GetString(),(DWORD)( icon.GetLength()*sizeof (TCHAR)) );
            RegCloseKey(icon_key);
        }
       
        HKEY com;
        if( ERROR_SUCCESS ==  RegCreateKeyEx(key,_T("shell\\open\\command"),0,0,REG_OPTION_NON_VOLATILE,KEY_WRITE,0,&com,0))
        {
            RegSetValueEx(com,NULL,0,REG_SZ,(BYTE*)command.GetString(),(DWORD)( command.GetLength()*sizeof (TCHAR)));
            RegCloseKey(com);
        }
       
        RegCloseKey(key);
        return true;
    }
    return false;
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог