Реестр Windows

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Реестр Windows

Сообщение Алексей »

Есть ли какие-либо функции по чтению значений реестра Windows из вип?
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Реестр Windows

Сообщение 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. Но если используется трехзвенка, то она не поможет.
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Реестр Windows

Сообщение Den »

По описанной m0p3e проблемы использования OLE из Гал есть ПИР(102.163779) на эту тему, который в 5,5,28 атлантисе вроде как решен должен быть. Так что можно будет скоро быстрее всего
А так да - написать свою dll под конкретные нужды . зарегить ее в вип и юзать.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Реестр Windows

Сообщение edward_K »

Не помню. Но вы можете написать свою DLL и подключить ее к системе. Лучше на делфятке - там проще - смотрите в FRM\C_ExtFun.FrmSrc.zip\SRC\CompSrc\C\C_ExtFun\Vip\ там полно инков с подключением функций именно с dll собранных на дельфятке. C++ тоже вроде как можно. С c# посложнее, но тоже можно, но там уже нужно делать обертку - в доке написано как - ищите atltlb.exe, а dll придется регить в реестре через RegAsm.exe.
KATZ
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49

Re: Реестр Windows

Сообщение KATZ »

В C_ExtFun.res описана такая функция:
GetRegistryValue(longint,string,string): string;
Точного смысла параметров не знаю, но вариантов немного, можно выяснить опытным путём.
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Реестр Windows

Сообщение 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;
Остальные интуитивно понятны.
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Re: Реестр Windows

Сообщение Алексей »

Спасибо, будем смотреть.
Ответить