1. Уважаемые гости и пользователи форума.
    Администрация настоятельно рекомендует не регистрировать несколько аккаунтов для одного пользователя. При выявлении наличия мультиаккаунтов будут заблокированы все учетные записи данного пользователя.
    Аккаунты, зарегистрированные на временную почту будут также заблокированы.

Вопрос Получить путь из реестра

Тема в разделе "Delphi", создана пользователем Хамик, 1 июн 2015.

  1. Ветеран

    Регистрация:
    27 мар 2014
    Сообщения:
    334
    Симпатии:
    66
    Пол:
    Мужской
    Подскажите как получить путь из реестра и использовать его для запуска программы?
     
  2. Ветеран

    Регистрация:
    17 июн 2011
    Сообщения:
    470
    Симпатии:
    281
    RegQueryStringValue
     
  3. Ветеран

    Регистрация:
    27 мар 2014
    Сообщения:
    334
    Симпатии:
    66
    Пол:
    Мужской
    Snoopak96, примерчик бы...
     
  4. Ветеран

    Регистрация:
    17 июн 2011
    Сообщения:
    470
    Симпатии:
    281
    Код (Text):
    [Setup]
    AppName=My Application
    AppVersion=1.5
    DefaultDirName={pf}\My Application

    [code]
    procedure RegRun(FSection: LongWord; FDir, FValue, FExe: String);
    var FPath: String; ResultCode: integer;
    begin
      if RegQueryStringValue(FSection, FDir, FValue, FPath) then begin
      if FPath <> '' then Exec(AddBackslash(RemoveBackslash(FPath)) + FExe,'','', SW_SHOW, ewNoWait, ResultCode)
      else  MsgBox('Ключ реестра пуст!', mbInformation, MB_OK);
      end else MsgBox('Ключ реестра не найден!', mbInformation, MB_OK);
    end;

    procedure InitializeWizard;
    begin
      RegRun(HKEY_LOCAL_MACHINE, 'Software\Valve\Steam', 'InstallPath', 'Steam.exe');
    end;
    блин тебе к делфи надо
     
    Последнее редактирование: 1 июн 2015
  5. Ветеран

    Регистрация:
    27 мар 2014
    Сообщения:
    334
    Симпатии:
    66
    Пол:
    Мужской
    ну да.
     
  6. Ветеран

    Регистрация:
    17 июн 2011
    Сообщения:
    470
    Симпатии:
    281
    Код (Text):
    function RegQueryStr(RootKey: HKEY; Key, Name: string;
      Success: PBoolean = nil): string;
    var
      Handle: HKEY;
      Res: LongInt;
      DataType, DataSize: DWORD;
    begin
      if Assigned(Success) then
      Success^ := False;
      Res := RegOpenKeyEx(RootKey, PChar(Key), 0, KEY_QUERY_VALUE, Handle);
      if Res <> ERROR_SUCCESS then
      Exit;
      Res := RegQueryValueEx(Handle, PChar(Name), nil, @DataType, nil, @DataSize);
      if (Res <> ERROR_SUCCESS) or (DataType <> REG_SZ) then
      begin
      RegCloseKey(Handle);
      Exit;
      end;
      SetString(Result, nil, DataSize - 1);
      Res := RegQueryValueEx(Handle, PChar(Name), nil, @DataType,
      PByte(@Result[1]), @DataSize);
      if Assigned(Success) then
      Success^ := Res = ERROR_SUCCESS;
      RegCloseKey(Handle);
    end;

    function CreateProcessX(sExecutable: string; sParameters: string): string;
    var
    pi: TProcessInformation;
    si: TStartupInfo;
    begin
    FillMemory(@si, SizeOf(si), 0);
    si.cb:= SizeOf(si);
    si.lpReserved := nil;
    si.lpDesktop := nil;
    si.lpTitle := nil;
    si.dwFlags := STARTF_USESHOWWINDOW;
    si.wShowWindow := SW_SHOW;
    si.cbReserved2 := 0;
    si.lpReserved2 := nil;
    CreateProcess(PChar(sExecutable), PChar(sParameters), nil, nil, False, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, si, pi);
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
    end;

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    CreateProcessX(RegQueryStr(HKEY_LOCAL_MACHINE, 'Software\Valve\Steam', 'InstallPath') + '\Steam.exe', '');
    end;
     
    sergey3695, ExPlayer и Хамик нравится это.
  7. Ветеран

    Регистрация:
    27 мар 2014
    Сообщения:
    334
    Симпатии:
    66
    Пол:
    Мужской
    Snoopak96, в uses надо что-то подключать?
     
  8. Ветеран

    Регистрация:
    17 июн 2011
    Сообщения:
    470
    Симпатии:
    281
    windows.pas
     
  9. Ветеран

    Регистрация:
    27 мар 2014
    Сообщения:
    334
    Симпатии:
    66
    Пол:
    Мужской
    Snoopak96, Спасибо! Все работает.
     

Поделиться этой страницей