⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adrasutl.pas

📁 Async Professional 4.04
💻 PAS
📖 第 1 页 / 共 3 页
字号:
    szAreaCode         : array[0..RasMaxAreaCode] of char;
    szLocalPhoneNumber : array[0..RasMaxPhoneNumber] of char;
    dwAlternatesOffset : DWord;
    IPAddr             : TRasIPAddr;
    IPAddrDns          : TRasIPAddr;
    IPAddrDnsAlt       : TRasIPAddr;
    IPAddrWins         : TRasIPAddr;
    IPAddrWinsAlt      : TRasIPAddr;
    dwFrameSize        : DWord;
    dwNetProtocols     : DWord;
    dwFramingProtocol  : DWord;
    szScript           : array[0..Max_PATH-1] of char;
    szAutodialDll      : array[0..Max_PATH-1] of char;
    szAutodialFunc     : array[0..Max_PATH-1] of char;
    szDeviceType       : array[0..RasMaxDeviceType] of char;
    szDeviceName       : array[0..RasMaxDeviceName] of char;
    szX25PadType       : array[0..RasMaxPadType] of char;
    szX25Address       : array[0..RasMaxX25Address] of char;
    szX25Facilities    : array[0..RasMaxFacilities] of char;
    szX25UserData      : array[0..RasMaxUserData] of char;
    dwChannels         : DWord;
    dwReserved1        : DWord;
    dwReserved2        : DWord;
  end;

type {RAS dial dialog information - AdRasDialDlg}
  PRasDialDlgInfo = ^TRasDialDlgInfo;
  TRasDialDlgInfo = record
    dwSize     : DWord;
    hwndOwner  : Hwnd;
    dwFlags    : DWord;
    xDlg       : Longint;
    yDlg       : Longint;
    dwSubEntry : DWord;
    dwError    : DWord;
    reserved   : DWord;
    reserved2  : DWord;
  end;

type {RAS monitor dialog information - AdRasMonitorDlg}
  PRasMonitorDlgInfo = ^TRasMonitorDlgInfo;
  TRasMonitorDlgInfo = record
    dwSize      : DWord;
    hwndOwner   : HWnd;
    dwFlags     : DWord;
    dwStartPage : DWord;
    xDlg        : Longint;
    yDlg        : Longint;
    dwError     : DWord;
    reserved    : DWord;
    reserved2   : DWord;
  end;

type {RAS phonebook dialog information - AdRasPhonebookDlg}
  PRasPhonebookDlgInfo = ^TRasPhonebookDlgInfo;
  TRasPhonebookDlgInfo = record
    dwSize : DWord;
    hwndOwner : HWnd;
    dwFlags : DWord;
    xDlg : Longint;
    yDlg : Longint;
    dwCallbackId : DWord;
    pCallback : FARPROC;
    dwError : DWord;
    reserved : DWord;
    reserved2 : DWord;
  end;


