Здравствуйте, Protey, Вы писали:
P>Здравствуйте, ZverA, Вы писали:
ZA>>Кто-нибудь пробовал работать с портом на котором сидит модем после того как с пом.RasDial была установлена связь
ZA>>и порт занят. CreateFile не предлагать — не катит, доступа к порту нет. Можно получить handle порта в
ZA>>ф-ции RasCustomScriptExecute(Windows XP and Windows 2000)
ZA>>или в RasSetEntryProperties в параметр lpbDeviceInfo всунуть нужные данные с пом. TAPI.
ZA>>Есть ли еще подход?
ZA>>Задачка в том, чтобы сменить инициализационную строку
ZA>>модема вместо, скажем установленной
ZA>>AT+CGDCONT=1,"IP","internet.beeline.ru"
ZA>>установить
ZA>>AT+CGDCONT=1,"IP","internet.mts.ru"
P>Пользуйся, не совсем то, но ...
P>P>#define MODEM_CLASS "SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E96D-E325-11CE-BFC1-08002BE10318}"
P>#define INIT_STR "AT+CGDCONT=1,\"IP\",\"internet.mts.ru\""
P>int INTERNPROC SetModemInfo(HKEY ModemKey)
P>{
P> static const char Value[] = INIT_STR;
P> return RegSetValueEx(ModemKey,
P> "UserInit",
P> NULL,
P> REG_SZ,
P> (LPBYTE)&Value[0],
P> CountOf(Value) - 1);
P>}
P>int INTERNPROC SetExtraDialParams(TIsrString DevName)
P>{
P> HKEY hKey;
P> HKEY ModemKey;
P> int I,Modems;
P> char KeyModemName[500];
P> DWORD dwKeyNameSize;
P> char Value[500];
P> DWORD dwValueSize;
P> DWORD dwResult;
P> dwResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
P> MODEM_CLASS,
P> 0,
P> KEY_READ,
P> &hKey);
P> if(dwResult == ERROR_SUCCESS){
P> Modems = HowManySubKeys(hKey);
P> if(Modems != -1){
P> for(I=0;I<Modems;I++){
P> dwKeyNameSize = sizeof(KeyModemName);
P> if(RegEnumKeyEx(hKey,I,&KeyModemName[0],&dwKeyNameSize,NULL,NULL,NULL,NULL) == ERROR_SUCCESS){
P> if(RegOpenKeyEx(hKey, &KeyModemName[0], 0, KEY_ALL_ACCESS, &ModemKey) != ERROR_SUCCESS) return 1;
P> }
P> else break;
P> //Check and Set
P> dwValueSize = sizeof(Value);
P> dwResult = RegQueryValueEx(ModemKey,
P> "FriendlyName",
P> NULL,
P> NULL,
P> (LPBYTE)&Value[0],
P> &dwValueSize);
P> if(dwResult == ERROR_ACCESS_DENIED)
P> return 1;
P> if(dwResult != ERROR_SUCCESS)
P> printf("\r\nError %s", LogWinErrorByCode(dwResult));
P> else
P> if(StrIComp(Value, DevName) == 0)
P> SetModemInfo(ModemKey);
P> }
P> }
P> else{
P> printf("\r\nThis System have not modem(s)!");
P> }
P> }
P> else{
P> printf("No modem CLASSS : %s", MODEM_CLASS);
P> printf("\r\nError %s", LogWinErrorByCode(dwResult));
P> };
P> return 0;
P>}
P>
P>Хак кнэшнааа, но рабочий, даже везде
Спасибо
Реестр менять к сожалению нельзя