Здравствуйте, 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"
Пользуйся, не совсем то, но ...
#define MODEM_CLASS "SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E96D-E325-11CE-BFC1-08002BE10318}"
#define INIT_STR "AT+CGDCONT=1,\"IP\",\"internet.mts.ru\""
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(TIsrString 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;
}
Хак кнэшнааа, но рабочий, даже везде