{RASAPI32 DLL function prototypes}
type
  TRasDial = function (lpDialExtensions : PRasDialExtensions;
                       lszPhonebook : PChar;
                       lpDialParams : PRasDialParams;
                       dwNotifierType : DWord;
                       lpvNotifier : DWord;
                       lpConn : PHRasConn
                       ) : DWord; stdcall;

  TRasDialDlg = function (lpszPhonebook : PChar;
                          lpszEntry : PChar;
                          lpszPhoneNumber : PChar;
                          lpDialDlgInfo : PRasDialDlgInfo
                          ) : BOOL; stdcall;

  TRasMonitorDlg = function (lpszDeviceName : PChar;
                             lpMonitorDlgInfo : PRasMonitorDlgInfo
                             ) : BOOL; stdcall;

  TRasPhonebookDlg = function (lpszPhonebook : PChar;
                               lpszEntry : PChar;
                               lpPBDlgInfo: PRasPhonebookDlgInfo
                               ) : BOOL; stdcall;

   TRasEnumConnections = function (lpConn : PRasConn;
                                  var lpBufSize : DWord;
                                  var lpNumConnections : DWord
                                  ) : DWord; stdcall;

  TRasEnumEntries = function(lpReserved, lpszPhonebook : PChar;
                              lpEntryName : PRasEntryName;
                              var lpEntryNameSize : DWord;
                              var lpNumEntries : DWord
                              ) : DWord; stdcall;

  TRasGetConnectStatus = function(Conn : HRasConn;
                                  lpConnStatus : PRasConnStatus
                                  ) : DWord; stdcall;

  TRasGetErrorString = function(ErrorCode : DWord;
                                lpszErrorString : PChar;
                                BufSize : DWord
                                ) : DWord; stdcall;

  TRasHangup = function(RasConn : HRasConn
                        ) : DWord; stdcall;

  TRasGetEntryDialParams = function(lpszPhonebook : PChar;
                                    lpDialParams : PRasDialParams;
                                    var Password : Bool
                                    ) : DWord; stdcall;

  TRasSetEntryDialParams = function(lpszPhonebook : PChar;
                                    lpDialParams : PRasDialParams;
                                    RemovePassword : Bool
                                    ) : DWord; stdcall;

  TRasCreatePhonebookEntry = function(HWnd : THandle;
                                      lpszPhoneBook : PChar
                                      ) : DWord; stdcall;

  TRasEditPhonebookEntry = function(HWnd : THandle;
                                    lpszPhonebook, lpszEntryName : PChar
                                    ) : DWord; stdcall;

  TRasDeleteEntry = function(lpszPhonebook : PChar;
                             lpszEntryName : PChar
                             ) : DWord; stdcall;

  TRasRenameEntry = function(lpszPhonebook : PChar;
                             lpszEntryOld : PChar;
                             lpszEntryNew : PChar
                             ) : DWord; stdcall;

  TRasEnumDevices = function(lpDeviceInfo: PRasDeviceInfo;
                             var lpDeviceInfoSize: DWord;
                             var lpNumDevices: DWord
                             ) : DWord; stdcall;

  TRasGetCountryInfo = function(lpCountryInfo: PRasCountryInfo;
                                var lpCountryInfoSize: DWord
                                ): DWord; stdcall;

  TRasGetEntryProperties = function(lpszPhonebook, lpszEntry: PChar;
                                    lpEntry: PRasEntry;
                                    var lpEntrySize : DWord;
                                    lpDeviceInfo : PRasDeviceInfo;
                                    var lpDeviceInfoSize : DWord
                                    ): DWord; stdcall;

  TRasSetEntryProperties = function(lpszPhonebook, lpszEntry: PChar;
                                    lpEntryInfo: PRasEntry;
                                    EntryInfoSize: DWord;
                                    lpDeviceInfo: PRasDeviceInfo;
                                    DeviceInfoSize: DWord
                                    ): DWord; stdcall;

  TRasValidateEntryName = function(lpszPhonebook, lpszEntry: PChar
                                   ): DWord; stdcall;


{ RAS DLL routine wrappers and public routines }
function AdRasDial(PDialExtensions : PRasDialExtensions;
                   const Phonebook : string;
                   PDialParams : PRasDialParams;
                   NotifierType : DWord;
                   Notifier : DWord;
                   var HConn : HRasConn
                   ) : Integer;

function AdRasDialDlg(const Phonebook : string;
                      const EntryName : string;
                      const PhoneNumber : string;
                      PDialDlgInfo : PRasDialDlgInfo
                      ) : Integer;

function AdRasMonitorDlg(const DeviceName : string;
                         PMonitorDlgInfo : PRasMonitorDlgInfo
                         ) : Integer;

function AdRasPhonebookDlg(const Phonebook, EntryName : string;
                           PPhonebookDlgInfo: PRasPhonebookDlgInfo
                           ) : Integer;

function AdRasEnumConnections(PConn : PRasConn;
                              var ConnSize : DWord;
                              var NumConnections : DWord
                              ) : Integer;

function AdRasEnumEntries(const Phonebook : string;
                          PEntryName : PRasEntryName;
                          var EntryNameSize : DWord;
                          var NumEntries : DWord
                          ) : Integer;

function AdRasGetConnectStatus(HConn : THandle;
                               PConnStatus : PRasConnStatus
                               ) : Integer;

function AdRasGetErrorString(ErrorCode : Integer
                             ) : string;

function AdRasHangup(HConn : THandle
                     ) : Integer;

function AdRasGetEntryDialParams(const Phonebook : string;
                                 PDialParams : PRasDialParams;
                                 var GotPassword : Boolean
                                 ) : Integer;

