|
bsp; Result := ''''Opening Port''''; RASCS_PortOpened: Result := ''''Port Opened''''; RASCS_ConnectDevice: Result := ''''Connecting Device''''; RASCS_DeviceConnected: Result := ''''Device Connected''''; RASCS_AllDevicesConnected: Result := ''''All Devices Connected''''; RASCS_Authenticate: Result := ''''Starting Authentication''''; RASCS_AuthNotify: Result := ''''Authentication Notify''''; RASCS_AuthRetry: Result := ''''Authentication Retry''''; RASCS_AuthCallback: Result := ''''Callback Requested''''; RASCS_AuthChangePassword: Result := ''''Change Password Requested''''; RASCS_AuthProject: Result := ''''Projection Phase Started''''; RASCS_AuthLinkSpeed: Result := ''''Link Speed Calculation''''; RASCS_AuthAck: Result := ''''Authentication Acknowledged''''; RASCS_ReAuthenticate: Result := ''''Reauthentication Started''''; RASCS_Authenticated: Result := ''''Authenticated''''; RASCS_PrepareForCallback: Result := ''''Preparation For Callback''''; RASCS_WaitForModemReset: Result := ''''Waiting For Modem Reset''''; RASCS_WaitForCallback: Result := ''''Waiting For Callback''''; RASCS_Projected: Result := ''''Projected''''; {$IFDEF WINVER400} RASCS_StartAuthentication: Result := ''''Start Authentication''''; RASCS_CallbackComplete: Result := ''''Callback Complete''''; RASCS_LogonNetwork: Result := ''''Logon Network''''; {$ENDIF} RASCS_SubEntryConnected: Result := ''''''''; RASCS_SubEntryDisconnected: Result := ''''''''; RASCS_Interactive: Result := ''''Interactive''''; RASCS_RetryAuthentication: Result := ''''Retry Authentication''''; RASCS_CallbackSetByCaller: Result := ''''Callback Set By Caller''''; RASCS_PasswordExpired: Result := ''''Password Expired''''; RASCS_Connected: Result := ''''Connected''''; RASCS_Disconnected: Result := ''''Disconnected''''; else Result := ''''Connection state #'''' + IntToStr(nState); end; end;
{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *} function RasGetIPAddress: string; var RASConns : TRasConn; dwSize : DWORD; dwCount : DWORD; RASpppIP : TRASPPPIP; begin Result := ''''''''; RASConns.dwSize := SizeOf(TRASConn); RASpppIP.dwSize := SizeOf(RASpppIP); dwSize := SizeOf(RASConns); if RASEnumConnectionsA(@RASConns, @dwSize, @dwCount) = 0 then begin if dwCount > 0 then begin dwSize := SizeOf(RASpppIP); RASpppIP.dwSize := SizeOf(RASpppIP); if RASGetProjectionInfoA(RASConns.hRasConn, RASP_PppIp, @RasPPPIP, @dwSize) = 0 then Result := StrPas(RASpppIP.szIPAddress); end; end; end;
{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *} function RasDialA; external rasapi32 name ''''RasDialA''''; function RasGetErrorStringA; external rasapi32 name ''''RasGetErrorStringA''''; function RasHangUpA; external rasapi32 name ''''RasHangUpA''''; function RasGetConnectStatusA; external rasapi32 name ''''RasGetConnectStatusA''''; function RasEnumConnectionsA; external rasapi32 name ''''RasEnumConnectionsA''''; function RasEnumEntriesA; external rasapi32 name ''''RasEnumEntriesA''''; function RasGetEntryDialParamsA; external rasapi32 name ''''RasGetEntryDialParamsA''''; function RasEditPhonebookEntryA; external rasapi32 name ''''RasEditPhonebookEntryA''''; //function RasEntryDlgA; external rasapi32 name ''''RasEntryDlgA''''; function RasCreatePhonebookEntryA; external rasapi32 name ''''RasCreatePhonebookEntryA''''; function RasGetProjectionInfoA; external rasapi32 name ''''RasGetProjectionInfoA'''';
{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
end.
有了这些函数,然后可以做自己的拨号程序了
program AutoDial;
{$APPTYPE CONSOLE}
uses SysUtils,IniFiles,Windows,Winsock, Ras in ''''ras.pas'''';
var DirPath,EntryName,UserName,PassWord,VisitHost,VisitUrl,VisitParam:string; CheckVisit:Boolean; nRasConnCount: DWORD; aRasConn:array [0..10] of TRASCONN; hRasConn:THRASCONN; f:TIniFile; IsConnected:boolean; procedure LogMessage(Msg:string); var LogFile:TextFile; begin try AssignFile(LogFile,DirPath+''''Log.txt''''); Append(LogFile); WriteLn(LogFile,DateTimeToStr(Now)+'''',''''+Msg); CloseFile(LogFile); WriteLn(DateTimeToStr(Now)+'''',''''+Msg); except end;
end;
function GetIP:string; var IPAddr : String; begin IPAddr := RasGetIPAddress; if IPAddr > '''''''' then result:=IPAddr else result:=''''Unknown''''; end;
function InitSocket(var ASocket:TSocket;AAddr:string;APort:integer;ATimeOut:integer):integer; var MyWSA: WSAData; SIN: TSockAddr; begin Result:=0; If WSAStartup(MAKEWORD(2,2), MyWSA) <> 0 Then //初始化 Begin WSACleanup; Result:=1; Exit; end; ASocket:=Socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); //创建socket If ASocket = INVALID_SOCKET Then Begin WSACleanup; Result:=2; Exit; End; SIN.sin_family := AF_INET; SIN.sin_port := htons(APort); SIN.sin_addr.S_addr := inet_addr(PChar(AAddr)); If connect(ASocket, SIN, SizeOf(SIN)) = SOCKET_ERROR Then Begin CloseSocket(ASocket); WSACleanup; Result:=9; Exit; end; if SetSockOpt(ASocket,SOL_SOCKET,SO_RCVTIMEO,PChar(@ATimeOut),SizeOf(ATimeOut))=SOCKET_ERROR then //设置接收超时为3秒 begin CloseSocket(ASocket); WSACleanup; Result:=6; Exit; end; if SetSockOpt(ASocket,SOL_SOCKET,SO_SNDTIMEO,PChar(@ATimeOut),SizeOf(ATimeOut))=SOCKET_ERROR then //设置发送超时为3秒 begin CloseSocket(ASocket); WSACleanup; Result:=7; Exit; end; end;
procedure UninitSocket(ASocket:TSocket); begin try CloseSocket(ASocket); //关闭socket WSACleanup; except end; end;
procedure AfterConnect;//等拨号完成后,访问指定页面,借此将ip地址记录下来,这样我们就可以在其他地方知道拨号后新的ip地址了 var hSo 上一页 [1] [2] [3] [4] 下一页 [Delphi程序]如何在启动机器时自动运行adsl拨号(2)
|