Re: Установка свойств модема
От: Protey Россия  
Дата: 20.05.04 10:14
Оценка:
Здравствуйте, Sidus, Вы писали:

S>Privet vsem!

S>Vot takaya voznikla problema — nugno vyrubit' dinamiki modema, ya delau tak, no ono ne pashet
S>To4nee pComConf->wcProviderData ne sodergit infu ot modema.
S>Kto-to moget byt' ustanavlival svoistva modema?


#define MODEM_CLASS "SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E96D-E325-11CE-BFC1-08002BE10318}" - по хорошему нужно ещё его искать в реестре по "Modems", но .. вроде как всё работает.
#define INIT_STR "AT......" - по желанию короче.

int INTERNPROC SetModemInfo(HKEY ModemKey)
{
  static const char Value[] = INIT_STR;

  return RegSetValueEx(ModemKey,
                           "UserInit",
                           NULL,
                           REG_SZ,
                           (LPBYTE)&Value[0],
                           CountOf(Value) - 1);
}

int INTERNPROC SetExtraDialParams(TString DevName)
{
  HKEY  hKey;
  HKEY  ModemKey;
  int   I,Modems;

  char  KeyModemName[500];
  DWORD dwKeyNameSize;
  char  Value[500];
  DWORD dwValueSize;
  DWORD dwResult;

  dwResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
          MODEM_CLASS,
          0,
          KEY_READ,
          &hKey);

  if(dwResult == ERROR_SUCCESS){
    Modems = HowManySubKeys(hKey);

    if(Modems != -1){
      for(I=0;I<Modems;I++){
        dwKeyNameSize = sizeof(KeyModemName);
        if(RegEnumKeyEx(hKey,I,&KeyModemName[0],&dwKeyNameSize,NULL,NULL,NULL,NULL) == ERROR_SUCCESS){
          if(RegOpenKeyEx(hKey, &KeyModemName[0], 0, KEY_ALL_ACCESS, &ModemKey) != ERROR_SUCCESS) return 1;
        }
        else break;
       //Check and Set
        dwValueSize = sizeof(Value);
        
        dwResult = RegQueryValueEx(ModemKey,
        "FriendlyName",
        NULL,
        NULL,
        (LPBYTE)&Value[0],
        &dwValueSize);


        if(dwResult == ERROR_ACCESS_DENIED)
          return 1;

        if(dwResult != ERROR_SUCCESS)
          printf("\r\nError %s", LogWinErrorByCode(dwResult));
        else
          if(StrIComp(Value, DevName) == 0)
            SetModemInfo(ModemKey);
      }
    }
    else{
      printf("\r\nThis System have not modem(s)!");
    }
  }
  else{
          printf("No modem CLASSS : %s", MODEM_CLASS);
          printf("\r\nError %s", LogWinErrorByCode(dwResult));
  };
  return 0;
}


Всё это безобразие меняет Extra Dila Parametrs модема на заданные. Работает.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.