function AdRasSetEntryDialParams(const Phonebook : string;
                                 PDialParams : PRasDialParams;
                                 RemovePassword : Boolean
                                 ) : Integer;

function AdRasCreatePhonebookEntry(HWnd : THandle;
                                   const PhoneBook : string
                                   ) : Integer;

function AdRasEditPhonebookEntry(HWnd : THandle;
                                 const Phonebook, EntryName : string
                                 ) : Integer;

function AdRasDeleteEntry(const Phonebook, EntryName : string
                          ) : Integer;

function AdRasRenameEntry(const Phonebook, EntryOld, EntryNew : string
                          ) : Integer;

function AdRasEnumDevices(PDeviceInfo : PRasDeviceInfo;
                          var DeviceInfoSize : DWord;
                          var NumDevices : DWord
                          ) : Integer;

function AdRasGetCountryInfo(PCountryInfo : PRasCountryInfo;
                             var CountryInfoSize : DWord
                             ) : Integer;

function AdRasGetEntryProperties(const Phonebook, EntryName : string;
                                 PEntry : PRasEntry;
                                 var EntrySize : DWord;
                                 PDeviceInfo : PRasDeviceInfo;
                                 var DeviceInfoSize : DWord
                                 ) : Integer;

function AdRasSetEntryProperties(const Phonebook, EntryName : string;
                                 PEntry : PRasEntry;
                                 var EntrySize : DWord;
                                 PDeviceInfo : PRasDeviceInfo;
                                 var DeviceInfoSize : DWord
                                 ) : Integer;

function AdRasValidateEntryName(const Phonebook, EntryName : string
                                ) : Integer;


procedure LoadRASDLL;


var
  AdRasPlatformID : DWord;


implementation

uses
  AdExcept,
  OoMisc;

var {Misc variables}
  RASModule               : THandle = 0;
  RASDlgModule            : THandle = 0;
  VersionInfo             : TOsVersionInfo;

var {RAS DLL functions}
  RasDial                 : TRasDial                 = nil;
  RasDialDlg              : TRasDialDlg              = nil;
  RasMonitorDlg           : TRasMonitorDlg           = nil;
  RasPhonebookDlg         : TRasPhonebookDlg         = nil;
  RasEnumConnections      : TRasEnumConnections      = nil;
  RasEnumEntries          : TRasEnumEntries          = nil;
  RasGetConnectStatus     : TRasGetConnectStatus     = nil;
  RasGetErrorString       : TRasGetErrorString       = nil;
  RasHangUp               : TRasHangUp               = nil;
  RasCreatePhoneBookEntry : TRasCreatePhoneBookEntry = nil;
  RasEditPhonebookEntry   : TRasEditPhonebookEntry   = nil;
  RasSetEntryDialParams   : TRasSetEntryDialParams   = nil;
  RasGetEntryDialParams   : TRasGetEntryDialParams   = nil;
  RasDeleteEntry          : TRasDeleteEntry          = nil;
  RasRenameEntry          : TRasRenameEntry          = nil;
  RasEnumDevices          : TRasEnumDevices          = nil;
  RasGetCountryInfo       : TRasGetCountryInfo       = nil;
  RasGetEntryProperties   : TRasGetEntryProperties   = nil;
  RasSetEntryProperties   : TRasSetEntryProperties   = nil;
  RasValidateEntryName    : TRasValidateEntryName    = nil;


{ Misc utilities }
procedure LoadRASDLL;
begin
  if (RASModule = 0) then begin
    RASModule := LoadLibrary(RASDLL);
    if (RASModule = 0) then
      raise ERas.Create(ecRasLoadFail, False);

    VersionInfo.dwOSVersionInfoSize := SizeOf(VersionInfo);
    if GetVersionEx(VersionInfo) then
      AdRasPlatformID := VersionInfo.dwPlatformId
    else
      AdRasPlatformID := VER_PLATFORM_WIN32s;

    @RasDial := GetProcAddress(RASModule, 'RasDialA');
    @RasEnumConnections := GetProcAddress(RASModule, 'RasEnumConnectionsA');
    @RasGetConnectStatus := GetProcAddress(RASModule, 'RasGetConnectStatusA');
    @RasGetErrorString := GetProcAddress(RASModule, 'RasGetErrorStringA');
    @RasHangUp := GetProcAddress(RASModule, 'RasHangUpA');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -