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

Поиск
L



Статистика
u
Пользователи онлайн: нет
Гостей онлайн: 3
Всего онлайн: 3
Зарегистрировано юзеров: 7113
Комментариев на сайте: 657
Новый юзер: Babeserdoosurf



Последние комментарии
c
YonqDox прокомментировал "Урок 53 - Потоки в Delphi, (часть 1/3)":
[url=https://clck.ru/DwfTp]Лучший Хакерский сайт "Творческая Лаборатория DedicateT"[/url]
Paulineodods прокомментировал "Урок 53 - Потоки в Delphi, (часть 1/3)":
Всем добрый день Заказывала вот такую модель смартфона на сайте https://sale-aliexpress.ru . Продавец проявил инициативу и сам отправил с помощью DHL потом еще у DHL какой то сбой прошел . так продавец еще интересовался отписывался получила я или нет. В придачу положил рыбку для наушников (чтобы провода не запутывались))) и стилус. Короче мне повезло с продавцом и покупкой. Очень [url=https://sale-aliexpress.ru] рекомендую данный сайт .

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

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


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