拨号管理库RasApi32.dll(100分)

  • 主题发起人 主题发起人 zfnet
  • 开始时间 开始时间
Z

zfnet

Unregistered / Unconfirmed
GUEST, unregistred user!
谁有RasApi32.dll库的详细解释?

或RasApi32.dll库的具体用法?
 
主要是将 C 的头文件翻译过来,可以下载 JEDI API Library:
ftp://delphi-jedi.org/api/RAS.zip
参考:http://www.delphi-jedi.org/Jedi:APILIBRARY:23714
 
Export, RASAPI32.dll
Ordinal Address Name
00000001 774AFB2A DDMGetPhonebookInfo
00000002 774BC288 DwCloneEntry
00000003 774BC4AC DwDeleteSubEntry
00000004 774BC39B DwEnumEntriesForAllUsers
00000005 774A1B84 DwEnumEntryDetails
00000006 774BCBAE FreeSharedAccessApplication
00000007 774BCBE9 FreeSharedAccessServer
00000008 774BD7B6 RasAutoDialSharedConnection
00000009 774AEB1D RasAutodialAddressToNetwork
0000000A 774AE834 RasAutodialEntryToNetwork
0000000B 774AFEFC RasClearConnectionStatistics
0000000C 774AFE89 RasClearLinkStatistics
0000000D 774ADCC6 RasConnectionNotificationA
0000000E 774ADC92 RasConnectionNotificationW
0000000F 774AA1D8 RasCreatePhonebookEntryA
00000010 774AA185 RasCreatePhonebookEntryW
00000011 774ADA9C RasDeleteEntryA
00000012 774AD959 RasDeleteEntryW
00000013 774B1676 RasDialA
00000014 774B1940 RasDialW
00000015 774BC620 RasDialWow
00000016 774AA26D RasEditPhonebookEntryA
00000017 774AA217 RasEditPhonebookEntryW
00000018 774AF549 RasEnumAutodialAddressesA
00000019 774AF2F5 RasEnumAutodialAddressesW
0000001A 774A12E8 RasEnumConnectionsA
0000001B 774A24E0 RasEnumConnectionsW
0000001C 774BC750 RasEnumConnectionsWow
0000001D 774ACA75 RasEnumDevicesA
0000001E 774AC8E7 RasEnumDevicesW
0000001F 774AA8FC RasEnumEntriesA
00000020 774A363E RasEnumEntriesW
00000021 774BC77C RasEnumEntriesWow
00000022 774B08FC RasFreeEapUserIdentityA
00000023 774B08FC RasFreeEapUserIdentityW
00000024 774BD84D RasFreeLanConnTable
00000025 774BC827 RasFreeSharedAccessSettings
00000026 774AEE8B RasGetAutodialAddressA
00000027 774AEBD4 RasGetAutodialAddressW
00000028 774AF857 RasGetAutodialEnableA
00000029 774AF74D RasGetAutodialEnableW
0000002A 774AFB16 RasGetAutodialParamA
0000002B 774AFA2D RasGetAutodialParamW
0000002C 774AB210 RasGetConnectResponse
0000002D 774AAFA6 RasGetConnectStatusA
0000002E 774AAB79 RasGetConnectStatusW
0000002F 774BC7AF RasGetConnectStatusWow
00000030 774AFE22 RasGetConnectionStatistics
00000031 774ACC87 RasGetCountryInfoA
00000032 774ACB7E RasGetCountryInfoW
00000033 774AE31F RasGetCredentialsA
00000034 774AE204 RasGetCredentialsW
00000035 774B0367 RasGetCustomAuthDataA
00000036 774B01D5 RasGetCustomAuthDataW
00000037 774B00EA RasGetEapUserDataA
00000038 774AFF6E RasGetEapUserDataW
00000039 774B07FF RasGetEapUserIdentityA
0000003A 774B04A0 RasGetEapUserIdentityW
0000003B 774AB2DF RasGetEntryDialParamsA
0000003C 774AB47B RasGetEntryDialParamsW
0000003D 774AB156 RasGetEntryHrasconnA
0000003E 774AB07F RasGetEntryHrasconnW
0000003F 774ACD56 RasGetEntryPropertiesA
00000040 774AD143 RasGetEntryPropertiesW
00000041 774AB6EE RasGetErrorStringA
00000042 774AB664 RasGetErrorStringW
00000043 774BC7D7 RasGetErrorStringWow
00000044 774AB776 RasGetHport
00000045 774AFDB0 RasGetLinkStatistics
00000046 774ABEBC RasGetProjectionInfoA
00000047 774AB8AC RasGetProjectionInfoW
00000048 774ADC7E RasGetSubEntryHandleA
00000049 774ADC16 RasGetSubEntryHandleW
0000004A 774ADCDA RasGetSubEntryPropertiesA
0000004B 774ADEB1 RasGetSubEntryPropertiesW
0000004C 774AC61D RasHangUpA
0000004D 774AC2D6 RasHangUpW
0000004E 774BC803 RasHangUpWow
0000004F 774AFD7C RasInvokeEapUI
00000050 774AFCE7 RasIsRouterConnection
00000051 774BD8A5 RasIsSharedConnection
00000052 774BC884 RasLoadSharedAccessSettings
00000053 774BD8ED RasNameFromSharedConnection
00000054 774BD9EB RasQueryLanConnTable
00000055 774B044C RasQueryRedialOnLinkFailure
00000056 774BDA9D RasQuerySharedAutoDial
00000057 774BDB3C RasQuerySharedConnection
00000058 774BDB60 RasQuerySharedConnectionCredentials
00000059 774BDBF6 RasQuerySharedPrivateLan
0000005A 774BDC1A RasQuerySharedPrivateLanAddress
0000005B 774AD8D4 RasRenameEntryA
0000005C 774AD725 RasRenameEntryW
0000005D 774BCA55 RasSaveSharedAccessSettings
0000005E 774AF1EF RasSetAutodialAddressA
0000005F 774AEFC6 RasSetAutodialAddressW
00000060 774AF73D RasSetAutodialEnableA
00000061 774AF65A RasSetAutodialEnableW
00000062 774AFA19 RasSetAutodialParamA
00000063 774AF929 RasSetAutodialParamW
00000064 774AE524 RasSetCredentialsA
00000065 774AE436 RasSetCredentialsW
00000066 774B03E0 RasSetCustomAuthDataA
00000067 774B02B8 RasSetCustomAuthDataW
00000068 774B0166 RasSetEapUserDataA
00000069 774B0024 RasSetEapUserDataW
0000006A 774AC70E RasSetEntryDialParamsA
0000006B 774AC629 RasSetEntryDialParamsW
0000006C 774AD380 RasSetEntryPropertiesA
0000006D 774AD237 RasSetEntryPropertiesW
0000006E 774AC88D RasSetOldPassword
0000006F 774BDC8F RasSetSharedAutoDial
00000070 774BDD3B RasSetSharedConnectionCredentials
00000071 774AE061 RasSetSubEntryPropertiesA
00000072 774ADF72 RasSetSubEntryPropertiesW
00000073 774BDDE2 RasShareConnection
00000074 774BDF98 RasUnshareConnection
00000075 774ADBB2 RasValidateEntryNameA
00000076 774ADB00 RasValidateEntryNameW
00000077 774B6EED RasfileClose
00000078 774B6AF5 RasfileDeleteLine
00000079 774B6F41 RasfileFindFirstLine
0000007A 774B6F59 RasfileFindLastLine
0000007B 774B7031 RasfileFindMarkedLine
0000007C 774B6FA1 RasfileFindNextKeyLine
0000007D 774B6F89 RasfileFindNextLine
0000007E 774B6F71 RasfileFindPrevLine
0000007F 774B7060 RasfileFindSectionLine
00000080 774B6C00 RasfileGetKeyValueFields
00000081 774B694A RasfileGetLine
00000082 774B6A16 RasfileGetLineMark
00000083 774B6966 RasfileGetLineText
00000084 774B6A55 RasfileGetLineType
00000085 774B6B3C RasfileGetSectionName
00000086 774B6A74 RasfileInsertLine
00000087 774B6D39 RasfileLoad
00000088 774B6E70 RasfileLoadInfo
00000089 774B6C87 RasfilePutKeyValueFields
0000008A 774B6A32 RasfilePutLineMark
0000008B 774B698F RasfilePutLineText
0000008C 774B6B6A RasfilePutSectionName
0000008D 774B6EB7 RasfileWrite
0000008E 774BD57A SharedAccessResponseListToString
0000008F 774BD647 SharedAccessResponseStringToList
00000090 774A1D47 UnInitializeRAS
unit DialUp;

interface

uses
SysUtils, Windows, Dialogs, Classes, ExtCtrls, Forms, Messages;

const

(*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;
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 : 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韗?se port';
RASCS_PortOpened:
S:='Port otev鴈n';
RASCS_ConnectDevice:
S:='Prob韍?spojov醤?;
RASCS_DeviceConnected:
S:='Nav醶醤o spojen?;
RASCS_AllDevicesConnected:
S:='V歟chna za?zen?spojena';
RASCS_Authenticate:
S:='Za桧naj?se ov禅ovat u瀒vatelsk?informace';
RASCS_AuthNotify:
S:='Ov禅en? ozn醡en?;
RASCS_AuthRetry:
S:='Ov禅en? opakov醤?;
RASCS_AuthCallback:
S:='Ov禅en? zp靦n?vol醤?;
RASCS_AuthChangePassword:
S:='Ov禅en? zm靚a hesla';
RASCS_AuthProject:
S:='Ov禅en? n醰rh';
RASCS_AuthLinkSpeed:
S:='Ov禅en? spojovac?rychlost';
RASCS_AuthAck:
S:='Ov禅en? potvrzen?;
RASCS_ReAuthenticate:
S:='Ov禅en? znovuov禅en?;
RASCS_Authenticated:
S:='Ov禅eno';
RASCS_PrepareForCallback:
S:='P?prava na zpetn?vol醤?;
RASCS_WaitForModemReset:
S:='萫k?se na reset modemu';
RASCS_WaitForCallback:
S:='萫k?se na zp靦n?vol醤?;
RASCS_Projected:
S:='Navrhnuto';
RASCS_StartAuthentication:
S:='Ov禅ov醤?u瀒vatelsk齝h informac?;
RASCS_CallbackComplete:
S:='Zpetn?vol醤?hotovo';
RASCS_LogonNetwork:
S:='P鴌pojuje se na s頋';

RASCS_Interactive:
S:='Interakce';
RASCS_RetryAuthentication:
S:='Opakov醤?ove鴈n?;
RASCS_CallbackSetByCaller:
S:='Zpe靦n?vol醤?zvoleno u瀒vatelem';
RASCS_PasswordExpired:
S:='Platnost hesla vypr歟la';

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.
 
后退
顶部