1562 lines
65 KiB
ObjectPascal
1562 lines
65 KiB
ObjectPascal
(****************************************** |******************************************
|
||
* DIALUP, telefonicke pripojeni site * |* DIALUP, dial-up networking component *
|
||
* komponenta pro Delphi 3 (32b) * |* for Delphi 3 (32b) *
|
||
* (c) 1998 BEALsoft * |* (c) 1998 BEALsoft *
|
||
* v1.0 * |* v1.0 *
|
||
*________________________________________* |*________________________________________*
|
||
* !! TATO KOMPONENTA JE ZDARMA !! * |* !! THIS COMPONENT IS FREE !! *
|
||
****************************************** |******************************************)
|
||
// Kontakt na autora // Contact to author :
|
||
// aberka@usa.net, ICQ UIN 2365308, http://members.xoom.com/aberka
|
||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
// See README.TXT for details, description of properties and methods
|
||
// Prectete si CTIMNE.TXT, kde jsou popsany vsechny dulezite funkce a vlastnosti
|
||
|
||
// Thanx to Davide Moretti for his RAS API header (Some code in this component
|
||
// was written by him). You can reach him via e-mail: dmoretti@iper.net
|
||
|
||
unit DialUp;
|
||
|
||
interface
|
||
|
||
uses
|
||
SysUtils, Windows, Dialogs, Classes, ExtCtrls, Forms, Messages;
|
||
|
||
{******************************************************}
|
||
{******************************************************}
|
||
{******************************************************}
|
||
// RAS API header by Davide Moretti
|
||
{******************************************************}
|
||
{******************************************************}
|
||
{******************************************************}
|
||
(*RASAPI*){* Copyright (c) 1992-1995, Microsoft Corporation, all rights reserved
|
||
(*RASAPI*)**
|
||
(*RASAPI*)** ras.h
|
||
(*RASAPI*)** Remote Access external API
|
||
(*RASAPI*)** Public header for external API clients
|
||
(*RASAPI*)*}
|
||
(*RASAPI*)
|
||
(*RASAPI*){ Delphi conversion by Davide Moretti <dmoretti@iper.net> }
|
||
(*RASAPI*){ Note: All functions and structures defaults to Ansi. If you want to use
|
||
(*RASAPI*) Unicode structs and funcs, use the names ending with 'W' }
|
||
(*RASAPI*)
|
||
(*RASAPI*)const
|
||
(*RASAPI*){ These are from lmcons.h }
|
||
(*RASAPI*) DNLEN = 15; // Maximum domain name length
|
||
(*RASAPI*) UNLEN = 256; // Maximum user name length
|
||
(*RASAPI*) PWLEN = 256; // Maximum password length
|
||
(*RASAPI*) NETBIOS_NAME_LEN = 16; // NetBIOS net name (bytes)
|
||
(*RASAPI*)
|
||
(*RASAPI*) RAS_MaxDeviceType = 16;
|
||
(*RASAPI*) RAS_MaxPhoneNumber = 128;
|
||
(*RASAPI*) RAS_MaxIpAddress = 15;
|
||
(*RASAPI*) RAS_MaxIpxAddress = 21;
|
||
(*RASAPI*) RAS_MaxEntryName = 256;
|
||
(*RASAPI*) RAS_MaxDeviceName = 128;
|
||
(*RASAPI*) RAS_MaxCallbackNumber = RAS_MaxPhoneNumber;
|
||
(*RASAPI*)
|
||
(*RASAPI*)type
|
||
(*RASAPI*) LPHRasConn = ^THRasConn;
|
||
(*RASAPI*) THRasConn = Longint;
|
||
(*RASAPI*)
|
||
(*RASAPI*){* Identifies an active RAS connection. (See RasEnumConnections) *}
|
||
(*RASAPI*) LPRasConnW = ^TRasConnW;
|
||
(*RASAPI*) TRasConnW = record
|
||
(*RASAPI*) dwSize : Longint;
|
||
(*RASAPI*) hrasconn : THRasConn;
|
||
(*RASAPI*) szEntryName : Array[0..RAS_MaxEntryName] of WideChar;
|
||
(*RASAPI*) szDeviceType : Array[0..RAS_MaxDeviceType] of WideChar;
|
||
(*RASAPI*) szDeviceName : Array[0..RAS_MaxDeviceName] of WideChar;
|
||
(*RASAPI*) end;
|
||
(*RASAPI*)
|
||
(*RASAPI*) LPRasConnA = ^TRasConnA;
|
||
(*RASAPI*) TRasConnA = record
|
||
(*RASAPI*) dwSize : Longint;
|
||
(*RASAPI*) hrasconn : THRasConn;
|
||
(*RASAPI*) szEntryName : Array[0..RAS_MaxEntryName] of AnsiChar;
|
||
(*RASAPI*) szDeviceType : Array[0..RAS_MaxDeviceType] of AnsiChar;
|
||
(*RASAPI*) szDeviceName : Array[0..RAS_MaxDeviceName] of AnsiChar;
|
||
(*RASAPI*) end;
|
||
(*RASAPI*)
|
||
(*RASAPI*) LPRasConn = ^TRasConn;
|
||
(*RASAPI*) TRasConn = TRasConnA;
|
||
(*RASAPI*)
|
||
(*RASAPI*)const
|
||
(*RASAPI*){* Enumerates intermediate states to a connection. (See RasDial) *}
|
||
(*RASAPI*) RASCS_PAUSED = $1000;
|
||
(*RASAPI*) RASCS_DONE = $2000;
|
||
(*RASAPI*)
|
||
(*RASAPI*)type
|
||
(*RASAPI*) LPRasConnState = ^TRasConnState;
|
||
(*RASAPI*) TRasConnState = Integer;
|
||
(*RASAPI*)
|
||
(*RASAPI*)const
|
||
(*RASAPI*) RASCS_OpenPort = 0;
|
||
(*RASAPI*) RASCS_PortOpened = 1;
|
||
(*RASAPI*) RASCS_ConnectDevice = 2;
|
||
(*RASAPI*) RASCS_DeviceConnected = 3;
|
||
(*RASAPI*) RASCS_AllDevicesConnected = 4;
|
||
(*RASAPI*) RASCS_Authenticate = 5;
|
||
(*RASAPI*) RASCS_AuthNotify = 6;
|
||
(*RASAPI*) RASCS_AuthRetry = 7;
|
||
(*RASAPI*) RASCS_AuthCallback = 8;
|
||
(*RASAPI*) RASCS_AuthChangePassword = 9;
|
||
(*RASAPI*) RASCS_AuthProject = 10;
|
||
(*RASAPI*) RASCS_AuthLinkSpeed = 11;
|
||
(*RASAPI*) RASCS_AuthAck = 12;
|
||
(*RASAPI*) RASCS_ReAuthenticate = 13;
|
||
(*RASAPI*) RASCS_Authenticated = 14;
|
||
(*RASAPI*) RASCS_PrepareForCallback = 15;
|
||
(*RASAPI*) RASCS_WaitForModemReset = 16;
|
||
(*RASAPI*) RASCS_WaitForCallback = 17;
|
||
(*RASAPI*) RASCS_Projected = 18;
|
||
(*RASAPI*) RASCS_StartAuthentication = 19;
|
||
(*RASAPI*) RASCS_CallbackComplete = 20;
|
||
(*RASAPI*) RASCS_LogonNetwork = 21;
|
||
(*RASAPI*)
|
||
(*RASAPI*) RASCS_Interactive = RASCS_PAUSED;
|
||
(*RASAPI*) RASCS_RetryAuthentication = RASCS_PAUSED + 1;
|
||
(*RASAPI*) RASCS_CallbackSetByCaller = RASCS_PAUSED + 2;
|
||
(*RASAPI*) RASCS_PasswordExpired = RASCS_PAUSED + 3;
|
||
(*RASAPI*)
|
||
(*RASAPI*) RASCS_Connected = RASCS_DONE;
|
||
(*RASAPI*) RASCS_Disconnected = RASCS_DONE + 1;
|
||
(*RASAPI*)
|
||
(*RASAPI*)type
|
||
(*RASAPI*){* Describes the status of a RAS connection. (See RasConnectionStatus)*}
|
||
(*RASAPI*) LPRasConnStatusW = ^TRasConnStatusW;
|
||
(*RASAPI*) TRasConnStatusW = record
|
||
(*RASAPI*) dwSize : Longint;
|
||
(*RASAPI*) rasconnstate : TRasConnState;
|
||
(*RASAPI*) dwError : LongInt;
|
||
(*RASAPI*) szDeviceType : Array[0..RAS_MaxDeviceType] of WideChar;
|
||
(*RASAPI*) szDeviceName : Array[0..RAS_MaxDeviceName] of WideChar;
|
||
(*RASAPI*) end;
|
||
(*RASAPI*)
|
||
(*RASAPI*) LPRasConnStatusA = ^TRasConnStatusA;
|
||
(*RASAPI*) TRasConnStatusA = record
|
||
(*RASAPI*) dwSize : Longint;
|
||
(*RASAPI*) rasconnstate : TRasConnState;
|
||
(*RASAPI*) dwError : LongInt;
|
||
(*RASAPI*) szDeviceType : Array[0..RAS_MaxDeviceType] of AnsiChar;
|
||
(*RASAPI*) szDeviceName : Array[0..RAS_MaxDeviceName] of AnsiChar;
|
||
(*RASAPI*) end;
|
||
(*RASAPI*)
|
||
(*RASAPI*) LPRasConnStatus = ^TRasConnStatus;
|
||
(*RASAPI*) TRasConnStatus = TRasConnStatusA;
|
||
(*RASAPI*)
|
||
(*RASAPI*){* Describes connection establishment parameters. (See RasDial)*}
|
||
(*RASAPI*) LPRasDialParamsW = ^TRasDialParamsW;
|
||
(*RASAPI*) TRasDialParamsW = record
|
||
(*RASAPI*) dwSize : LongInt;
|
||
(*RASAPI*) szEntryName : Array[0..RAS_MaxEntryName] of WideChar;
|
||
(*RASAPI*) szPhoneNumber : Array[0..RAS_MaxPhoneNumber] of WideChar;
|
||
(*RASAPI*) szCallbackNumber : Array[0..RAS_MaxCallbackNumber] of WideChar;
|
||
(*RASAPI*) szUserName : Array[0..UNLEN] of WideChar;
|
||
(*RASAPI*) szPassword : Array[0..PWLEN] of WideChar;
|
||
(*RASAPI*) szDomain : Array[0..DNLEN] of WideChar;
|
||
(*RASAPI*) end;
|
||
(*RASAPI*)
|
||
(*RASAPI*) LPRasDialParamsA = ^TRasDialParamsA;
|
||
(*RASAPI*) TRasDialParamsA = record
|
||
(*RASAPI*) dwSize : LongInt;
|
||
(*RASAPI*) szEntryName : Array[0..RAS_MaxEntryName] of AnsiChar;
|
||
(*RASAPI*) szPhoneNumber : Array[0..RAS_MaxPhoneNumber] of AnsiChar;
|
||
(*RASAPI*) szCallbackNumber : Array[0..RAS_MaxCallbackNumber] of AnsiChar;
|
||
(*RASAPI*) szUserName : Array[0..UNLEN] of AnsiChar;
|
||
(*RASAPI*) szPassword : Array[0..PWLEN] of AnsiChar;
|
||
(*RASAPI*) szDomain : Array[0..DNLEN] of AnsiChar;
|
||
(*RASAPI*) end;
|
||
(*RASAPI*)
|
||
(*RASAPI*) LPRasDialParams = ^TRasDialParams;
|
||
(*RASAPI*) TRasDialParams = TRasDialParamsA;
|
||
(*RASAPI*)
|
||
(*RASAPI*){* Describes extended connection establishment options. (See RasDial)*}
|
||
(*RASAPI*) LPRasDialExtensions = ^TRasDialExtensions;
|
||
(*RASAPI*) TRasDialExtensions = record
|
||
(*RASAPI*) dwSize : LongInt;
|
||
(*RASAPI*) dwfOptions : LongInt;
|
||
(*RASAPI*) hwndParent : HWND;
|
||
(*RASAPI*) reserved : LongInt;
|
||
(*RASAPI*) end;
|
||
(*RASAPI*)
|
||
(*RASAPI*)const
|
||
(*RASAPI*){* 'dwfOptions' bit flags.*}
|
||
(*RASAPI*) RDEOPT_UsePrefixSuffix = $00000001;
|
||
(*RASAPI*) RDEOPT_PausedStates = $00000002;
|
||
(*RASAPI*) RDEOPT_IgnoreModemSpeaker = $00000004;
|
||
(*RASAPI*) RDEOPT_SetModemSpeaker = $00000008;
|
||
(*RASAPI*) RDEOPT_IgnoreSoftwareCompression = $00000010;
|
||
(*RASAPI*) RDEOPT_SetSoftwareCompression = $00000020;
|
||
(*RASAPI*)
|
||
(*RASAPI*)
|
||
(*RASAPI*)type
|
||
(*RASAPI*)
|
||
(*RASAPI*){* Describes an enumerated RAS phone book entry name. (See RasEntryEnum)*}
|
||
(*RASAPI*) LPRasEntryNameW = ^TRasEntryNameW;
|
||
(*RASAPI*) TRasEntryNameW = record
|
||
(*RASAPI*) dwSize : Longint;
|
||
(*RASAPI*) szEntryName : Array[0..RAS_MaxEntryName] of WideChar;
|
||
(*RASAPI*) end;
|
||
(*RASAPI*)
|
||
(*RASAPI*) LPRasEntryNameA = ^TRasEntryNameA;
|
||
(*RASAPI*) TRasEntryNameA = record
|
||
(*RASAPI*) dwSize : Longint;
|
||
(*RASAPI*) szEntryName : Array[0..RAS_MaxEntryName] of AnsiChar;
|
||
(*RASAPI*) end;
|
||
(*RASAPI*)
|
||
(*RASAPI*) LPRasEntryName = ^TRasEntryName;
|
||
(*RASAPI*) TRasEntryName = TRasEntryNameA;
|
||
(*RASAPI*)
|
||
(*RASAPI*){* Protocol code to projection data structure mapping.*}
|
||
(*RASAPI*) LPRasProjection = ^TRasProjection;
|
||
(*RASAPI*) TRasProjection = Integer;
|
||
(*RASAPI*)
|
||
(*RASAPI*)const
|
||
(*RASAPI*) RASP_Amb = $10000;
|
||
(*RASAPI*) RASP_PppNbf = $803F;
|
||
(*RASAPI*) RASP_PppIpx = $802B;
|
||
(*RASAPI*) RASP_PppIp = $8021;
|
||
(*RASAPI*)
|
||
(*RASAPI*)
|
||
(*RASAPI*)type
|
||
(*RASAPI*){* Describes the result of a RAS AMB (Authentication Message Block)
|
||
(*RASAPI*)** projection. This protocol is used with NT 3.1 and OS/2 1.3 downlevel
|
||
(*RASAPI*)** RAS servers.*}
|
||
(*RASAPI*) LPRasAmbW = ^TRasAmbW;
|
||
(*RASAPI*) TRasAmbW = record
|
||
(*RASAPI*) dwSize : Longint;
|
||
(*RASAPI*) dwError : Longint;
|
||
(*RASAPI*) szNetBiosError : Array[0..NETBIOS_NAME_LEN] of WideChar;
|
||
(*RASAPI*) bLana : Byte;
|
||
(*RASAPI*) end;
|
||
(*RASAPI*)
|
||
(*RASAPI*) LPRasAmbA = ^TRasAmbA;
|
||
(*RASAPI*) TRasAmbA = record
|
||
(*RASAPI*) dwSize : Longint;
|
||
(*RASAPI*) dwError : Longint;
|
||
(*RASAPI*) szNetBiosError : Array[0..NETBIOS_NAME_LEN] of AnsiChar;
|
||
(*RASAPI*) bLana : Byte;
|
||
(*RASAPI*) end;
|
||
(*RASAPI*)
|
||
(*RASAPI*) LPRasAmb = ^TRasAmb;
|
||
(*RASAPI*) TRasAmb = TRasAmbA;
|
||
(*RASAPI*)
|
||
(*RASAPI*){* Describes the result of a PPP NBF (NetBEUI) projection.*}
|
||
(*RASAPI*) LPRasPppNbfW = ^TRasPppNbfW;
|
||
(*RASAPI*) TRasPppNbfW = record
|
||
(*RASAPI*) dwSize : Longint;
|
||
(*RASAPI*) dwError : Longint;
|
||
(*RASAPI*) dwNetBiosError : Longint;
|
||
(*RASAPI*) szNetBiosError : Array[0..NETBIOS_NAME_LEN] of WideChar;
|
||
(*RASAPI*) szWorkstationName : Array[0..NETBIOS_NAME_LEN] of WideChar;
|
||
(*RASAPI*) bLana : Byte;
|
||
(*RASAPI*) end;
|
||
(*RASAPI*)
|
||
(*RASAPI*) LPRasPppNbfA = ^TRasPppNbfA;
|
||
(*RASAPI*) TRasPppNbfA = record
|
||
(*RASAPI*) dwSize : Longint;
|
||
(*RASAPI*) dwError : Longint;
|
||
(*RASAPI*) dwNetBiosError : Longint;
|
||
(*RASAPI*) szNetBiosError : Array[0..NETBIOS_NAME_LEN] of AnsiChar;
|
||
(*RASAPI*) szWorkstationName : Array[0..NETBIOS_NAME_LEN] of AnsiChar;
|
||
(*RASAPI*) bLana : Byte;
|
||
(*RASAPI*) end;
|
||
(*RASAPI*)
|
||
(*RASAPI*) LpRaspppNbf = ^TRasPppNbf;
|
||
(*RASAPI*) TRasPppNbf = TRasPppNbfA;
|
||
(*RASAPI*)
|
||
(*RASAPI*){* Describes the results of a PPP IPX (Internetwork Packet Exchange)
|
||
(*RASAPI*)** projection.*}
|
||
(*RASAPI*) LPRasPppIpxW = ^TRasPppIpxW;
|
||
(*RASAPI*) TRasPppIpxW = record
|
||
(*RASAPI*) dwSize : Longint;
|
||
(*RASAPI*) dwError : Longint;
|
||
(*RASAPI*) szIpxAddress : Array[0..RAS_MaxIpxAddress] of WideChar;
|
||
(*RASAPI*) end;
|
||
(*RASAPI*)
|
||
(*RASAPI*) LPRasPppIpxA = ^TRasPppIpxA;
|
||
(*RASAPI*) TRasPppIpxA = record
|
||
(*RASAPI*) dwSize : Longint;
|
||
(*RASAPI*) dwError : Longint;
|
||
(*RASAPI*) szIpxAddress : Array[0..RAS_MaxIpxAddress] of AnsiChar;
|
||
(*RASAPI*) end;
|
||
(*RASAPI*)
|
||
(*RASAPI*) LPRasPppIpx = ^TRasPppIpx;
|
||
(*RASAPI*) TRasPppIpx = TRasPppIpxA;
|
||
(*RASAPI*)
|
||
(*RASAPI*){* Describes the results of a PPP IP (Internet) projection.*}
|
||
(*RASAPI*) LPRasPppIpW = ^TRasPppIpW;
|
||
(*RASAPI*) TRasPppIpW = record
|
||
(*RASAPI*) dwSize : Longint;
|
||
(*RASAPI*) dwError : Longint;
|
||
(*RASAPI*) szIpAddress : Array[0..RAS_MaxIpAddress] of WideChar;
|
||
(*RASAPI*)
|
||
(*RASAPI*){$IFNDEF WINNT35COMPATIBLE}
|
||
(*RASAPI*) {* This field was added between Windows NT 3.51 beta and Windows NT 3.51
|
||
(*RASAPI*) ** final, and between Windows 95 M8 beta and Windows 95 final. If you do
|
||
(*RASAPI*) ** not require the server address and wish to retrieve PPP IP information
|
||
(*RASAPI*) ** from Windows NT 3.5 or early Windows NT 3.51 betas, or on early Windows
|
||
(*RASAPI*) ** 95 betas, define WINNT35COMPATIBLE.
|
||
(*RASAPI*) **
|
||
(*RASAPI*) ** The server IP address is not provided by all PPP implementations,
|
||
(*RASAPI*) ** though Windows NT server's do provide it. *}
|
||
(*RASAPI*) szServerIpAddress: Array[0..RAS_MaxIpAddress] of WideChar;
|
||
(*RASAPI*){$ENDIF}
|
||
(*RASAPI*) end;
|
||
(*RASAPI*)
|
||
(*RASAPI*) LPRasPppIpA = ^TRasPppIpA;
|
||
(*RASAPI*) TRasPppIpA = record
|
||
(*RASAPI*) dwSize : Longint;
|
||
(*RASAPI*) dwError : Longint;
|
||
(*RASAPI*) szIpAddress : Array[0..RAS_MaxIpAddress] of AnsiChar;
|
||
(*RASAPI*)
|
||
(*RASAPI*){$IFNDEF WINNT35COMPATIBLE} {* See RASPPPIPW comment. *}
|
||
(*RASAPI*) szServerIpAddress: Array[0..RAS_MaxIpAddress] of AnsiChar;
|
||
(*RASAPI*){$ENDIF}
|
||
(*RASAPI*) end;
|
||
(*RASAPI*)
|
||
(*RASAPI*) LPRasPppIp = ^TRasPppIp;
|
||
(*RASAPI*) TRasPppIp = TRasPppIpA;
|
||
(*RASAPI*)
|
||
(*RASAPI*)
|
||
(*RASAPI*)const
|
||
(*RASAPI*){* If using RasDial message notifications, get the notification message code
|
||
(*RASAPI*)** by passing this string to the RegisterWindowMessageA() API.
|
||
(*RASAPI*)** WM_RASDIALEVENT is used only if a unique message cannot be registered.*}
|
||
(*RASAPI*) RASDIALEVENT = 'RasDialEvent';
|
||
(*RASAPI*) WM_RASDIALEVENT = $CCCD;
|
||
(*RASAPI*)
|
||
(*RASAPI*)
|
||
(*RASAPI*){* Prototypes for caller's RasDial callback handler. Arguments are the
|
||
(*RASAPI*)** message ID (currently always WM_RASDIALEVENT), the current RASCONNSTATE and
|
||
(*RASAPI*)** the error that has occurred (or 0 if none). Extended arguments are the
|
||
(*RASAPI*)** handle of the RAS connection and an extended error code.
|
||
(*RASAPI*)*}
|
||
(*RASAPI*){
|
||
(*RASAPI*)typedef VOID (WINAPI *RASDIALFUNC)( UINT, RASCONNSTATE, DWORD );
|
||
(*RASAPI*)typedef VOID (WINAPI *RASDIALFUNC1)( HRASCONN, UINT, RASCONNSTATE, DWORD, DWORD );
|
||
(*RASAPI*)
|
||
(*RASAPI*)For Delphi: Just define the callback as
|
||
(*RASAPI*)procedure RASCallback(msg: Integer; state: TRasConnState;
|
||
(*RASAPI*) dwError: Longint); stdcall;
|
||
(*RASAPI*) or
|
||
(*RASAPI*)procedure RASCallback1(hConn: THRasConn; msg: Integer;
|
||
(*RASAPI*) state: TRasConnState; dwError: Longint; dwEexterror: Longint); stdcall;
|
||
(*RASAPI*)}
|
||
(*RASAPI*)
|
||
(*RASAPI*){* External RAS API function prototypes.
|
||
(*RASAPI*)*}
|
||
(*RASAPI*){Note: for Delphi the function without 'A' or 'W' is the Ansi one
|
||
(*RASAPI*) as on the other Delphi headers}
|
||
(*RASAPI*)
|
||
(*RASAPI*)function RasDialA(lpRasDialExt: LPRasDialExtensions; lpszPhoneBook: PAnsiChar;
|
||
(*RASAPI*) var params: TRasDialParamsA; dwNotifierType: Longint;
|
||
(*RASAPI*) lpNotifier: Pointer; var rasconn: THRasConn): Longint; stdcall;
|
||
(*RASAPI*)function RasDialW(lpRasDialExt: LPRasDialExtensions; lpszPhoneBook: PWideChar;
|
||
(*RASAPI*) var params: TRasDialParamsW; dwNotifierType: Longint;
|
||
(*RASAPI*) lpNotifier: Pointer; var rasconn: THRasConn): Longint; stdcall;
|
||
(*RASAPI*)function RasDial(lpRasDialExt: LPRasDialExtensions; lpszPhoneBook: PAnsiChar;
|
||
(*RASAPI*) var params: TRasDialParams; dwNotifierType: Longint;
|
||
(*RASAPI*) lpNotifier: Pointer; var rasconn: THRasConn): Longint; stdcall;
|
||
(*RASAPI*)
|
||
(*RASAPI*)function RasEnumConnectionsA(RasConnArray: LPRasConnA; var lpcb: Longint;
|
||
(*RASAPI*) var lpcConnections: Longint): Longint; stdcall;
|
||
(*RASAPI*)function RasEnumConnectionsW(RasConnArray: LPRasConnW; var lpcb: Longint;
|
||
(*RASAPI*) var lpcConnections: Longint): Longint; stdcall;
|
||
(*RASAPI*)function RasEnumConnections(RasConnArray: LPRasConn; var lpcb: Longint;
|
||
(*RASAPI*) var lpcConnections: Longint): Longint; stdcall;
|
||
(*RASAPI*)
|
||
(*RASAPI*)function RasEnumEntriesA(Reserved: PAnsiChar; lpszPhoneBook: PAnsiChar;
|
||
(*RASAPI*) entrynamesArray: LPRasEntryNameA; var lpcb: Longint;
|
||
(*RASAPI*) var lpcEntries: Longint): Longint; stdcall;
|
||
(*RASAPI*)function RasEnumEntriesW(reserved: PWideChar; lpszPhoneBook: PWideChar;
|
||
(*RASAPI*) entrynamesArray: LPRasEntryNameW; var lpcb: Longint;
|
||
(*RASAPI*) var lpcEntries: Longint): Longint; stdcall;
|
||
(*RASAPI*)function RasEnumEntries(reserved: PAnsiChar; lpszPhoneBook: PAnsiChar;
|
||
(*RASAPI*) entrynamesArray: LPRasEntryName; var lpcb: Longint;
|
||
(*RASAPI*) var lpcEntries: Longint): Longint; stdcall;
|
||
(*RASAPI*)
|
||
(*RASAPI*)function RasGetConnectStatusA(hConn: THRasConn; var lpStatus: TRasConnStatusA): Longint; stdcall;
|
||
(*RASAPI*)function RasGetConnectStatusW(hConn: THRasConn;var lpStatus: TRasConnStatusW): Longint; stdcall;
|
||
(*RASAPI*)function RasGetConnectStatus(hConn: THRasConn;var lpStatus: TRasConnStatus): Longint; stdcall;
|
||
(*RASAPI*)
|
||
(*RASAPI*)function RasGetErrorStringA(errorValue: Integer;erroString: PAnsiChar;cBufSize: Longint): Longint; stdcall;
|
||
(*RASAPI*)function RasGetErrorStringW(errorValue: Integer;erroString: PWideChar;cBufSize: Longint): Longint; stdcall;
|
||
(*RASAPI*)function RasGetErrorString(errorValue: Integer;erroString: PAnsiChar;cBufSize: Longint): Longint; stdcall;
|
||
(*RASAPI*)
|
||
(*RASAPI*)function RasHangUpA(hConn: THRasConn): Longint; stdcall;
|
||
(*RASAPI*)function RasHangUpW(hConn: THRasConn): Longint; stdcall;
|
||
(*RASAPI*)function RasHangUp(hConn: THRasConn): Longint; stdcall;
|
||
(*RASAPI*)
|
||
(*RASAPI*)function RasGetProjectionInfoA(hConn: THRasConn; rasproj: TRasProjection;
|
||
(*RASAPI*) lpProjection: Pointer; var lpcb: Longint): Longint; stdcall;
|
||
(*RASAPI*)function RasGetProjectionInfoW(hConn: THRasConn; rasproj: TRasProjection;
|
||
(*RASAPI*) lpProjection: Pointer; var lpcb: Longint): Longint; stdcall;
|
||
(*RASAPI*)function RasGetProjectionInfo(hConn: THRasConn; rasproj: TRasProjection;
|
||
(*RASAPI*) lpProjection: Pointer; var lpcb: Longint): Longint; stdcall;
|
||
(*RASAPI*)
|
||
(*RASAPI*)function RasCreatePhonebookEntryA(hwndParentWindow: HWND;lpszPhoneBook: PAnsiChar): Longint; stdcall;
|
||
(*RASAPI*)function RasCreatePhonebookEntryW(hwndParentWindow: HWND;lpszPhoneBook: PWideChar): Longint; stdcall;
|
||
(*RASAPI*)function RasCreatePhonebookEntry(hwndParentWindow: HWND;lpszPhoneBook: PAnsiChar): Longint; stdcall;
|
||
(*RASAPI*)
|
||
(*RASAPI*)function RasEditPhonebookEntryA(hwndParentWindow: HWND; lpszPhoneBook: PAnsiChar;
|
||
(*RASAPI*) lpszEntryName: PAnsiChar): Longint; stdcall;
|
||
(*RASAPI*)function RasEditPhonebookEntryW(hwndParentWindow: HWND; lpszPhoneBook: PWideChar;
|
||
(*RASAPI*) lpszEntryName: PWideChar): Longint; stdcall;
|
||
(*RASAPI*)function RasEditPhonebookEntry(hwndParentWindow: HWND; lpszPhoneBook: PAnsiChar;
|
||
(*RASAPI*) lpszEntryName: PAnsiChar): Longint; stdcall;
|
||
(*RASAPI*)
|
||
(*RASAPI*)function RasSetEntryDialParamsA(lpszPhoneBook: PAnsiChar; var lpDialParams: TRasDialParamsA;
|
||
(*RASAPI*) fRemovePassword: LongBool): Longint; stdcall;
|
||
(*RASAPI*)function RasSetEntryDialParamsW(lpszPhoneBook: PWideChar; var lpDialParams: TRasDialParamsW;
|
||
(*RASAPI*) fRemovePassword: LongBool): Longint; stdcall;
|
||
(*RASAPI*)function RasSetEntryDialParams(lpszPhoneBook: PAnsiChar; var lpDialParams: TRasDialParams;
|
||
(*RASAPI*) fRemovePassword: LongBool): Longint; stdcall;
|
||
(*RASAPI*)
|
||
(*RASAPI*)function RasGetEntryDialParamsA(lpszPhoneBook: PAnsiChar; var lpDialParams: TRasDialParamsA;
|
||
(*RASAPI*) var lpfPassword: LongBool): Longint; stdcall;
|
||
(*RASAPI*)function RasGetEntryDialParamsW(lpszPhoneBook: PWideChar; var lpDialParams: TRasDialParamsW;
|
||
(*RASAPI*) var lpfPassword: LongBool): Longint; stdcall;
|
||
(*RASAPI*)function RasGetEntryDialParams(lpszPhoneBook: PAnsiChar; var lpDialParams: TRasDialParams;
|
||
(*RASAPI*) var lpfPassword: LongBool): Longint; stdcall;
|
||
(*RASAPI*)
|
||
(*RASAPI*){**
|
||
(*RASAPI*)** raserror.h
|
||
(*RASAPI*)** Remote Access external API
|
||
(*RASAPI*)** RAS specific error codes *}
|
||
(*RASAPI*)
|
||
(*RASAPI*)const
|
||
(*RASAPI*) RASBASE = 600;
|
||
(*RASAPI*) SUCCESS = 0;
|
||
(*RASAPI*)
|
||
(*RASAPI*) PENDING = (RASBASE+0);
|
||
(*RASAPI*) ERROR_INVALID_PORT_HANDLE = (RASBASE+1);
|
||
(*RASAPI*) ERROR_PORT_ALREADY_OPEN = (RASBASE+2);
|
||
(*RASAPI*) ERROR_BUFFER_TOO_SMALL = (RASBASE+3);
|
||
(*RASAPI*) ERROR_WRONG_INFO_SPECIFIED = (RASBASE+4);
|
||
(*RASAPI*) ERROR_CANNOT_SET_PORT_INFO = (RASBASE+5);
|
||
(*RASAPI*) ERROR_PORT_NOT_CONNECTED = (RASBASE+6);
|
||
(*RASAPI*) ERROR_EVENT_INVALID = (RASBASE+7);
|
||
(*RASAPI*) ERROR_DEVICE_DOES_NOT_EXIST = (RASBASE+8);
|
||
(*RASAPI*) ERROR_DEVICETYPE_DOES_NOT_EXIST = (RASBASE+9);
|
||
(*RASAPI*) ERROR_BUFFER_INVALID = (RASBASE+10);
|
||
(*RASAPI*) ERROR_ROUTE_NOT_AVAILABLE = (RASBASE+11);
|
||
(*RASAPI*) ERROR_ROUTE_NOT_ALLOCATED = (RASBASE+12);
|
||
(*RASAPI*) ERROR_INVALID_COMPRESSION_SPECIFIED = (RASBASE+13);
|
||
(*RASAPI*) ERROR_OUT_OF_BUFFERS = (RASBASE+14);
|
||
(*RASAPI*) ERROR_PORT_NOT_FOUND = (RASBASE+15);
|
||
(*RASAPI*) ERROR_ASYNC_REQUEST_PENDING = (RASBASE+16);
|
||
(*RASAPI*) ERROR_ALREADY_DISCONNECTING = (RASBASE+17);
|
||
(*RASAPI*) ERROR_PORT_NOT_OPEN = (RASBASE+18);
|
||
(*RASAPI*) ERROR_PORT_DISCONNECTED = (RASBASE+19);
|
||
(*RASAPI*) ERROR_NO_ENDPOINTS = (RASBASE+20);
|
||
(*RASAPI*) ERROR_CANNOT_OPEN_PHONEBOOK = (RASBASE+21);
|
||
(*RASAPI*) ERROR_CANNOT_LOAD_PHONEBOOK = (RASBASE+22);
|
||
(*RASAPI*) ERROR_CANNOT_FIND_PHONEBOOK_ENTRY = (RASBASE+23);
|
||
(*RASAPI*) ERROR_CANNOT_WRITE_PHONEBOOK = (RASBASE+24);
|
||
(*RASAPI*) ERROR_CORRUPT_PHONEBOOK = (RASBASE+25);
|
||
(*RASAPI*) ERROR_CANNOT_LOAD_STRING = (RASBASE+26);
|
||
(*RASAPI*) ERROR_KEY_NOT_FOUND = (RASBASE+27);
|
||
(*RASAPI*) ERROR_DISCONNECTION = (RASBASE+28);
|
||
(*RASAPI*) ERROR_REMOTE_DISCONNECTION = (RASBASE+29);
|
||
(*RASAPI*) ERROR_HARDWARE_FAILURE = (RASBASE+30);
|
||
(*RASAPI*) ERROR_USER_DISCONNECTION = (RASBASE+31);
|
||
(*RASAPI*) ERROR_INVALID_SIZE = (RASBASE+32);
|
||
(*RASAPI*) ERROR_PORT_NOT_AVAILABLE = (RASBASE+33);
|
||
(*RASAPI*) ERROR_CANNOT_PROJECT_CLIENT = (RASBASE+34);
|
||
(*RASAPI*) ERROR_UNKNOWN = (RASBASE+35);
|
||
(*RASAPI*) ERROR_WRONG_DEVICE_ATTACHED = (RASBASE+36);
|
||
(*RASAPI*) ERROR_BAD_STRING = (RASBASE+37);
|
||
(*RASAPI*) ERROR_REQUEST_TIMEOUT = (RASBASE+38);
|
||
(*RASAPI*) ERROR_CANNOT_GET_LANA = (RASBASE+39);
|
||
(*RASAPI*) ERROR_NETBIOS_ERROR = (RASBASE+40);
|
||
(*RASAPI*) ERROR_SERVER_OUT_OF_RESOURCES = (RASBASE+41);
|
||
(*RASAPI*) ERROR_NAME_EXISTS_ON_NET = (RASBASE+42);
|
||
(*RASAPI*) ERROR_SERVER_GENERAL_NET_FAILURE = (RASBASE+43);
|
||
(*RASAPI*) WARNING_MSG_ALIAS_NOT_ADDED = (RASBASE+44);
|
||
(*RASAPI*) ERROR_AUTH_INTERNAL = (RASBASE+45);
|
||
(*RASAPI*) ERROR_RESTRICTED_LOGON_HOURS = (RASBASE+46);
|
||
(*RASAPI*) ERROR_ACCT_DISABLED = (RASBASE+47);
|
||
(*RASAPI*) ERROR_PASSWD_EXPIRED = (RASBASE+48);
|
||
(*RASAPI*) ERROR_NO_DIALIN_PERMISSION = (RASBASE+49);
|
||
(*RASAPI*) ERROR_SERVER_NOT_RESPONDING = (RASBASE+50);
|
||
(*RASAPI*) ERROR_FROM_DEVICE = (RASBASE+51);
|
||
(*RASAPI*) ERROR_UNRECOGNIZED_RESPONSE = (RASBASE+52);
|
||
(*RASAPI*) ERROR_MACRO_NOT_FOUND = (RASBASE+53);
|
||
(*RASAPI*) ERROR_MACRO_NOT_DEFINED = (RASBASE+54);
|
||
(*RASAPI*) ERROR_MESSAGE_MACRO_NOT_FOUND = (RASBASE+55);
|
||
(*RASAPI*) ERROR_DEFAULTOFF_MACRO_NOT_FOUND = (RASBASE+56);
|
||
(*RASAPI*) ERROR_FILE_COULD_NOT_BE_OPENED = (RASBASE+57);
|
||
(*RASAPI*) ERROR_DEVICENAME_TOO_LONG = (RASBASE+58);
|
||
(*RASAPI*) ERROR_DEVICENAME_NOT_FOUND = (RASBASE+59);
|
||
(*RASAPI*) ERROR_NO_RESPONSES = (RASBASE+60);
|
||
(*RASAPI*) ERROR_NO_COMMAND_FOUND = (RASBASE+61);
|
||
(*RASAPI*) ERROR_WRONG_KEY_SPECIFIED = (RASBASE+62);
|
||
(*RASAPI*) ERROR_UNKNOWN_DEVICE_TYPE = (RASBASE+63);
|
||
(*RASAPI*) ERROR_ALLOCATING_MEMORY = (RASBASE+64);
|
||
(*RASAPI*) ERROR_PORT_NOT_CONFIGURED = (RASBASE+65);
|
||
(*RASAPI*) ERROR_DEVICE_NOT_READY = (RASBASE+66);
|
||
(*RASAPI*) ERROR_READING_INI_FILE = (RASBASE+67);
|
||
(*RASAPI*) ERROR_NO_CONNECTION = (RASBASE+68);
|
||
(*RASAPI*) ERROR_BAD_USAGE_IN_INI_FILE = (RASBASE+69);
|
||
(*RASAPI*) ERROR_READING_SECTIONNAME = (RASBASE+70);
|
||
(*RASAPI*) ERROR_READING_DEVICETYPE = (RASBASE+71);
|
||
(*RASAPI*) ERROR_READING_DEVICENAME = (RASBASE+72);
|
||
(*RASAPI*) ERROR_READING_USAGE = (RASBASE+73);
|
||
(*RASAPI*) ERROR_READING_MAXCONNECTBPS = (RASBASE+74);
|
||
(*RASAPI*) ERROR_READING_MAXCARRIERBPS = (RASBASE+75);
|
||
(*RASAPI*) ERROR_LINE_BUSY = (RASBASE+76);
|
||
(*RASAPI*) ERROR_VOICE_ANSWER = (RASBASE+77);
|
||
(*RASAPI*) ERROR_NO_ANSWER = (RASBASE+78);
|
||
(*RASAPI*) ERROR_NO_CARRIER = (RASBASE+79);
|
||
(*RASAPI*) ERROR_NO_DIALTONE = (RASBASE+80);
|
||
(*RASAPI*) ERROR_IN_COMMAND = (RASBASE+81);
|
||
(*RASAPI*) ERROR_WRITING_SECTIONNAME = (RASBASE+82);
|
||
(*RASAPI*) ERROR_WRITING_DEVICETYPE = (RASBASE+83);
|
||
(*RASAPI*) ERROR_WRITING_DEVICENAME = (RASBASE+84);
|
||
(*RASAPI*) ERROR_WRITING_MAXCONNECTBPS = (RASBASE+85);
|
||
(*RASAPI*) ERROR_WRITING_MAXCARRIERBPS = (RASBASE+86);
|
||
(*RASAPI*) ERROR_WRITING_USAGE = (RASBASE+87);
|
||
(*RASAPI*) ERROR_WRITING_DEFAULTOFF = (RASBASE+88);
|
||
(*RASAPI*) ERROR_READING_DEFAULTOFF = (RASBASE+89);
|
||
(*RASAPI*) ERROR_EMPTY_INI_FILE = (RASBASE+90);
|
||
(*RASAPI*) ERROR_AUTHENTICATION_FAILURE = (RASBASE+91);
|
||
(*RASAPI*) ERROR_PORT_OR_DEVICE = (RASBASE+92);
|
||
(*RASAPI*) ERROR_NOT_BINARY_MACRO = (RASBASE+93);
|
||
(*RASAPI*) ERROR_DCB_NOT_FOUND = (RASBASE+94);
|
||
(*RASAPI*) ERROR_STATE_MACHINES_NOT_STARTED = (RASBASE+95);
|
||
(*RASAPI*) ERROR_STATE_MACHINES_ALREADY_STARTED = (RASBASE+96);
|
||
(*RASAPI*) ERROR_PARTIAL_RESPONSE_LOOPING = (RASBASE+97);
|
||
(*RASAPI*) ERROR_UNKNOWN_RESPONSE_KEY = (RASBASE+98);
|
||
(*RASAPI*) ERROR_RECV_BUF_FULL = (RASBASE+99);
|
||
(*RASAPI*) ERROR_CMD_TOO_LONG = (RASBASE+100);
|
||
(*RASAPI*) ERROR_UNSUPPORTED_BPS = (RASBASE+101);
|
||
(*RASAPI*) ERROR_UNEXPECTED_RESPONSE = (RASBASE+102);
|
||
(*RASAPI*) ERROR_INTERACTIVE_MODE = (RASBASE+103);
|
||
(*RASAPI*) ERROR_BAD_CALLBACK_NUMBER = (RASBASE+104);
|
||
(*RASAPI*) ERROR_INVALID_AUTH_STATE = (RASBASE+105);
|
||
(*RASAPI*) ERROR_WRITING_INITBPS = (RASBASE+106);
|
||
(*RASAPI*) ERROR_X25_DIAGNOSTIC = (RASBASE+107);
|
||
(*RASAPI*) ERROR_ACCT_EXPIRED = (RASBASE+108);
|
||
(*RASAPI*) ERROR_CHANGING_PASSWORD = (RASBASE+109);
|
||
(*RASAPI*) ERROR_OVERRUN = (RASBASE+110);
|
||
(*RASAPI*) ERROR_RASMAN_CANNOT_INITIALIZE = (RASBASE+111);
|
||
(*RASAPI*) ERROR_BIPLEX_PORT_NOT_AVAILABLE = (RASBASE+112);
|
||
(*RASAPI*) ERROR_NO_ACTIVE_ISDN_LINES = (RASBASE+113);
|
||
(*RASAPI*) ERROR_NO_ISDN_CHANNELS_AVAILABLE = (RASBASE+114);
|
||
(*RASAPI*) ERROR_TOO_MANY_LINE_ERRORS = (RASBASE+115);
|
||
(*RASAPI*) ERROR_IP_CONFIGURATION = (RASBASE+116);
|
||
(*RASAPI*) ERROR_NO_IP_ADDRESSES = (RASBASE+117);
|
||
(*RASAPI*) ERROR_PPP_TIMEOUT = (RASBASE+118);
|
||
(*RASAPI*) ERROR_PPP_REMOTE_TERMINATED = (RASBASE+119);
|
||
(*RASAPI*) ERROR_PPP_NO_PROTOCOLS_CONFIGURED = (RASBASE+120);
|
||
(*RASAPI*) ERROR_PPP_NO_RESPONSE = (RASBASE+121);
|
||
(*RASAPI*) ERROR_PPP_INVALID_PACKET = (RASBASE+122);
|
||
(*RASAPI*) ERROR_PHONE_NUMBER_TOO_LONG = (RASBASE+123);
|
||
(*RASAPI*) ERROR_IPXCP_NO_DIALOUT_CONFIGURED = (RASBASE+124);
|
||
(*RASAPI*) ERROR_IPXCP_NO_DIALIN_CONFIGURED = (RASBASE+125);
|
||
(*RASAPI*) ERROR_IPXCP_DIALOUT_ALREADY_ACTIVE = (RASBASE+126);
|
||
(*RASAPI*) ERROR_ACCESSING_TCPCFGDLL = (RASBASE+127);
|
||
(*RASAPI*) ERROR_NO_IP_RAS_ADAPTER = (RASBASE+128);
|
||
(*RASAPI*) ERROR_SLIP_REQUIRES_IP = (RASBASE+129);
|
||
(*RASAPI*) ERROR_PROJECTION_NOT_COMPLETE = (RASBASE+130);
|
||
(*RASAPI*) ERROR_PROTOCOL_NOT_CONFIGURED = (RASBASE+131);
|
||
(*RASAPI*) ERROR_PPP_NOT_CONVERGING = (RASBASE+132);
|
||
(*RASAPI*) ERROR_PPP_CP_REJECTED = (RASBASE+133);
|
||
(*RASAPI*) ERROR_PPP_LCP_TERMINATED = (RASBASE+134);
|
||
(*RASAPI*) ERROR_PPP_REQUIRED_ADDRESS_REJECTED = (RASBASE+135);
|
||
(*RASAPI*) ERROR_PPP_NCP_TERMINATED = (RASBASE+136);
|
||
(*RASAPI*) ERROR_PPP_LOOPBACK_DETECTED = (RASBASE+137);
|
||
(*RASAPI*) ERROR_PPP_NO_ADDRESS_ASSIGNED = (RASBASE+138);
|
||
(*RASAPI*) ERROR_CANNOT_USE_LOGON_CREDENTIALS = (RASBASE+139);
|
||
(*RASAPI*) ERROR_TAPI_CONFIGURATION = (RASBASE+140);
|
||
(*RASAPI*) ERROR_NO_LOCAL_ENCRYPTION = (RASBASE+141);
|
||
(*RASAPI*) ERROR_NO_REMOTE_ENCRYPTION = (RASBASE+142);
|
||
(*RASAPI*) ERROR_REMOTE_REQUIRES_ENCRYPTION = (RASBASE+143);
|
||
(*RASAPI*) ERROR_IPXCP_NET_NUMBER_CONFLICT = (RASBASE+144);
|
||
(*RASAPI*) ERROR_INVALID_SMM = (RASBASE+145);
|
||
(*RASAPI*) ERROR_SMM_UNINITIALIZED = (RASBASE+146);
|
||
(*RASAPI*) ERROR_NO_MAC_FOR_PORT = (RASBASE+147);
|
||
(*RASAPI*) ERROR_SMM_TIMEOUT = (RASBASE+148);
|
||
(*RASAPI*) ERROR_BAD_PHONE_NUMBER = (RASBASE+149);
|
||
(*RASAPI*) ERROR_WRONG_MODULE = (RASBASE+150);
|
||
(*RASAPI*)
|
||
(*RASAPI*) RASBASEEND = (RASBASE+150);
|
||
(*RASAPI*)
|
||
(*RASAPI*){* Copyright (c) 1995, Microsoft Corporation, all rights reserved
|
||
(*RASAPI*)**
|
||
(*RASAPI*)** rnaph.h (to be merged with ras.h)
|
||
(*RASAPI*)**
|
||
(*RASAPI*)** Remote Access external API
|
||
(*RASAPI*)** Public header for external API clients
|
||
(*RASAPI*)**}
|
||
(*RASAPI*)
|
||
(*RASAPI*){*
|
||
(*RASAPI*) Original conversion by Gideon le Grange <legrang@adept.co.za>
|
||
(*RASAPI*) Merged with ras.pas by Davide Moretti <dmoretti@iper.net>
|
||
(*RASAPI*)*}
|
||
(*RASAPI*)
|
||
(*RASAPI*)const
|
||
(*RASAPI*) RAS_MaxAreaCode = 10;
|
||
(*RASAPI*) RAS_MaxPadType = 32;
|
||
(*RASAPI*) RAS_MaxX25Address = 200;
|
||
(*RASAPI*) RAS_MaxFacilities = 200;
|
||
(*RASAPI*) RAS_MaxUserData = 200;
|
||
(*RASAPI*)
|
||
(*RASAPI*)
|
||
(*RASAPI*)type
|
||
(*RASAPI*)(* Describes a RAS IP Address *)
|
||
(*RASAPI*) LPRasIPAddr = ^TRasIPAddr;
|
||
(*RASAPI*) TRasIPAddr = record
|
||
(*RASAPI*) A, B, C, D: Byte;
|
||
(*RASAPI*) end;
|
||
(*RASAPI*)
|
||
(*RASAPI*)(* Describes a RAS phonebook entry *)
|
||
(*RASAPI*) LPRasEntryA = ^TRasEntryA;
|
||
(*RASAPI*) TRasEntryA = record
|
||
(*RASAPI*) dwSize,
|
||
(*RASAPI*) dwfOptions,
|
||
(*RASAPI*) dwCountryID,
|
||
(*RASAPI*) dwCountryCode : Longint;
|
||
(*RASAPI*) szAreaCode : array[0.. RAS_MaxAreaCode] of AnsiChar;
|
||
(*RASAPI*) szLocalPhoneNumber : array[0..RAS_MaxPhoneNumber] of AnsiChar;
|
||
(*RASAPI*) dwAlternatesOffset : Longint;
|
||
(*RASAPI*) ipaddr,
|
||
(*RASAPI*) ipaddrDns,
|
||
(*RASAPI*) ipaddrDnsAlt,
|
||
(*RASAPI*) ipaddrWins,
|
||
(*RASAPI*) ipaddrWinsAlt : TRasIPAddr;
|
||
(*RASAPI*) dwFrameSize,
|
||
(*RASAPI*) dwfNetProtocols,
|
||
(*RASAPI*) dwFramingProtocol : Longint;
|
||
(*RASAPI*) szScript : Array[0..MAX_PATH - 1] of AnsiChar;
|
||
(*RASAPI*) szAutodialDll : Array [0..MAX_PATH - 1] of AnsiChar;
|
||
(*RASAPI*) szAutodialFunc : Array [0..MAX_PATH - 1] of AnsiChar;
|
||
(*RASAPI*) szDeviceType : Array [0..RAS_MaxDeviceType] of AnsiChar;
|
||
(*RASAPI*) szDeviceName : Array [0..RAS_MaxDeviceName] of AnsiChar;
|
||
(*RASAPI*) szX25PadType : Array [0..RAS_MaxPadType] of AnsiChar;
|
||
(*RASAPI*) szX25Address : Array [0..RAS_MaxX25Address] of AnsiChar;
|
||
(*RASAPI*) szX25Facilities : Array [0..RAS_MaxFacilities] of AnsiChar;
|
||
(*RASAPI*) szX25UserData : Array [0..RAS_MaxUserData] of AnsiChar;
|
||
(*RASAPI*) dwChannels,
|
||
(*RASAPI*) dwReserved1,
|
||
(*RASAPI*) dwReserved2 : Longint;
|
||
(*RASAPI*) end;
|
||
(*RASAPI*)
|
||
(*RASAPI*) LPRasEntryW = ^TRasEntryW;
|
||
(*RASAPI*) TRasEntryW = record
|
||
(*RASAPI*) dwSize,
|
||
(*RASAPI*) dwfOptions,
|
||
(*RASAPI*) dwCountryID,
|
||
(*RASAPI*) dwCountryCode : Longint;
|
||
(*RASAPI*) szAreaCode : array[0.. RAS_MaxAreaCode] of WideChar;
|
||
(*RASAPI*) szLocalPhoneNumber : array[0..RAS_MaxPhoneNumber] of WideChar;
|
||
(*RASAPI*) dwAlternatesOffset : Longint;
|
||
(*RASAPI*) ipaddr,
|
||
(*RASAPI*) ipaddrDns,
|
||
(*RASAPI*) ipaddrDnsAlt,
|
||
(*RASAPI*) ipaddrWins,
|
||
(*RASAPI*) ipaddrWinsAlt : TRasIPAddr;
|
||
(*RASAPI*) dwFrameSize,
|
||
(*RASAPI*) dwfNetProtocols,
|
||
(*RASAPI*) dwFramingProtocol : Longint;
|
||
(*RASAPI*) szScript : Array[0..MAX_PATH - 1] of WideChar;
|
||
(*RASAPI*) szAutodialDll : Array [0..MAX_PATH - 1] of WideChar;
|
||
(*RASAPI*) szAutodialFunc : Array [0..MAX_PATH - 1] of WideChar;
|
||
(*RASAPI*) szDeviceType : Array [0..RAS_MaxDeviceType] of WideChar;
|
||
(*RASAPI*) szDeviceName : Array [0..RAS_MaxDeviceName] of WideChar;
|
||
(*RASAPI*) szX25PadType : Array [0..RAS_MaxPadType] of WideChar;
|
||
(*RASAPI*) szX25Address : Array [0..RAS_MaxX25Address] of WideChar;
|
||
(*RASAPI*) szX25Facilities : Array [0..RAS_MaxFacilities] of WideChar;
|
||
(*RASAPI*) szX25UserData : Array [0..RAS_MaxUserData] of WideChar;
|
||
(*RASAPI*) dwChannels,
|
||
(*RASAPI*) dwReserved1,
|
||
(*RASAPI*) dwReserved2 : Longint;
|
||
(*RASAPI*) end;
|
||
(*RASAPI*)
|
||
(*RASAPI*) LPRasEntry = ^TRasEntry;
|
||
(*RASAPI*) TRasEntry = TRasEntryA;
|
||
(*RASAPI*)
|
||
(*RASAPI*)(* Describes Country Information *)
|
||
(*RASAPI*) LPRasCtryInfo = ^TRasCtryInfo;
|
||
(*RASAPI*) TRasCtryInfo = record
|
||
(*RASAPI*) dwSize,
|
||
(*RASAPI*) dwCountryID,
|
||
(*RASAPI*) dwNextCountryID,
|
||
(*RASAPI*) dwCountryCode,
|
||
(*RASAPI*) dwCountryNameOffset : Longint;
|
||
(*RASAPI*) end;
|
||
(*RASAPI*)
|
||
(*RASAPI*)(* Describes RAS Device Information *)
|
||
(*RASAPI*) LPRasDevInfoA = ^TRasDevInfoA;
|
||
(*RASAPI*) TRasDevInfoA = record
|
||
(*RASAPI*) dwSize : Longint;
|
||
(*RASAPI*) szDeviceType : Array[0..RAS_MaxDeviceType] of AnsiChar;
|
||
(*RASAPI*) szDeviceName : Array[0..RAS_MaxDeviceName] of AnsiChar;
|
||
(*RASAPI*) end;
|
||
(*RASAPI*)
|
||
(*RASAPI*) LPRasDevInfoW = ^TRasDevInfoW;
|
||
(*RASAPI*) TRasDevInfoW = record
|
||
(*RASAPI*) dwSize : Longint;
|
||
(*RASAPI*) szDeviceType : Array[0..RAS_MaxDeviceType] of WideChar;
|
||
(*RASAPI*) szDeviceName : Array[0..RAS_MaxDeviceName] of WideChar;
|
||
(*RASAPI*) end;
|
||
(*RASAPI*)
|
||
(*RASAPI*) LPRasDevInfo = ^TRasDevInfo;
|
||
(*RASAPI*) TRasDevInfo = TRasDevInfoA;
|
||
(*RASAPI*)
|
||
(*RASAPI*)const
|
||
(*RASAPI*)(* TRasEntry 'dwfOptions' bit flags. *)
|
||
(*RASAPI*) RASEO_UseCountryAndAreaCodes = $00000001;
|
||
(*RASAPI*) RASEO_SpecificIpAddr = $00000002;
|
||
(*RASAPI*) RASEO_SpecificNameServers = $00000004;
|
||
(*RASAPI*) RASEO_IpHeaderCompression = $00000008;
|
||
(*RASAPI*) RASEO_RemoteDefaultGateway = $00000010;
|
||
(*RASAPI*) RASEO_DisableLcpExtensions = $00000020;
|
||
(*RASAPI*) RASEO_TerminalBeforeDial = $00000040;
|
||
(*RASAPI*) RASEO_TerminalAfterDial = $00000080;
|
||
(*RASAPI*) RASEO_ModemLights = $00000100;
|
||
(*RASAPI*) RASEO_SwCompression = $00000200;
|
||
(*RASAPI*) RASEO_RequireEncryptedPw = $00000400;
|
||
(*RASAPI*) RASEO_RequireMsEncryptedPw = $00000800;
|
||
(*RASAPI*) RASEO_RequireDataEncryption = $00001000;
|
||
(*RASAPI*) RASEO_NetworkLogon = $00002000;
|
||
(*RASAPI*) RASEO_UseLogonCredentials = $00004000;
|
||
(*RASAPI*) RASEO_PromoteAlternates = $00008000;
|
||
(*RASAPI*)
|
||
(*RASAPI*)(* TRasEntry 'dwfNetProtocols' bit flags. (session negotiated protocols) *)
|
||
(*RASAPI*) RASNP_Netbeui = $00000001; // Negotiate NetBEUI
|
||
(*RASAPI*) RASNP_Ipx = $00000002; // Negotiate IPX
|
||
(*RASAPI*) RASNP_Ip = $00000004; // Negotiate TCP/IP
|
||
(*RASAPI*)
|
||
(*RASAPI*)(* TRasEntry 'dwFramingProtocols' (framing protocols used by the server) *)
|
||
(*RASAPI*) RASFP_Ppp = $00000001; // Point-to-Point Protocol (PPP)
|
||
(*RASAPI*) RASFP_Slip = $00000002; // Serial Line Internet Protocol (SLIP)
|
||
(*RASAPI*) RASFP_Ras = $00000004; // Microsoft proprietary protocol
|
||
(*RASAPI*)
|
||
(*RASAPI*)(* TRasEntry 'szDeviceType' strings *)
|
||
(*RASAPI*) RASDT_Modem = 'modem'; // Modem
|
||
(*RASAPI*) RASDT_Isdn = 'isdn'; // ISDN
|
||
(*RASAPI*) RASDT_X25 = 'x25'; // X.25
|
||
(*RASAPI*)
|
||
(*RASAPI*)(* RAS functions found in RNAPH.DLL *)
|
||
(*RASAPI*)function RasValidateEntryNameA(lpszPhonebook,szEntry: PAnsiChar): Longint; stdcall;
|
||
(*RASAPI*)function RasValidateEntryNameW(lpszPhonebook,szEntry: PWideChar): Longint; stdcall;
|
||
(*RASAPI*)function RasValidateEntryName(lpszPhonebook,szEntry: PAnsiChar): Longint; stdcall;
|
||
(*RASAPI*)
|
||
(*RASAPI*)function RasRenameEntryA(lpszPhonebook,szEntryOld,szEntryNew: PAnsiChar): Longint; stdcall;
|
||
(*RASAPI*)function RasRenameEntryW(lpszPhonebook,szEntryOld,szEntryNew: PWideChar): Longint; stdcall;
|
||
(*RASAPI*)function RasRenameEntry(lpszPhonebook,szEntryOld,szEntryNew: PAnsiChar): Longint; stdcall;
|
||
(*RASAPI*)
|
||
(*RASAPI*)function RasDeleteEntryA(lpszPhonebook,szEntry: PAnsiChar): Longint; stdcall;
|
||
(*RASAPI*)function RasDeleteEntryW(lpszPhonebook,szEntry: PWideChar): Longint; stdcall;
|
||
(*RASAPI*)function RasDeleteEntry(lpszPhonebook,szEntry: PAnsiChar): Longint; stdcall;
|
||
(*RASAPI*)
|
||
(*RASAPI*)function RasGetEntryPropertiesA(lpszPhonebook, szEntry: PAnsiChar; lpbEntry: Pointer;
|
||
(*RASAPI*) var lpdwEntrySize: Longint; lpbDeviceInfo: Pointer;
|
||
(*RASAPI*) var lpdwDeviceInfoSize: Longint): Longint; stdcall;
|
||
(*RASAPI*)function RasGetEntryPropertiesW(lpszPhonebook, szEntry: PWideChar; lpbEntry: Pointer;
|
||
(*RASAPI*) var lpdwEntrySize: Longint; lpbDeviceInfo: Pointer;
|
||
(*RASAPI*) var lpdwDeviceInfoSize: Longint): Longint; stdcall;
|
||
(*RASAPI*)function RasGetEntryProperties(lpszPhonebook, szEntry: PAnsiChar; lpbEntry: Pointer;
|
||
(*RASAPI*) var lpdwEntrySize: Longint; lpbDeviceInfo: Pointer;
|
||
(*RASAPI*) var lpdwDeviceInfoSize: Longint): Longint; stdcall;
|
||
(*RASAPI*)
|
||
(*RASAPI*)function RasSetEntryPropertiesA(lpszPhonebook, szEntry: PAnsiChar; lpbEntry: Pointer;
|
||
(*RASAPI*) dwEntrySize: Longint; lpbDeviceInfo: Pointer;
|
||
(*RASAPI*) dwDeviceInfoSize: Longint): Longint; stdcall;
|
||
(*RASAPI*)function RasSetEntryPropertiesW(lpszPhonebook, szEntry: PWideChar; lpbEntry: Pointer;
|
||
(*RASAPI*) dwEntrySize: Longint; lpbDeviceInfo: Pointer;
|
||
(*RASAPI*) dwDeviceInfoSize: Longint): Longint; stdcall;
|
||
(*RASAPI*)function RasSetEntryProperties(lpszPhonebook, szEntry: PAnsiChar; lpbEntry: Pointer;
|
||
(*RASAPI*) dwEntrySize: Longint; lpbDeviceInfo: Pointer;
|
||
(*RASAPI*) dwDeviceInfoSize: Longint): Longint; stdcall;
|
||
(*RASAPI*)
|
||
(*RASAPI*)function RasGetCountryInfoA(var lpCtryInfo: TRasCtryInfo;var lpdwSize: Longint): Longint; stdcall;
|
||
(*RASAPI*)function RasGetCountryInfoW(var lpCtryInfo: TRasCtryInfo;var lpdwSize: Longint): Longint; stdcall;
|
||
(*RASAPI*)function RasGetCountryInfo(var lpCtryInfo: TRasCtryInfo;var lpdwSize: Longint): Longint; stdcall;
|
||
(*RASAPI*)
|
||
(*RASAPI*)function RasEnumDevicesA(lpBuff: LpRasDevInfoA; var lpcbSize: Longint;
|
||
(*RASAPI*) var lpcDevices: Longint): Longint; stdcall;
|
||
(*RASAPI*)function RasEnumDevicesW(lpBuff: LpRasDevInfoW; var lpcbSize: Longint;
|
||
(*RASAPI*) var lpcDevices: Longint): Longint; stdcall;
|
||
(*RASAPI*)function RasEnumDevices(lpBuff: LpRasDevInfo; var lpcbSize: Longint;
|
||
(*RASAPI*) var lpcDevices: Longint): Longint; stdcall;
|
||
(*RASAPI*)
|
||
{******************************************************}
|
||
{******************************************************}
|
||
{******************************************************}
|
||
{******************************************************}
|
||
{******************************************************}
|
||
{******************************************************}
|
||
|
||
const MaxEntries = 100; //It's enough
|
||
|
||
type
|
||
|
||
(* TOnEntryGet = procedure (Sender : TObject; EntryName : Array of {Ansi}Char) of Object;*)
|
||
TOnEntryGet = procedure (Sender : TObject; EntryName : String ) of Object;
|
||
TStandartEv = procedure (Sender : TObject) of object;
|
||
TOnNotConn = procedure (Sender : TObject; ErrorCode : Integer; ErrorMessage : String) of object;
|
||
TOnAsyncEvent = procedure (Sender : TObject; State : TRasConnState; Error : Integer;
|
||
MessageText : String) of object;
|
||
TOnError = procedure (Sender : TObject; ErrorCode : Integer; ErrorMessage : String) of Object;
|
||
TOnActiveConn = procedure (Sender : TObject; Handle : THRasConn; Status : TRasConnStatus;
|
||
StatusString : String;
|
||
EntryName, DeviceType, DeviceName : String ) of object;
|
||
// EntryName, DeviceType, DeviceName : Array of Char) of object;
|
||
|
||
TDialMode = (dmAsync,dmSync); //dmAsync - Function will exit BEFORE finishing dialing
|
||
// Events : onDialing,onError,onAsyncEvent
|
||
//dmSync - Function will exit AFTER finishing dialing
|
||
// Events : onDialing,onConnect,onNotConnected
|
||
|
||
TLanguage = (English,Czech);
|
||
|
||
TDialUp = class(TComponent)
|
||
private
|
||
FEntries : TStringList;
|
||
FDialMode : TDialMode;
|
||
FEntry2Dial : String;
|
||
FLanguage : TLanguage;
|
||
|
||
FTimer : TTimer;
|
||
|
||
FOnEntryGet : TOnEntryGet;
|
||
FOnDialing, FOnConnected : TStandartEv;
|
||
FOnNotConnected : TOnNotConn;
|
||
FOnAsyncEvent : TOnAsyncEvent;
|
||
FOnError : TOnError;
|
||
FOnActiveConn : TOnActiveConn;
|
||
|
||
protected
|
||
procedure Timer(Sender: TObject); virtual;
|
||
|
||
public
|
||
hRAS : ThRASConn; {Handle to RAS connection dialed with by this component when connected}
|
||
AsyncStatus : Boolean;
|
||
AMsg,AError : Integer;
|
||
AState : TRasConnState;
|
||
|
||
constructor Create(AOwner:TComponent); override;
|
||
destructor Destroy; override;
|
||
function Dial : Integer;
|
||
function GetEntries : Integer;
|
||
function GetConnections : Integer;
|
||
function HangUp : Integer;
|
||
function HangUpConn(Handle : THRasConn) : Integer;
|
||
function CreateEntry : Integer;
|
||
function EditEntry : Integer;
|
||
function DeleteEntry : Integer;
|
||
function RenameEntryTo(S : String) : Integer;
|
||
function SetEntryUserName(Value : String) : Integer;
|
||
function SetEntryPassword(Value : String) : Integer;
|
||
function RemovePassword : Integer;
|
||
function GetEntryUserName(var Value : String) : Integer;
|
||
function GetEntryPassword(var Value : String) : Integer;
|
||
function StatusString(State: TRasConnState; Error: Integer): String;
|
||
function StatusStringCZ(State: TRasConnState; Error: Integer): String;
|
||
|
||
published
|
||
property Name;
|
||
property Tag;
|
||
property DialMode : TDialMode
|
||
read FDialMode write FDialMode;
|
||
property Entries : TStringList
|
||
read FEntries;
|
||
property Entry : String
|
||
read FEntry2Dial write FEntry2Dial;
|
||
property Language : TLanguage
|
||
read FLanguage write FLanguage;
|
||
|
||
property OnEntryGet : TOnEntryGet
|
||
read FOnEntryGet write FOnEntryGet;
|
||
property OnDialing : TStandartEv
|
||
read FOnDialing write FOnDialing;
|
||
property OnConnect : TStandartEv
|
||
read FOnConnected write FOnConnected;
|
||
property OnNotConnected : TOnNotConn
|
||
read FOnNotConnected write FOnNotConnected;
|
||
property OnAsyncEvent : TOnAsyncEvent
|
||
read FOnAsyncEvent write FOnAsyncEvent;
|
||
property OnError : TOnError
|
||
read FOnError write FOnError;
|
||
property OnActiveConnection : TOnActiveConn
|
||
read FOnActiveConn write FOnActiveConn;
|
||
|
||
end;
|
||
|
||
procedure Register;
|
||
|
||
implementation
|
||
|
||
var xSelf : Pointer;
|
||
|
||
procedure TDialUp.Timer(Sender: TObject);
|
||
begin
|
||
FTimer.Enabled:=False;
|
||
if AsyncStatus=False then Exit;
|
||
if Language=Czech then
|
||
begin
|
||
if Assigned(FOnAsyncEvent) then FOnAsyncEvent(Self,AState,AError,StatusStringCZ(AState, AError));
|
||
end else
|
||
begin
|
||
if Assigned(FOnAsyncEvent) then FOnAsyncEvent(Self,AState,AError,StatusString(AState, AError));
|
||
end;
|
||
AsyncStatus:=False;
|
||
end;
|
||
|
||
|
||
procedure RasCallback(msg: Integer; state: TRasConnState;
|
||
error: Integer); stdcall;
|
||
begin
|
||
While TDialUp(xSelf).AsyncStatus=True do ;
|
||
TDialUp(xSelf).AsyncStatus:=True;
|
||
TDialUp(xSelf).AMsg:=Msg;
|
||
TDialUp(xSelf).AState:=State;
|
||
TDialUp(xSelf).AError:=Error;
|
||
TDialUp(xSelf).FTimer.Enabled:=True;
|
||
// TDialUp(xSelf).FOnDialing(xSelf);
|
||
// TDialUp(xSelf).OnAsyncEvent(xSelf,State,Error,TDialUp(xSelf).StatusString(state, error));
|
||
end;
|
||
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
|
||
|
||
//procedure RasCallback(Msg: Integer; State: TRasConnState; Error: Integer); stdcall; forward;
|
||
|
||
procedure Register;
|
||
begin
|
||
RegisterComponents('Internet',[TDialUp]);
|
||
end;
|
||
|
||
|
||
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
|
||
|
||
constructor TDialUp.Create(AOwner:TComponent);
|
||
begin
|
||
inherited Create(AOwner);
|
||
AsyncStatus:=False;
|
||
FEntries:=TStringList.Create;
|
||
FTimer:=TTimer.Create(Self);
|
||
FTimer.Enabled:=False; FTimer.Interval:=1;
|
||
FTimer.OnTimer:=Timer;
|
||
end;
|
||
|
||
|
||
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
|
||
|
||
destructor TDialUp.Destroy;
|
||
begin
|
||
inherited Destroy;
|
||
FEntries.Free;
|
||
end;
|
||
|
||
|
||
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
|
||
|
||
Function TDialUp.Dial : Integer;
|
||
var
|
||
Fp : LongBool;
|
||
R : Integer;
|
||
C : Array[0..100] of Char;
|
||
ErrS : String;
|
||
DialParams : TRasDialParams;
|
||
|
||
begin
|
||
HangUp;
|
||
|
||
FillChar(DialParams, SizeOf(TRasDialParams), 0);
|
||
with DialParams do
|
||
begin
|
||
dwSize:=Sizeof(TRasDialParams);
|
||
StrPCopy(szEntryName, FEntry2Dial);
|
||
end;
|
||
|
||
R:=RasGetEntryDialParams(nil, DialParams, Fp);
|
||
if R<>0 then
|
||
begin
|
||
Result:=R;
|
||
if Assigned(FOnError) then FOnError(Self,R,'GetEntryDialParams failed');
|
||
Exit;
|
||
end;
|
||
|
||
hRAS:=0;
|
||
if DialMode=dmSync then // Synchronous dial
|
||
begin
|
||
if Assigned(FOnDialing) then FOnDialing(Self);
|
||
R:=RasDial(nil, nil, DialParams, 0, nil, hRAS);
|
||
if R=0 then
|
||
begin
|
||
if Assigned(FOnConnected) then
|
||
FOnConnected(Self)
|
||
end else
|
||
begin
|
||
if hRas<>0 then
|
||
RasHangUp(hRas);
|
||
RasGetErrorString(R, C, 100); ErrS:=C;
|
||
if Assigned(FOnNotConnected) then FOnNotConnected(Self,R,ErrS);
|
||
end;
|
||
end else // Asynchronous dial
|
||
|
||
begin
|
||
// Async dial
|
||
xSelf:=Self;
|
||
if Assigned(FOnDialing) then FOnDialing(Self);
|
||
R:=RasDial(nil, nil, DialParams, 0, @RasCallback, hRAS);
|
||
if R<>0 then
|
||
begin
|
||
RasGetErrorString(R,C,100);
|
||
if Assigned(FOnError) then FOnError(Self,R,C);
|
||
end;
|
||
end;
|
||
Result:=R;
|
||
end;
|
||
|
||
|
||
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
|
||
|
||
Function TDialUp.GetEntries : Integer;
|
||
var
|
||
BuffSize : Integer;
|
||
Entries : Integer;
|
||
Entry : Array[1..MaxEntries] of TRasEntryName;
|
||
X,Result_ : Integer;
|
||
begin
|
||
Result:=0;
|
||
FEntries.Clear;
|
||
Entry[1].dwSize:=SizeOf(TRasEntryName);
|
||
BuffSize:=SizeOf(TRasEntryName)*MaxEntries;
|
||
Result_:=RasEnumEntries(nil, nil, @Entry[1], BuffSize, Entries);
|
||
if (Result_=0) and (Entries>0) then
|
||
begin
|
||
for X:=1 to Entries do
|
||
begin
|
||
FEntries.Add(Entry[x].szEntryName);
|
||
If Assigned(FOnEntryGet) then FOnEntryGet(Self,Entry[x].szEntryName);
|
||
end;
|
||
end else
|
||
Result:=Result_;
|
||
end;
|
||
|
||
|
||
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
|
||
|
||
Function TDialUp.GetConnections : Integer;
|
||
var
|
||
BufSize : Integer;
|
||
NumEntries : Integer;
|
||
X : Integer;
|
||
Entries : Array[1..MaxEntries] of TRasConn;
|
||
Stat : TRasConnStatus;
|
||
Result_ : Integer;
|
||
S : String;
|
||
begin
|
||
Result:=0;
|
||
|
||
Entries[1].dwSize := SizeOf(TRasConn);
|
||
Bufsize:=SizeOf(TRasConn)*MaxEntries;
|
||
FillChar(Stat, Sizeof(TRasConnStatus), 0);
|
||
Stat.dwSize:=Sizeof(TRasConnStatus);
|
||
|
||
Result_:=RasEnumConnections(@Entries[1], BufSize, NumEntries);
|
||
if Result_=0 then
|
||
begin
|
||
if NumEntries > 0 then
|
||
|
||
for X:=1 to NumEntries do
|
||
begin
|
||
RasGetConnectStatus(Entries[X].HRasConn, Stat);
|
||
if Language=Czech then S:=StatusStringCZ(Stat.RasConnState, Stat.dwError) else
|
||
S:=StatusString(Stat.RasConnState, Stat.dwError);
|
||
if Assigned(FOnActiveConn) then FOnActiveConn(Self, Entries[X].HRasConn,
|
||
Stat, S,
|
||
Entries[X].szEntryName,
|
||
Entries[X].szDeviceType,
|
||
Entries[X].szDeviceName);
|
||
end;
|
||
end else Result:=Result_;
|
||
end;
|
||
|
||
|
||
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
|
||
|
||
Function TDialUp.HangUp : Integer;
|
||
begin
|
||
Result:=RasHangUp(hRas);
|
||
end;
|
||
|
||
|
||
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
|
||
|
||
Function TDialUp.HangUpConn(Handle : THRasConn) : Integer;
|
||
begin
|
||
Result:=RasHangUp(Handle);
|
||
end;
|
||
|
||
|
||
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
|
||
|
||
|
||
Function TDialUp.CreateEntry : Integer;
|
||
begin
|
||
if (Owner is TForm) then
|
||
Result:=RasCreatePhonebookEntry((Owner as TForm).Handle, nil) else
|
||
Result:=RasCreatePhonebookEntry(0, nil);
|
||
end;
|
||
|
||
|
||
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
|
||
|
||
Function TDialUp.EditEntry : Integer;
|
||
begin
|
||
if (Owner is TForm) then
|
||
Result:=RasEditPhonebookEntry((Owner as TForm).Handle, nil, PChar(FEntry2Dial)) else
|
||
Result:=RasEditPhonebookEntry(0, nil, PChar(FEntry2Dial));
|
||
end;
|
||
|
||
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
|
||
|
||
Function TDialUp.RenameEntryTo(S : String) : Integer;
|
||
begin
|
||
Result:=RasRenameEntry(nil, PChar(FEntry2Dial), PChar(S));
|
||
end;
|
||
|
||
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
|
||
|
||
Function TDialUp.DeleteEntry : Integer;
|
||
begin
|
||
Result:=RasDeleteEntry(nil, PChar(FEntry2Dial))
|
||
end;
|
||
|
||
|
||
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
|
||
|
||
function TDialUp.SetEntryUserName(Value : String) : Integer;
|
||
var DialParams : TRasDialParams;
|
||
begin
|
||
with DialParams do
|
||
begin
|
||
dwSize:=Sizeof(TRasDialParams);
|
||
StrPCopy(szEntryName, PChar(FEntry2Dial));
|
||
StrPCopy(szUserName, Value);
|
||
end;
|
||
Result:=RasSetEntryDialParams(nil, DialParams, False);
|
||
end;
|
||
|
||
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
|
||
|
||
function TDialUp.SetEntryPassword(Value : String) : Integer;
|
||
var DialParams : TRasDialParams;
|
||
begin
|
||
with DialParams do
|
||
begin
|
||
dwSize:=Sizeof(TRasDialParams);
|
||
StrPCopy(szEntryName, PChar(FEntry2Dial));
|
||
StrPCopy(szPassword, Value);
|
||
end;
|
||
Result:=RasSetEntryDialParams(nil, DialParams, False);
|
||
end;
|
||
|
||
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
|
||
|
||
function TDialUp.RemovePassword : Integer;
|
||
var DialParams : TRasDialParams;
|
||
begin
|
||
with DialParams do
|
||
begin
|
||
dwSize:=Sizeof(TRasDialParams);
|
||
StrPCopy(szEntryName, PChar(FEntry2Dial));
|
||
end;
|
||
Result:=RasSetEntryDialParams(nil, DialParams, True);
|
||
end;
|
||
|
||
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
|
||
|
||
function TDialUp.GetEntryUserName(var Value : String) : Integer;
|
||
var
|
||
Fp : LongBool;
|
||
R : Integer;
|
||
// C : Array[0..100] of Char;
|
||
DialParams : TRasDialParams;
|
||
begin
|
||
FillChar(DialParams, SizeOf(TRasDialParams), 0);
|
||
with DialParams do
|
||
begin
|
||
dwSize:=Sizeof(TRasDialParams);
|
||
StrPCopy(szEntryName, FEntry2Dial);
|
||
end;
|
||
R:=RasGetEntryDialParams(nil, DialParams, Fp);
|
||
if R=0 then
|
||
with DialParams do
|
||
begin
|
||
Value:=szUserName;
|
||
end;
|
||
Result:=R;
|
||
end;
|
||
|
||
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
|
||
|
||
function TDialUp.GetEntryPassword(var Value : String) : Integer;
|
||
var
|
||
Fp : LongBool;
|
||
R : Integer;
|
||
// C : Array[0..100] of Char;
|
||
DialParams : TRasDialParams;
|
||
begin
|
||
FillChar(DialParams, SizeOf(TRasDialParams), 0);
|
||
with DialParams do
|
||
begin
|
||
dwSize:=Sizeof(TRasDialParams);
|
||
StrPCopy(szEntryName, FEntry2Dial);
|
||
end;
|
||
R:=RasGetEntryDialParams(nil, DialParams, Fp);
|
||
if R=0 then
|
||
with DialParams do
|
||
begin
|
||
if Fp then
|
||
Value:=szPassword else Value:='';
|
||
end;
|
||
Result:=R;
|
||
end;
|
||
|
||
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
|
||
|
||
function TDialUp.StatusString(State: TRasConnState; Error: Integer): String;
|
||
var
|
||
C : Array[0..100] of Char;
|
||
S : String;
|
||
begin
|
||
if Error<>0 then
|
||
begin
|
||
RasGetErrorString(Error, C, 100);
|
||
Result:=C;
|
||
end else
|
||
begin
|
||
S:='';
|
||
case State of
|
||
RASCS_OpenPort:
|
||
S:='Opening port';
|
||
RASCS_PortOpened:
|
||
S:='Port opened';
|
||
RASCS_ConnectDevice:
|
||
S:='Connecting device';
|
||
RASCS_DeviceConnected:
|
||
S:='Device connected';
|
||
RASCS_AllDevicesConnected:
|
||
S:='All devices connected';
|
||
RASCS_Authenticate:
|
||
S:='Start authenticating';
|
||
RASCS_AuthNotify:
|
||
S:='Authentication: notify';
|
||
RASCS_AuthRetry:
|
||
S:='Authentication: retry';
|
||
RASCS_AuthCallback:
|
||
S:='Authentication: callback';
|
||
RASCS_AuthChangePassword:
|
||
S:='Authentication: change password';
|
||
RASCS_AuthProject:
|
||
S:='Authentication: projecting';
|
||
RASCS_AuthLinkSpeed:
|
||
S:='Authentication: link speed';
|
||
RASCS_AuthAck:
|
||
S:='Authentication: acknowledge';
|
||
RASCS_ReAuthenticate:
|
||
S:='Authentication: reauthenticate';
|
||
RASCS_Authenticated:
|
||
S:='Authenticated';
|
||
RASCS_PrepareForCallback:
|
||
S:='Preparing for callback';
|
||
RASCS_WaitForModemReset:
|
||
S:='Waiting for modem reset';
|
||
RASCS_WaitForCallback:
|
||
S:='Waiting for callback';
|
||
RASCS_Projected:
|
||
S:='Projected';
|
||
RASCS_StartAuthentication:
|
||
S:='Start authentication';
|
||
RASCS_CallbackComplete:
|
||
S:='Callback complete';
|
||
RASCS_LogonNetwork:
|
||
S:='Logging on network';
|
||
|
||
RASCS_Interactive:
|
||
S:='Interactive';
|
||
RASCS_RetryAuthentication:
|
||
S:='Retry Authentication';
|
||
RASCS_CallbackSetByCaller:
|
||
S:='Callback set by caller';
|
||
RASCS_PasswordExpired:
|
||
S:='Password expired';
|
||
|
||
RASCS_Connected:
|
||
S:='Connected';
|
||
RASCS_Disconnected:
|
||
S:='Disconnected';
|
||
end;
|
||
Result:=S;
|
||
end;
|
||
end;
|
||
function TDialUp.StatusStringCZ(State: TRasConnState; Error: Integer): String;
|
||
var
|
||
C : Array[0..100] of Char;
|
||
S : String;
|
||
begin
|
||
if Error<>0 then
|
||
begin
|
||
RasGetErrorString(Error, C, 100);
|
||
Result:=C;
|
||
end else
|
||
begin
|
||
S:='';
|
||
case State of
|
||
RASCS_OpenPort:
|
||
S:='Otev<65>r<EFBFBD> se port';
|
||
RASCS_PortOpened:
|
||
S:='Port otev<65>en';
|
||
RASCS_ConnectDevice:
|
||
S:='Prob<6F>h<EFBFBD> spojov<6F>n<EFBFBD>';
|
||
RASCS_DeviceConnected:
|
||
S:='Nav<61>z<EFBFBD>no spojen<65>';
|
||
RASCS_AllDevicesConnected:
|
||
S:='V<>echna za<7A><61>zen<65> spojena';
|
||
RASCS_Authenticate:
|
||
S:='Za<5A><61>naj<61> se ov<6F><76>ovat u<>ivatelsk<73> informace';
|
||
RASCS_AuthNotify:
|
||
S:='Ov<4F><76>en<65>: ozn<7A>men<65>';
|
||
RASCS_AuthRetry:
|
||
S:='Ov<4F><76>en<65>: opakov<6F>n<EFBFBD>';
|
||
RASCS_AuthCallback:
|
||
S:='Ov<4F><76>en<65>: zp<7A>tn<74> vol<6F>n<EFBFBD>';
|
||
RASCS_AuthChangePassword:
|
||
S:='Ov<4F><76>en<65>: zm<7A>na hesla';
|
||
RASCS_AuthProject:
|
||
S:='Ov<4F><76>en<65>: n<>vrh';
|
||
RASCS_AuthLinkSpeed:
|
||
S:='Ov<4F><76>en<65>: spojovac<61> rychlost';
|
||
RASCS_AuthAck:
|
||
S:='Ov<4F><76>en<65>: potvrzen<65>';
|
||
RASCS_ReAuthenticate:
|
||
S:='Ov<4F><76>en<65>: znovuov<6F><76>en<65>';
|
||
RASCS_Authenticated:
|
||
S:='Ov<4F><76>eno';
|
||
RASCS_PrepareForCallback:
|
||
S:='P<><50>prava na zpetn<74> vol<6F>n<EFBFBD>';
|
||
RASCS_WaitForModemReset:
|
||
S:='<27>ek<65> se na reset modemu';
|
||
RASCS_WaitForCallback:
|
||
S:='<27>ek<65> se na zp<7A>tn<74> vol<6F>n<EFBFBD>';
|
||
RASCS_Projected:
|
||
S:='Navrhnuto';
|
||
RASCS_StartAuthentication:
|
||
S:='Ov<4F><76>ov<6F>n<EFBFBD> u<>ivatelsk<73>ch informac<61>';
|
||
RASCS_CallbackComplete:
|
||
S:='Zpetn<74> vol<6F>n<EFBFBD> hotovo';
|
||
RASCS_LogonNetwork:
|
||
S:='P<>ipojuje se na s<><73>';
|
||
|
||
RASCS_Interactive:
|
||
S:='Interakce';
|
||
RASCS_RetryAuthentication:
|
||
S:='Opakov<6F>n<EFBFBD> ove<76>en<65>';
|
||
RASCS_CallbackSetByCaller:
|
||
S:='Zpe<70>tn<74> vol<6F>n<EFBFBD> zvoleno u<>ivatelem';
|
||
RASCS_PasswordExpired:
|
||
S:='Platnost hesla vypr<70>ela';
|
||
|
||
RASCS_Connected:
|
||
S:='Spojeno';
|
||
RASCS_Disconnected:
|
||
S:='Rozpojeno';
|
||
end;
|
||
Result:=S;
|
||
end;
|
||
end;
|
||
|
||
{****************************************************************************}
|
||
{****************************************************************************}
|
||
{****************************************************************************}
|
||
{****************************************************************************}
|
||
|
||
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
|
||
function RasCreatePhonebookEntryA; external 'rasapi32.dll' name 'RasCreatePhonebookEntryA';
|
||
function RasCreatePhonebookEntryW; external 'rasapi32.dll' name 'RasCreatePhonebookEntryW';
|
||
function RasCreatePhonebookEntry; external 'rasapi32.dll' name 'RasCreatePhonebookEntryA';
|
||
function RasDialA; external 'rasapi32.dll' name 'RasDialA';
|
||
function RasDialW; external 'rasapi32.dll' name 'RasDialW';
|
||
function RasDial; external 'rasapi32.dll' name 'RasDialA';
|
||
function RasEditPhonebookEntryA; external 'rasapi32.dll' name 'RasEditPhonebookEntryA';
|
||
function RasEditPhonebookEntryW; external 'rasapi32.dll' name 'RasEditPhonebookEntryW';
|
||
function RasEditPhonebookEntry; external 'rasapi32.dll' name 'RasEditPhonebookEntryA';
|
||
function RasEnumConnectionsA; external 'rasapi32.dll' name 'RasEnumConnectionsA';
|
||
function RasEnumConnectionsW; external 'rasapi32.dll' name 'RasEnumConnectionsW';
|
||
function RasEnumConnections; external 'rasapi32.dll' name 'RasEnumConnectionsA';
|
||
function RasEnumEntriesA; external 'rasapi32.dll' name 'RasEnumEntriesA';
|
||
function RasEnumEntriesW; external 'rasapi32.dll' name 'RasEnumEntriesW';
|
||
function RasEnumEntries; external 'rasapi32.dll' name 'RasEnumEntriesA';
|
||
function RasGetConnectStatusA; external 'rasapi32.dll' name 'RasGetConnectStatusA';
|
||
function RasGetConnectStatusW; external 'rasapi32.dll' name 'RasGetConnectStatusW';
|
||
function RasGetConnectStatus; external 'rasapi32.dll' name 'RasGetConnectStatusA';
|
||
function RasGetEntryDialParamsA; external 'rasapi32.dll' name 'RasGetEntryDialParamsA';
|
||
function RasGetEntryDialParamsW; external 'rasapi32.dll' name 'RasGetEntryDialParamsW';
|
||
function RasGetEntryDialParams; external 'rasapi32.dll' name 'RasGetEntryDialParamsA';
|
||
function RasGetErrorStringA; external 'rasapi32.dll' name 'RasGetErrorStringA';
|
||
function RasGetErrorStringW; external 'rasapi32.dll' name 'RasGetErrorStringW';
|
||
function RasGetErrorString; external 'rasapi32.dll' name 'RasGetErrorStringA';
|
||
function RasGetProjectionInfoA; external 'rasapi32.dll' name 'RasGetProjectionInfoA';
|
||
function RasGetProjectionInfoW; external 'rasapi32.dll' name 'RasGetProjectionInfoW';
|
||
function RasGetProjectionInfo; external 'rasapi32.dll' name 'RasGetProjectionInfoA';
|
||
function RasHangUpA; external 'rasapi32.dll' name 'RasHangUpA';
|
||
function RasHangUpW; external 'rasapi32.dll' name 'RasHangUpW';
|
||
function RasHangUp; external 'rasapi32.dll' name 'RasHangUpA';
|
||
function RasSetEntryDialParamsA; external 'rasapi32.dll' name 'RasSetEntryDialParamsA';
|
||
function RasSetEntryDialParamsW; external 'rasapi32.dll' name 'RasSetEntryDialParamsW';
|
||
function RasSetEntryDialParams; external 'rasapi32.dll' name 'RasSetEntryDialParamsA';
|
||
function RasValidateEntryNameA; external 'rasapi32.dll' name 'RasValidateEntryNameA';
|
||
function RasValidateEntryNameW; external 'rasapi32.dll' name 'RasValidateEntryNameW';
|
||
function RasRenameEntryA; external 'rasapi32.dll' name 'RasRenameEntryA';
|
||
function RasRenameEntryW; external 'rasapi32.dll' name 'RasRenameEntryW';
|
||
function RasDeleteEntryA; external 'rasapi32.dll' name 'RasDeleteEntryA';
|
||
function RasDeleteEntryW; external 'rasapi32.dll' name 'RasDeleteEntryW';
|
||
function RasGetEntryPropertiesA; external 'rasapi32.dll' name 'RasGetEntryPropertiesA';
|
||
function RasGetEntryPropertiesW; external 'rasapi32.dll' name 'RasGetEntryPropertiesW';
|
||
function RasSetEntryPropertiesA; external 'rasapi32.dll' name 'RasSetEntryPropertiesA';
|
||
function RasSetEntryPropertiesW; external 'rasapi32.dll' name 'RasSetEntryPropertiesW';
|
||
function RasGetCountryInfoA; external 'rasapi32.dll' name 'RasGetCountryInfoA';
|
||
function RasGetCountryInfoW; external 'rasapi32.dll' name 'RasGetCountryInfoW';
|
||
function RasEnumDevicesA; external 'rasapi32.dll' name 'RasEnumDevicesA';
|
||
function RasEnumDevicesW; external 'rasapi32.dll' name 'RasEnumDevicesW';
|
||
|
||
var
|
||
Rnaph_Initialized : Boolean = False;
|
||
Is_Rnaph : Boolean = False;
|
||
Lib : HModule;
|
||
|
||
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
|
||
|
||
function Rnaph_(const func: String): Pointer;
|
||
begin
|
||
if not Rnaph_Initialized then
|
||
begin
|
||
// Try first with RASAPI32.DLL
|
||
Lib:=LoadLibrary('rasapi32.dll');
|
||
if Lib<>0 then
|
||
begin
|
||
Result:=GetProcAddress(Lib, PChar(Func+'A'));
|
||
if Result<>nil then
|
||
begin
|
||
Rnaph_Initialized:=True;
|
||
Exit;
|
||
end;
|
||
end else raise Exception.Create('Error opening rasapi.dll');
|
||
// function not found - try rnaph.dll
|
||
Lib:=LoadLibrary('rnaph.dll');
|
||
if Lib<>0 then
|
||
begin
|
||
Result:=GetProcAddress(Lib, PChar(Func));
|
||
if Result <> nil then
|
||
begin
|
||
Rnaph_Initialized:=True;
|
||
Is_Rnaph:=True;
|
||
Exit;
|
||
end else raise Exception.Create('Function '+Func+' not found!');
|
||
end else raise Exception.Create('Error opening rnaph.dll');
|
||
end else
|
||
begin
|
||
if Is_Rnaph then Result:=GetProcAddress(Lib,PChar(Func))
|
||
else Result:=GetProcAddress(lib,PChar(Func+'A'));
|
||
if Result=nil then raise Exception.Create('Function '+Func+' not found!');
|
||
end;
|
||
end;
|
||
|
||
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
|
||
|
||
function RasValidateEntryName(lpszPhonebook, szEntry: PAnsiChar): Longint;
|
||
var
|
||
F : Function(lpszPhonebook, szEntry: PAnsiChar): Longint; stdcall;
|
||
begin
|
||
@F:=Rnaph_('RasValidateEntryName');
|
||
Result:=F(lpszPhonebook, szEntry);
|
||
end;
|
||
|
||
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
|
||
|
||
function RasRenameEntry(lpszPhonebook, szEntryOld, szEntryNew: PAnsiChar): Longint;
|
||
var
|
||
F : function(lpszPhonebook, szEntryOld, szEntryNew: PAnsiChar): Longint; stdcall;
|
||
begin
|
||
@F:=rnaph_('RasRenameEntry');
|
||
Result:=F(lpszPhonebook, szEntryOld, szEntryNew);
|
||
end;
|
||
|
||
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
|
||
|
||
function RasDeleteEntry(lpszPhonebook, szEntry: PAnsiChar): Longint;
|
||
var
|
||
F : function(lpszPhonebook, szEntry: PAnsiChar): Longint; stdcall;
|
||
begin
|
||
@F:=Rnaph_('RasDeleteEntry');
|
||
Result:=F(lpszPhonebook, szEntry);
|
||
end;
|
||
|
||
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
|
||
|
||
function RasGetEntryProperties(lpszPhonebook, szEntry: PAnsiChar; lpbEntry: Pointer;
|
||
var lpdwEntrySize: Longint; lpbDeviceInfo: Pointer;
|
||
var lpdwDeviceInfoSize: Longint): Longint;
|
||
var
|
||
F : function(lpszPhonebook, szEntry: PAnsiChar; lpbEntry: Pointer;
|
||
lpdwEntrySize : Longint;
|
||
lpbDeviceInfo : Pointer;
|
||
lpdwDeviceInfoSize : Longint): Longint; stdcall;
|
||
begin
|
||
@F:=Rnaph_('RasGetEntryProperties');
|
||
Result:=F(lpszPhonebook, szEntry, lpbEntry, lpdwEntrySize, lpbDeviceInfo, lpdwDeviceInfoSize);
|
||
end;
|
||
|
||
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
|
||
|
||
function RasSetEntryProperties(lpszPhonebook, szEntry: PAnsiChar;
|
||
lpbEntry: Pointer; dwEntrySize: Longint; lpbDeviceInfo: Pointer;
|
||
dwDeviceInfoSize: Longint): Longint;
|
||
var
|
||
F : function(lpszPhonebook, szEntry: PAnsiChar;
|
||
lpbEntry: Pointer; dwEntrySize: Longint;
|
||
lpbDeviceInfo: Pointer;
|
||
dwDeviceInfoSize: Longint): Longint; stdcall;
|
||
begin
|
||
@F:=Rnaph_('RasSetEntryProperties');
|
||
Result:=F(lpszPhonebook, szEntry, lpbEntry, dwEntrySize, lpbDeviceInfo, dwDeviceInfoSize);
|
||
end;
|
||
|
||
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
|
||
|
||
function RasGetCountryInfo(var lpCtryInfo: TRasCtryInfo; var lpdwSize: Longint): Longint;
|
||
var
|
||
F : function(var lpCtryInfo: TRasCtryInfo;
|
||
var lpdwSize: Longint): Longint; stdcall;
|
||
begin
|
||
@F:=Rnaph_('RasGetCountryInfo');
|
||
Result:=F(lpCtryInfo, lpdwSize);
|
||
end;
|
||
|
||
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
|
||
|
||
function RasEnumDevices(lpBuff: LpRasDevInfo; var lpcbSize: Longint;
|
||
var lpcDevices: Longint): Longint;
|
||
var
|
||
F : function(lpBuff: LpRasDevInfo; var lpcbSize: Longint;
|
||
var lpcDevices: Longint): Longint; stdcall;
|
||
begin
|
||
@F:=Rnaph_('RasEnumDevices');
|
||
Result:=F(lpBuff, lpcbSize, lpcDevices);
|
||
end;
|
||
|
||
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
|
||
|
||
initialization
|
||
|
||
finalization
|
||
if Rnaph_initialized and Is_rnaph then FreeLibrary(lib);
|
||
end.
|
||
|