我们通常希望有一台机器能经常挂在网上,现在有了adsl包月服务,这已经不是问题。但是最近adsl总是会断线,当我回家想从公司的机器上拷贝一些文件的时候,有时会发现已经连接不上了。所以我做个程序所要实现的功能有这么两个,一是用程序来实现adsl拨号,二是要定时检测网络状态,三是要在启动机器时运行(既注册为服务)
我们先看一下如何做一个拨号程序
首先建一个ras拨号的单元文件(这是网上搜集的)
unit ras;
interface
uses
windows, sysutils;
{$define winver400}
const
rasunitversion = 110;
copyright : string = ' rasunit (c) 97-98 f. piette v1.10 ';
rasapi32 = 'rasapi32.dll';
unlen = 256; // maximum user name length
pwlen = 256; // maximum password length
cnlen = 15; // computer name length
dnlen = cnlen; // maximum domain name length
ras_maxdevicetype = 16;
ras_maxphonenumber = 128;
ras_maxipaddress = 15;
ras_maxipxaddress = 21;
{$ifdef winver400}
ras_maxentryname = 256;
ras_maxdevicename = 128;
ras_maxcallbacknumber = ras_maxphonenumber;
{$else}
ras_maxentryname = 20;
ras_maxdevicename = 32;
ras_maxcallbacknumber = 48;
{$endif}
ras_maxareacode = 10;
ras_maxpadtype = 32;
ras_maxx25address = 200;
ras_maxfacilities = 200;
ras_maxuserdata = 200;
rascs_openport = 0;
rascs_portopened = 1;
rascs_connectdevice = 2;
rascs_deviceconnected = 3;
rascs_alldevicesconnected = 4;
rascs_authenticate = 5;
rascs_authnotify = 6;
rascs_authretry = 7;
rascs_authcallback = 8;
rascs_authchangepassword = 9;
rascs_authproject = 10;
rascs_authlinkspeed = 11;
rascs_authack = 12;
rascs_reauthenticate = 13;
rascs_authenticated = 14;
rascs_prepareforcallback = 15;
rascs_waitformodemreset = 16;
rascs_waitforcallback = 17;
rascs_projected = 18;
{$ifdef winver400}
rascs_startauthentication = 19;
rascs_callbackcomplete = 20;
rascs_logonnetwork = 21;
{$endif}
rascs_subentryconnected = 22;
rascs_subentrydisconnected= 23;
rascs_paused = $1000;
rascs_interactive = rascs_paused;
rascs_retryauthentication = (rascs_paused + 1);
rascs_callbacksetbycaller = (rascs_paused + 2);