Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование на WinApi, C++Builder, Visual C++


Информационный Канал Subscribe.Ru


Выпуск №24 -2003 BCBDEV.RU

Здравствуйте уважаемые подписчики!

Перед вами очередной выпуск рассылки "Программирование на WinApi"
Переводы многих функций Win32API, которые часто используются в данной рассылке, вы можете получать, подписавшись на дружественную рассылку "WinAPI на русском".
Справочник по функциям Win32API вы можете посмотреть на сайте BcbDev.ru в разделе MSDN по-русски.

Работа с реестром
Следующий код показывает приемы работы с функциями реестра...
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
 // Ok, мы создали директорию и сохраняем целое число и строку..
 unsigned long IsNew = 0;
 // RegCreateKeyEx должен вернуть значение, которое указывает, создали ли мы раздел или
 // он уже существовала...
 // Значение: (REG_CREATED_NEW_KEY)1 = создали, (REG_OPENED_EXISTING_KEY) 2 = существовал
 HKEY hregkey;
 // Здесь мы создаем раздел с названием: "TESTING"
 long res = RegCreateKeyEx(HKEY_LOCAL_MACHINE, "Software\\TESTING",
                           NULL, NULL, NULL, KEY_WRITE, NULL, &hregkey, &IsNew);
 if (res == 0) //Если успешно создали
 {
  // Сохраняем строку
  char str[256];
  strcpy(str, "Hello Registry");
  RegSetValueEx(hregkey, "String", 0, REG_SZ, (const unsigned char *)str, strlen(str));
  // Теперь число
  int num = 128;
  RegSetValueEx(hregkey, "Number", 0, REG_DWORD, (const unsigned char *)&num, sizeof(num));
  //Не забываем закрыть ключ...
  RegCloseKey(hregkey);
 }
 //Теперь давайте прочтем то, что мы записали, чтобы удостовериться, что это действительно работает :)
 char temp[256];
 int getnum = 0;

 res = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\TESTING", 0, KEY_ALL_ACCESS, &hregkey);
 // Заметьте, что мы вызываем RegOPENKeyEx...

 if (res == 0)
 {
  // Давайте сначала cчитаем строку 
  int datasize = 256; // Максимальная длина temp;
  RegQueryValueEx(hregkey, "String",
                  NULL, NULL, (unsigned char *)&temp, (unsigned long *)&datasize);
  MessageBox(NULL, temp, "Мы получили строку:", MB_OK);
 
  // теперь число
  datasize = sizeof(int); // Максимальная длина getnum
  RegQueryValueEx(hregkey, "Number",
                  NULL, NULL, (unsigned char *)&getnum, (unsigned long *)&datasize);
  itoa(getnum, temp, 10);
  MessageBox(NULL, temp, "Мы получили число", MB_OK);

  //Теперь удалим элемент  Number
  RegDeleteValue(hregkey, "Number");

  //Теперь удаляем раздел который мы создали , "TESTING"
  RegDeleteKey(HKEY_LOCAL_MACHINE, "Software\\TESTING");

  // Хорошо. Мы не должны вызывать RegCloseKey так как ключ уже удален..
  // Но если мы не удаляли ключ, надо не забыть сделать это

  // RegCloseKey(hregkey);
 }
 return(1);
}

Удачи Вам в Ваших делах Куковинец Андрей aka Juggernaut

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное