Страница 1 из 1

Реестр Windows

Добавлено: 24 мар 2017, 06:00
Алексей
Есть ли какие-либо функции по чтению значений реестра Windows из вип?

Re: Реестр Windows

Добавлено: 24 мар 2017, 11:20
m0p3e
Изучал вопрос в рамках задачи по масштабированию создаваемых объектов.
1. Встроенные (RegistryGetBoolean и т.д.) читают/пишут только свою ветку - 'SoftWare\Galaktika Corp'.
2. Через OleCall, но нужно подождать пока решат проблему с обращениям к наследникам (ПИР зарегистрирован).
Через vbs читает (RegRead.cmd):

Код: Выделить всё

Dim wsh
Wsh=CreateObject("WScript.Shell");
sReg=wsh.RegRead("HKEY\Control Panel\Desktop\LogPixels")
MsgBox sReg
А через OleCall нет:

Код: Выделить всё

hOle := CreateOle('WScript.Shell');
var Pixels :word;
OleCall2(hOle,ocFunc,'RegRead','HKEY\Control Panel\Desktop\LogPixels',Pixels);
Получаем - Не найден метод RegRead;
Однако при этом:

Код: Выделить всё

OleCall1(hOle,ocGet,'CurrentDirectory',tStr')
значение возвращает.
3. Пишем свою dll. Но если используется трехзвенка, то она не поможет.

Re: Реестр Windows

Добавлено: 24 мар 2017, 11:26
Den
По описанной m0p3e проблемы использования OLE из Гал есть ПИР(102.163779) на эту тему, который в 5,5,28 атлантисе вроде как решен должен быть. Так что можно будет скоро быстрее всего
А так да - написать свою dll под конкретные нужды . зарегить ее в вип и юзать.

Re: Реестр Windows

Добавлено: 24 мар 2017, 11:41
edward_K
Не помню. Но вы можете написать свою DLL и подключить ее к системе. Лучше на делфятке - там проще - смотрите в FRM\C_ExtFun.FrmSrc.zip\SRC\CompSrc\C\C_ExtFun\Vip\ там полно инков с подключением функций именно с dll собранных на дельфятке. C++ тоже вроде как можно. С c# посложнее, но тоже можно, но там уже нужно делать обертку - в доке написано как - ищите atltlb.exe, а dll придется регить в реестре через RegAsm.exe.

Re: Реестр Windows

Добавлено: 24 мар 2017, 11:46
KATZ
В C_ExtFun.res описана такая функция:
GetRegistryValue(longint,string,string): string;
Точного смысла параметров не знаю, но вариантов немного, можно выяснить опытным путём.

Re: Реестр Windows

Добавлено: 24 мар 2017, 11:59
m0p3e
KATZ писал(а):GetRegistryValue(longint,string,string): string;
Стоит попробовать:
function GETREGISTRYVALUE(RootKey : longint; KeyName, ValueName: shortstring): shortstring; external 'DDELib.dll';
Первый параметр:

Код: Выделить всё

      case RootKey of
        0: Registry.RootKey := HKEY_CLASSES_ROOT;
        1: Registry.RootKey := HKEY_CURRENT_USER;
        2: Registry.RootKey := HKEY_LOCAL_MACHINE;
        3: Registry.RootKey := HKEY_USERS;
        5: Registry.RootKey := HKEY_CURRENT_CONFIG;
      else
        Registry.RootKey := HKEY_CLASSES_ROOT;
      end;
Остальные интуитивно понятны.

Re: Реестр Windows

Добавлено: 27 мар 2017, 09:20
Алексей
Спасибо, будем смотреть.