Категории раздела
J2me|java [29]
Basic [6]
Delphix [21]
C+|C++|C# [3]
Pascal [10]
Другие [0]
языки которые не войшли в верхние разделы
Главная » Статьи » Программирования » Delphix

Запустить файл, указанный в реестре

В реестре имеется в определенной ветке строковый параметр. Необхдимо считать его содержимое (в нем хранится путь к файлу) и запустить его. Напишим функцию которая будет это делать. Нам понадобятся 2 модуля (Registry, ShellAPI), которые необходимо будет добавить в раздел uses. первый для работы с реестром. Из второго нам потребуется функция ShellExecute.

uses Registry, ShellAPI;
...
function Run(root: HKEY; Path, NameKey: String): boolean;
var Reg:TRegistry;
  PathFile: string;
begin
  Result := true;
  Reg := TRegistry.Create;
  Reg.RootKey := HKEY_CURRENT_USER;
  if Reg.OpenKey(Path, false) = false then
  begin
    result := false;
    exit;
  end;
  PathFile := Reg.ReadString(NameKey);
  Reg.Free;

  ShellExecute(Application.Handle, 'open', PAnsiChar(PathFile), nil, nil, SW_Normal);
end;

Теперь немного о коде который написали. С помощью TRegistry.Create мы создаем объект типа TRegistry, при помощи которого будем получать доступ к реестру. Далее указываем корень. Думаю если хотябы раз заходили в реестр с помощю того же самого Regedit.exe (пуск -> Выполнить -> regedit) поняли для чего это нужно. Чуть ниже идет условие, в котором выполняется функция OpenKey. Функция возвращает false если указаной ветки не найдено, либо произошла какая-нибудь другая ошибка. При возникновении ошибки, мы возвращаем функции Run значение false и завершаем её выполнение.

На заметку:

Если в функции OpenKey второй параметр установить в True, то если окажется что открываемой ветки не окажется - она создастся

После условия, если все прошло без ошибок, читаем параметр с именем NameKey (его передаем в функцию Run в качестве одного из параметров). После чего, нам уже не нужен объект Reg (к реестру уже доступ не нужен, все, что было нужно мы получили) и мы освобождаем занимаемую им память.

На заметку:

В функции ShellExecute я использовал в качестве одного из параметров значение, которое возвращает функция PAnsiChar. Но в Delphi 2009 произошли изменения и теперь функция ShellExecure требует в качестве параметра PWideChar. В этом случае нужно будет использовать функцию таким образом:

ShellExecute(Application.Handle, 'open', PWideChar(PathFile), nil, nil, SW_Normal);

Далее нужно использовать эту функцию. В качестве примера, положим на форму кнопку и создадим обработчик события OnClick. Функция запустит файл указанный в строковом параметре с названием file который находится в HKEY_CURRENT_USER\SOFTWARE\.

procedure TForm1.Button1Click(Sender: TObject);
begin
  Run(HKEY_CURRENT_USER, '\SOFTWARE\', 'file')
end;
Категория: Delphix | Добавил: graimp (21.12.2011)
Просмотров: 403 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Наш опрос
На каком языке лучше программировать
Всего ответов: 38
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0