![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запись в реестр. [D5, Win95/98]
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 раз дублировать их содержание?