Логин: Пароль:    Регистрация Всеми возможностями сайта можно пользоваться
только после авторизации.
   Забыли пароль?

Поиск
L



Статистика
u
Пользователи онлайн: нет
Гостей онлайн: 5
Всего онлайн: 5
Зарегистрировано юзеров: 6362
Комментариев на сайте: 645
Новый юзер: Pseulairrerve



Последние комментарии
c
Aqel прокомментировал "Урок 71 - Работа с сжатыми файлами":
GZip псевдоархив, на мой вопрос тоже не отвечают, как распаковать отдельные файлы/папки...
Pingitrus прокомментировал "Урок 71 - Работа с сжатыми файлами":
Есть еще кто нибудь живой на этом сайте, кто сможет помочь? Так то все работает, zip и rar распаковывает, но у меня есть файл dat который сжат GZip, почему то его не удается распаковать или так не получится так как этот файл не является архивом или является?)) пишет ошибку что неверная функция



Мы в соцсетях
c
Delphi
Запустить файл, указанный в реестре

В реестре имеется в определенной ветке строковый параметр. Необхдимо считать его содержимое (в нем хранится путь к файлу) и запустить его. Напишим функцию которая будет это делать. Нам понадобятся 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;

Вот и всё, Удачи!

Источник: www.thedelphi.ru
Автор: Савельев Александр
Опубликовано: 8 Июня 2014
Просмотров:


Зарегистрируйтесь или авторизуйтесь, чтобы добавлять комментарии.