Поменяем код в старом.
Внимание этот пример максимально упрощен и показывает функцию соединения. Поэтому он работает не всегда. Например, у меня два типа соединения, а связь устанавливается для указанного по умолчанию в реестре.
#include "windows.h" #include "ras.h" #include "iostream.h" #include "conio.h" void main() { HRASCONN hrascon=NULL; RASDIALPARAMS rc[1]; rc[0].dwSize = sizeof(RASDIALPARAMS); GetPrivateProfileString("Ras","EntryName","not ready",rc[0].szEntryName,99,"Ras.ini"); GetPrivateProfileString("Ras","Phone","not ready",rc[0].szPhoneNumber,99,"Ras.ini"); GetPrivateProfileString("Ras","UserName","not ready",rc[0].szUserName,99,"Ras.ini"); GetPrivateProfileString("Ras","Password","not ready",rc[0].szPassword,99,"Ras.ini"); strcpy(rc[0].szDomain,""); cout << rc[0].szEntryName << endl; if (RasDial(NULL,NULL,rc,NULL,NULL,&hrascon)==0) { cout << "RasDial Run " << endl; cout << hrascon << endl; } cout << "Pess key" << endl; getch(); }
Для задания параметров я использовал INI файл. Если вы незнакомы с работой с ним, прочитайте шаги по использованию INI файлов.
Вот такой он у меня. Только вместо пароля я постаил звездочки. Но это провайдер просил :-).
[Ras] EntryName=Jana Phone=20507 UserName=****** Password=*********
Ну, а дальше всё похоже. HRASCONN идентификатор соединения. Если оно будет установлено, то в него поместится число. RASDIALPARAMS - массив структур с информацией о точке входа и соединении.
Дальше мы вызываем функцию RasDial. Там где стоят NULL параметры не используются, либо нам не нужны. Эта функция выдает результат своего выполнения. Например, если линия занята, то функция не выполнится.
Ну чтож компилируйте, настраивайте INI и запускайте. Если у Вас несколько соединений, то попробуйте все. Всё будет происходит несколько непривычно. Ничего кроме терминала не появится.
Создайте идентификатор соединения:
HRASCONN hrascon=NULL;
И массив информации:
RASDIALPARAMS rc[1];
Заполните параметры и вызовите RasDial():
if (RasDial(NULL,NULL,rc,NULL,NULL,&hrascon)==0) { ...... }