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

📄 unit2.pas

📁 公交行业的管理系统
💻 PAS
字号:
unit Unit2;

interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls,Unit3,ExtCtrls;

const
DNLEN            = 15;
UNLEN            = 256;
PWLEN            = 256;
NETBIOS_NAME_LEN = 16;

RAS_MaxDeviceType     = 16;
RAS_MaxPhoneNumber    = 128;
RAS_MaxIpAddress      = 15;
RAS_MaxIpxAddress     = 21;
RAS_MaxEntryName      = 256;
RAS_MaxDeviceName     = 128;
RAS_MaxCallbackNumber = RAS_MaxPhoneNumber;

ERR_STR        = 'There is an error in program!';
MaxEntries = 100;
NUM_INPUT = 0;  //电话号码用户输入
NUM_PHONEBOOK = 1; //电话号码来自电话本

type
LPRasDialParams = ^TRasDialParams;
TRasDialParams  = record
  dwSize           : LongInt;
  szEntryName      : Array[0..RAS_MaxEntryName] of AnsiChar;
  szPhoneNumber    : Array[0..RAS_MaxPhoneNumber] of AnsiChar;
  szCallbackNumber : Array[0..RAS_MaxCallbackNumber] of AnsiChar;
  szUserName       : Array[0..UNLEN] of AnsiChar;
  szPassword       : Array[0..PWLEN] of AnsiChar;
  szDomain         : Array[0..DNLEN] of AnsiChar;
end;

LPRasDialExtensions = ^TRasDialExtensions;
TRasDialExtensions  = record
  dwSize            : LongInt;
  dwfOptions        : LongInt;
  hwndParent        : HWND;
  reserved          : LongInt;
end;

LPHRasConn = ^THRasConn;
THRasConn  = Longint;

LPRasEntryName = ^TRasEntryName;
TRasEntryName  = record
  dwSize        : Longint;
  szEntryName   : Array[0..RAS_MaxEntryName] of AnsiChar;
end;

LPRasConn = ^TRasConn;
TRasConn  = record
  dwSize       : Longint;
  hrasconn     : THRasConn;
  szEntryName  : Array[0..RAS_MaxEntryName] of AnsiChar;
  szDeviceType : Array[0..RAS_MaxDeviceType] of AnsiChar;
  szDeviceName : Array[0..RAS_MaxDeviceName] of AnsiChar;
end;

function RasEnumEntries(reserved: PAnsiChar; lpszPhoneBook: PAnsiChar;
                        entrynamesArray: LPRasEntryName; var lpcb: Longint;
                        var lpcEntries: Longint): Longint; stdcall;

function RasGetEntryDialParams(lpszPhoneBook: PAnsiChar; var lpDialParams: TRasDialParams;
                               var lpfPassword: LongBool): Longint; stdcall;

function RasDial(lpRasDialExt: LPRasDialExtensions; lpszPhoneBook: PAnsiChar;
                 var params: TRasDialParams; dwNotifierType: Longint;
                 lpNotifier: Pointer; var rasconn: THRasConn): Longint; stdcall;

function RasHangUp(hConn: THRasConn): Longint; stdcall;

function RasGetErrorString(errorValue: Integer;erroString: PAnsiChar;cBufSize: Longint): Longint; stdcall;

type
  TDialUp = class(TComponent)
  private
    FEntries    : TStringList;
    hRAS        : ThRASConn;
    sEntryName   : String;
    sPassword   : String;
    sUserName   : String;
    sPhoneNum   : String;

  public
    constructor Create(AOwner:TComponent); override;
    destructor Destroy; override;
    function Dial(iNumType:Integer) : Integer;
    function GetEntries : Integer;
    function HangUp : Integer;
    function GetPhoneNum(sPhoneEntry:String) : String;
  published
    property Entries : TStringList
      read FEntries;
    property EntryName : String
      read sEntryName write sEntryName;
    property Password : String
      read sPassword write sPassword;
    property UserName : String
      read sUserName write sUserName;
    property PhoneNum : String
      read sPhoneNum write sPhoneNum;

end;

implementation

//************************************************************
constructor TDialUp.Create(AOwner:TComponent);
begin
  inherited Create(AOwner);
  FEntries:=TStringList.Create;
end;

//************************************************************
destructor TDialUp.Destroy;
begin
  inherited Destroy;
  FEntries.Free;
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.GetPhoneNum(sPhoneEntry:String) : String;
  var
    Fp                  : LongBool;
    R                   : Integer;
    DialParams          : TRasDialParams;
  begin
    FillChar(DialParams, SizeOf(TRasDialParams), 0);
    with DialParams do
      begin
        dwSize:=Sizeof(TRasDialParams);
        StrCopy(szEntryName,PChar(sPhoneEntry));
      end;
    Fp:=True;
    R:=RasGetEntryDialParams(nil, DialParams, Fp);

    if (R=0) then
      Result:=DialParams.szPhoneNumber
    else
      Result:= ERR_STR;
  end;
//************************************************************
function TDialUp.Dial(iNumType:Integer) : Integer;
var
  Fp                  : LongBool;
  R                   : Integer;
  CErr                   : Array[0..100] of Char;
  sErr                : String;
  DialParams          : TRasDialParams;
  stest:String;
begin
//  HangUp;
  R:=0;
  if hRas<>0 then
    ShowMessage('已进行拨号连接,如若希望拨号请先断开连接!')
  else
    begin
      FillChar(DialParams, SizeOf(TRasDialParams), 0);
      with DialParams do
        begin
          dwSize:=Sizeof(TRasDialParams);
          StrPCopy(szEntryName, sEntryName);
          if (iNumType = NUM_INPUT) then
            StrPCopy(szUserName, sUserName);
        end;

      OKBottomDlg.Show ;
      OKBottomDlg.lblHint.Caption:='正在连接,请等待!';
      OKBottomDlg.lblHint.Refresh;
      Fp:=false;
      R:=RasGetEntryDialParams(nil, DialParams, Fp);
//  StrPCopy(DialParams.szUserName, 'gr');
//  StrPCopy(DialParams.szPhoneNumber, '17');
      StrPCopy(DialParams.szPassword, sPassword);
      stest:= DialParams.szUserName;
      stest:= DialParams.szPassword;
      hRAS:=0;
      R:=RasDial(nil, nil, DialParams, 0, nil, hRAS);
      OKBottomDlg.Hide;
      if R<>0 then
        begin
          RasGetErrorString(R,CErr,100);
          sErr:=CErr;
          ShowMessage(sErr);
          HangUp;
        end;
    end;
    Result:=R;
end;

//************************************************************
function TDialUp.HangUp : Integer;
begin
  if hRas<>0 then
    begin
      RasHangUp(hRas);
      hRas:=0;
    end;
end;
//************************************************************

function RasDial;                  external 'rasapi32.dll' name 'RasDialA';
function RasGetEntryDialParams;    external 'rasapi32.dll' name 'RasGetEntryDialParamsA';
function RasHangUp;                external 'rasapi32.dll' name 'RasHangUpA';
function RasEnumEntries;           external 'rasapi32.dll' name 'RasEnumEntriesA';
function RasGetErrorString;        external 'rasapi32.dll' name 'RasGetErrorStringA';

end.

⌨️ 快捷键说明

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