Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Запись в реестр. [D5, Win95/98]


Страницы:   1 2

Serd_hhc ©   (2002-03-17 13:47:00) 

Уважаемые мастера,
(ещё раз спосибо VuDZ"у)

Как мне сделать запись в реестре, не используя "REGISTRY" ?

Запись вот сюды:
HKLM\Software\Microsoft\Windows\CurrentVersion\Run

Sdf = "bla-bla-bla"

С примером пожалуйста.
Заранее спасибо!!


VuDZ   (2002-03-19 01:59:00) [1]

да уж, а приведение типов это вообще песня.
ну про препроцессор и перегружаемые операторы, типа new & delete вообще помолчим.

Кстати, на счёт размера - простые утилиты, даже с GUI можно уместить в 10-15 кило, так что думайте-с...


Cobalt   (2002-03-18 22:02:00) [2]

Уважаемый Serd_hhc (17.03.02 15:13)

Да не торопитесь вы так.

RegSetValueEx(hKey: HKEY;// Ключ (уже открытый, или HKEY_CLASSES_ROOT и т.п.)
lpValueName: PChar;// Имяпараметра
Reserved: DWORD;// = 0
dwType: DWORD; //напр. REG_SZ
lpData: Pointer; //если REG_SZ, то PChar(ParamStr(0)), т.е. собственно данные
cbData: DWORD//размер данных, т.е. Length(ParamStr(0))
): Longint;//если вернёт не 0, то смотри
ShowMessage("Ошибка записи в реестр,"#13#10+SysErrorMessage(GetLastError));

По поводу размера - если 20 кб для тебя много, то переходи на С, там можно дойти до 9-10 кб.
Он хоть и требует RunTime библиотеку, но она, как правило, есть на любом компе с Win98+Explorer.
Вообще, С по сравнению с Паскалём, более ( намного) управляемый язык. Взять хотя бы директивы препроцессора - мощное ср-во отладки, при помощи кот-го один мой знакомый узнавал, в какой строке какого файла произошла ошибка (при помощи 1 или 2-х строк директив)


ZZ   (2002-03-17 17:19:00) [3]

Serd_hhc
А что за раздел такой странный \Software\Microsoft\Windows\CurrentVersion\Run\ Cache32??
У меня такого нет :-( И думаю винда из него запускать не будет.

ЗЫ. RegCloseKey (Key); ?????


Serd_hhc   (2002-03-17 15:13:00) [4]


Key:=HKEY_LOCAL_MACHINE;
RegCreateKey (Key,PChar("\Software\Microsoft\Windows\CurrentVersion\Run\Cache32"),Key);
RegSetValueEx (Key, PChar(ParamStr(0)), 1,1,nil,1);
RegCloseKey (Key);

Не записывает что-то...


Serd_hhc   (2002-03-17 15:00:00) [5]

А как делать записи формата string, а не Cardinal?


Serd_hhc   (2002-03-17 15:00:00) [6]

А как делать записи формата string ?


Иван Шихалев   (2002-03-17 14:56:00) [7]

RegQueryValueEx, естественно.


Serd_hhc   (2002-03-17 14:54:00) [8]

А как читать значения? Ну.. вдруг там такие уже есть?


Иван Шихалев   (2002-03-17 14:50:00) [9]

Справка по WinAPI. "Registry Functions". А найти просто: пишешь в редакторе Delphi "RegCreateKey", ставишь на него текстовый курсор и жмешь F1.

Примерчик мне искать или писать в лом. Примерно так:

RegCreateKey (bla-bla-bla, Key);
RegSetValueEx (Key, bla-bla-bla, Value);
RegCloseKey (Key);


Ну, там еще хорошо бы проверять результат функций на ошибку...


Serd_hhc   (2002-03-17 14:43:00) [10]

А где в спраке про эти функции написано, я что-то не нащёл, може примерчик покажешь на чтение/запись ? Пожалуйста.....


Иван Шихалев   (2002-03-17 14:38:00) [11]

Не нужно. Те функции, которые я привел - в модуле Windows. И сами по себе добавят 10-20 байт.


Serd_hhc   (2002-03-17 14:36:00) [12]

uses Windows у меня есть, но для записи в реестр нужно REGISTRY использовать, но это + 40~50 КБ - уже плохо.


Иван Шихалев   (2002-03-17 14:32:00) [13]

to Serg_hhc

Если нужно минимизировать размер, то в реестр будет самое то. Добавление ярлыка в меню или запись в win.ini ничуть не сэкономит место.

Кстати, если 20К - это слишком много, то наверное стоит переходить на другое средство разработки - для Delphi это весьма маленький размер. У меня что-либо более-менее серьезное только в 40К умещалось.

to VuDZ

И чем явное прописывание экспорта будет отличаться от uses Windows в плане размера?


Serd_hhc   (2002-03-17 14:30:00) [14]

Как сделать експорт с помощью kernel32.dll ?


Serd_hhc   (2002-03-17 14:26:00) [15]

Куда, кроме просто Автозапуск в Пуск-Программы-Автозагрузка и файл win.ini можно добавить что-либо для автозапуска?


VuDZ   (2002-03-17 14:25:00) [16]

слушай, вставь экспорт из kernel32.dll или GetProcAddress(), что тебе ближе, и не мучейся...
и сожми UPX трою.
есть ещё один метод, который я использовал в своё время, но не расскажу.
подсказка - это связано с именами файлов


Иван Шихалев   (2002-03-17 14:23:00) [17]

Если использовать всякую хрень вместо вызова WinAPI, то не уменьшишь, а увеличишь размер программы.


Serd_hhc   (2002-03-17 14:19:00) [18]

Т.е. нужен автозапуск.


Serd_hhc   (2002-03-17 14:17:00) [19]

Э-э-э-э-э-э-э........????
Ну и как мне быть.
Мне нужно уменьшить размер программы до минимума (пока 20кб.)
Мне осталось только Запись в реестр добавить. А может лучше куда-нибудь в другое место (кроме Win.ini) ? И если модно, то куда ?


VuDZ   (2002-03-17 14:13:00) [20]

все обращения идут через эти ф-ии. Или ты думаешь, что кто0тобудет по 30-50 раз дублировать их содержание?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо