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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2011, 20:26   #1
romanzi
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 87
По умолчанию Реестры

Что я тут намудрил?

Код:
Reg.OpenKey('command\', true); 
s:='"'+Application.ExeName+'" "%1"'; 
Reg.WriteString('', s);
Когда я активирую его на компьютере,мне выдаёт ошибку (выдаёт сама система,а не компиляция), суть которой заключается не в правильном расположении файла.
romanzi вне форума Ответить с цитированием
Старый 05.04.2011, 21:24   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Ну 100% не создал экземпляр класса Reg:Tregistry. (Ни создания,ни освобождения, я не вижу).
Далее твоя ошибка это то что ты не закрыл ключ, в который пишешь. Твой код проще будет таким:
Код:
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_CLASSES_ROOT;
    if Reg.OpenKey('\shell\Open\Command', False) then
    begin
      Reg.WriteString('', ParamStr(0) + ' "%1"');
      Reg.CloseKey;
    end;
  finally
    FreeAndNil(Reg);
  end;
end;
Вот так будет правильнее...

С подозрение на регистрацию нов. расширения файла, вот что у меня уже есть и я это благополучно использую:
Код:
  {-------------------------------------------------------------------------------
    Процедура: RegFileExt - Регистрирует новый тип файла в системе
    Автор:    Человек_Борща
    Дата:  2011.03.07
    Входные параметры: Ext, ExtDesc, ContextBtnText: string
    Результат:    Нет
    Ext - Расширение с точкой(например: .hel)
    ExtDesc - Описание файла(Например: HRLEL (Сокрашённая аббревиатура))
    ContextBtnText - Текст кнопки контекстного меню
  -------------------------------------------------------------------------------}

procedure RegFileExt(Ext, ExtDesc, ContextBtnText: string);
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  //Если расширение или описание на заданы значит Error
  if (Trim(Ext) = '') or (Trim(ExtDesc) = '') then
    Exit
  else
  begin
    try
      //Регистрация нового типа файла
      Reg.RootKey := HKEY_CLASSES_ROOT;
      //Регистрируем расширение
      Reg.OpenKey(Ext, True); //.ER
      Reg.WriteString('', ExtDesc); //HLREL
      Reg.CloseKey;

      //Регестрируем иконку для файлов с этим расширением
      Reg.OpenKey(ExtDesc + '\DefaultIcon', True);
      Reg.WriteString('', ParamStr(0) + ',0');
      Reg.CloseKey;

      //Проверка на длинну
      if not (Trim(ContextBtnText) = '') then
      begin
        //Кнопка в контекстное меню
        Reg.OpenKey(ExtDesc + '\shell\Open', True);
        Reg.WriteString('', ContextBtnText);
        Reg.CloseKey;
      end;

      //Шелл-запуск
      Reg.OpenKey(ExtDesc + '\shell\Open\Command', True);
      Reg.WriteString('', ParamStr(0) + ' "%1"');
      Reg.CloseKey;
    finally
      Reg.Free;
    end;
    //После регистрации расширения обновляем иконки(Нахрен нам перезапск ПК или килл explorer'а?)=)
    SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETNONCLIENTMETRICS, 0);
  end;
end;

{-------------------------------------------------------------------------------
  Процедура: UnRegFileExt - Удаляет указаный тип файла из системы
  Автор:    Человек_Борща
  Дата:  2011.03.07
  Входные параметры: Ext, ExtDesc: string
  Результат:    Нет
  Ext - Расширение с точкой(например: .hel)
  ExtDesc - Описание файла(Например: HRLEL (Сокрашённая аббревиатура))
-------------------------------------------------------------------------------}

procedure UnRegFileExt(Ext, ExtDesc: string);
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  //Если расширение или описание на заданы значит Error
  if (Trim(Ext) = '') or (Trim(ExtDesc) = '') then
    Exit
  else
  begin
    try
      //Регистрация нового типа файла
      Reg.RootKey := HKEY_CLASSES_ROOT;
      Reg.DeleteKey(Ext);
      Reg.DeleteKey(ExtDesc);
    finally
      Reg.Free;
    end;
    //После регистрации расширения обновляем иконки(Нахрен нам перезапск ПК или килл explorer'а?)=)
    SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETNONCLIENTMETRICS, 0);
  end;
end;
На здоровье!
Человек_Борща вне форума Ответить с цитированием
Ответ


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