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

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

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

  1. Пользователь

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

    Регистрация:
    17 июн 2011
    Сообщения:
    471
    Симпатии:
    284
    RegQueryStringValue
     
  3. Пользователь

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

    Регистрация:
    17 июн 2011
    Сообщения:
    471
    Симпатии:
    284
    Код (Text):
    1. [Setup]
    2. AppName=My Application
    3. AppVersion=1.5
    4. DefaultDirName={pf}\My Application
    5.  
    6. [code]
    7. procedure RegRun(FSection: LongWord; FDir, FValue, FExe: String);
    8. var FPath: String; ResultCode: integer;
    9. begin
    10.   if RegQueryStringValue(FSection, FDir, FValue, FPath) then begin
    11.   if FPath <> '' then Exec(AddBackslash(RemoveBackslash(FPath)) + FExe,'','', SW_SHOW, ewNoWait, ResultCode)
    12.   else  MsgBox('Ключ реестра пуст!', mbInformation, MB_OK);
    13.   end else MsgBox('Ключ реестра не найден!', mbInformation, MB_OK);
    14. end;
    15.  
    16. procedure InitializeWizard;
    17. begin
    18.   RegRun(HKEY_LOCAL_MACHINE, 'Software\Valve\Steam', 'InstallPath', 'Steam.exe');
    19. end;
    блин тебе к делфи надо
     
    Последнее редактирование: 1 июн 2015
  5. Пользователь

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

    Регистрация:
    17 июн 2011
    Сообщения:
    471
    Симпатии:
    284
    Код (Text):
    1. function RegQueryStr(RootKey: HKEY; Key, Name: string;
    2.   Success: PBoolean = nil): string;
    3. var
    4.   Handle: HKEY;
    5.   Res: LongInt;
    6.   DataType, DataSize: DWORD;
    7. begin
    8.   if Assigned(Success) then
    9.   Success^ := False;
    10.   Res := RegOpenKeyEx(RootKey, PChar(Key), 0, KEY_QUERY_VALUE, Handle);
    11.   if Res <> ERROR_SUCCESS then
    12.   Exit;
    13.   Res := RegQueryValueEx(Handle, PChar(Name), nil, @DataType, nil, @DataSize);
    14.   if (Res <> ERROR_SUCCESS) or (DataType <> REG_SZ) then
    15.   begin
    16.   RegCloseKey(Handle);
    17.   Exit;
    18.   end;
    19.   SetString(Result, nil, DataSize - 1);
    20.   Res := RegQueryValueEx(Handle, PChar(Name), nil, @DataType,
    21.   PByte(@Result[1]), @DataSize);
    22.   if Assigned(Success) then
    23.   Success^ := Res = ERROR_SUCCESS;
    24.   RegCloseKey(Handle);
    25. end;
    26.  
    27. function CreateProcessX(sExecutable: string; sParameters: string): string;
    28. var
    29. pi: TProcessInformation;
    30. si: TStartupInfo;
    31. begin
    32. FillMemory(@si, SizeOf(si), 0);
    33. si.cb:= SizeOf(si);
    34. si.lpReserved := nil;
    35. si.lpDesktop := nil;
    36. si.lpTitle := nil;
    37. si.dwFlags := STARTF_USESHOWWINDOW;
    38. si.wShowWindow := SW_SHOW;
    39. si.cbReserved2 := 0;
    40. si.lpReserved2 := nil;
    41. CreateProcess(PChar(sExecutable), PChar(sParameters), nil, nil, False, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, si, pi);
    42. CloseHandle(pi.hProcess);
    43. CloseHandle(pi.hThread);
    44. end;
    45.  
    46. procedure TForm1.FormCreate(Sender: TObject);
    47. begin
    48. CreateProcessX(RegQueryStr(HKEY_LOCAL_MACHINE, 'Software\Valve\Steam', 'InstallPath') + '\Steam.exe', '');
    49. end;
     
    sergey3695, ExPlayer и Хамик нравится это.
  7. Пользователь

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

    Регистрация:
    17 июн 2011
    Сообщения:
    471
    Симпатии:
    284
    windows.pas
     
  9. Пользователь

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

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