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

📄 rasdial1.pas

📁 < Delphi网络通信协议分析与应用实现>>一书的源代码。
💻 PAS
📖 第 1 页 / 共 3 页
字号:
        AutoFlag               := IniFile.ReadString('Last', 'AutoConnect',    '0');
        ConfigureAutoForm.AutoConnect := (AutoFlag <> '0');
        AutoFlag               := IniFile.ReadString('Last', 'AutoExecuteBrowser',    '0');
        ConfigureAutoForm.AutoExecuteBrowser := (AutoFlag <> '0');
        AutoFlag               := IniFile.ReadString('Last', 'AutoExecuteMail',    '0');
        ConfigureAutoForm.AutoExecuteMail := (AutoFlag <> '0');
        AutoFlag               := IniFile.ReadString('Last', 'AutoExecuteNews',    '0');
        ConfigureAutoForm.AutoExecuteNews := (AutoFlag <> '0');
        AutoFlag               := IniFile.ReadString('Last', 'MonthlyDuration',    '1');
        ConfigureAutoForm.MonthlyDuration := (AutoFlag <> '0');
        ConfigureAutoForm.BrowserExe := IniFile.ReadString('Last', 'BrowserExe',
            'C:\Program Files\Plus!\Microsoft Internet\IEXPLORE.EXE');
        ConfigureAutoForm.MailExe    := IniFile.ReadString('Last', 'MailExe',
            'C:\WINDOWS\EXPLORER.EXE /root,C:\WINDOWS\Internet Mail.' +
            '{89292102-4755-11cf-9DC2-00AA006C2B84}');
        ConfigureAutoForm.NewsExe    := IniFile.ReadString('Last', 'NewsExe',
            'C:\WINDOWS\EXPLORER.EXE /root,C:\WINDOWS\Internet News.' +
            '{89292103-4755-11cf-9DC2-00AA006C2B84}');
        ConfigureAutoForm.BrowserDir := IniFile.ReadString('Last', 'BrowserDir', '');
        ConfigureAutoForm.MailDir    := IniFile.ReadString('Last', 'MailDir',    '');
        ConfigureAutoForm.NewsDir    := IniFile.ReadString('Last', 'NewsDir',    '');
        SavePW                 := IniFile.ReadString('Last', 'Password',  '');
        if SavePW <> '' then
            PasswordEdit.Text := DeCrypt(SavePW)
        else
            PasswordEdit.Text := '';
        SavePW                 := IniFile.ReadString('Last', 'SavePW',    '0');
        SavePWCheckBox.Checked := (SavePW = '1');
        IniFile.Free;
        CancelButton.Enabled  := FALSE;
        ConnectButton.Enabled := TRUE;
        GetActiveConn;
        DisplayActiveConn;
        GetDuration;
        TimeAutoForm.Section := 'RAS_ENTRY_' + CrunchName(EntryNameComboBox.Text);
        TimeAutoForm.LoadFromIniFile;
        if ConfigureAutoForm.AutoConnect then
            PostMessage(Handle, WM_AUTOCONNECT, 0, 0);
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRasDialerForm.FormResize(Sender: TObject);
begin
    inherited;
    InfoListBox.Height := ClientHeight - InfoListBox.Top;
    InfoListBox.Width  := ClientWidth;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
function CrunchName(S : String) : String;
var
    I : Integer;
begin
    Result := '';
    for I := 1 to Length(S) do begin
        case S[I] of
        ' ' : Result := Result + '_';
        '=' : Result := Result + '\-';
        '@' : Result := Result + '\A';
        '_' : Result := Result + '\_';
        '\' : Result := Result + '\\';
        else
              Result := Result + S[I];
        end;
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRasDialerForm.SelectPhoneBookEntry(EntryName : String);
var
    I : Integer;
begin
    for I := 0 to EntryNameComboBox.Items.Count - 1 do begin
        if EntryNameComboBox.Items[I] = EntryName then begin
            EntryNameComboBox.ItemIndex := I;
            Exit;
        end;
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRasDialerForm.LoadPhoneBook;
var
    Entries  : array [0..15] of TRASENTRYNAME;
    cb       : DWORD;
    cEntries : DWORD;
    dwRet    : DWORD;
    Buf      : array [0..127] of char;
    I        : Integer;
begin
    FillChar(Entries, SizeOf(Entries), 0);
    Entries[0].dwSize := SizeOf(TRASENTRYNAME);
    cb := SizeOf(Entries);
    cEntries := 0;
    dwRet := RasEnumEntriesA(NIL, NIL, @Entries[0], @cb, @cEntries);
    if dwRet <> 0 then begin
        RasGetErrorStringA(dwRet, @Buf[0], SizeOf(Buf));
        LogMessage(Buf);
    end;
    EntryNameComboBox.Items.Clear;
    for I := 0 to cEntries - 1 do
        EntryNameComboBox.Items.Add(Entries[I].szEntryName);
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRasDialerForm.GetUserPassword;
var
    IniFile  : TIniFile;
    Password : String;
    EntryName : String;
    UserName : String;
begin
    if not ConfigureAutoForm.AutoPassword then
        Exit;

    IniFile   := TIniFile.Create(FIniFileName);
    EntryName := CrunchName(Trim(EntryNameComboBox.Text));
    UserName  := CrunchName(Trim(UserNameComboBox.Text));
    Password  := IniFile.ReadString('RAS_ENTRY_' + EntryName,
                                    'USER_' + UserName, '*');
    IniFile.Free;

    if Password <> '*' then
        PasswordEdit.Text := DeCrypt(Password)
    else
        PasswordEdit.Text := '';
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRasDialerForm.GetUserNameList;
var
    IniFile : TIniFile;
    List    : TStringList;
    I       : Integer;
    Buffer  : String;
begin
    if not ConfigureAutoForm.AutoUserName then
        Exit;

    List    := TStringList.Create;
    IniFile := TIniFile.Create(FIniFileName);
    IniFile.ReadSection('RAS_ENTRY_' + CrunchName(Trim(EntryNameComboBox.Text)),
                                     List);
    UserNameComboBox.Items.Clear;
    if List.Count > 0 then begin
        for I := 0 to List.Count - 1 do begin
            Buffer := List.Strings[I];
            if Copy(Buffer, 1, 5) = 'USER_' then
                UserNameComboBox.Items.Add(Copy(Buffer, 6, 100));
        end;
        if UserNameComboBox.Items.Count > 0 then
            UserNameComboBox.Text := UserNameComboBox.Items[0];
    end;
    IniFile.Free;
    List.DEstroy;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRasDialerForm.EntryNameComboBoxChange(Sender: TObject);
begin
    GetDuration;
    GetUserNameList;
    GetUserPassword;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRasDialerForm.UserNameComboBoxChange(Sender: TObject);
begin
    GetUserPassword;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRasDialerForm.DoProperties;
var
    dwRet         : DWORD;
    Buf           : Array [0..127] of char;
begin
    dwRet := RasEditPhonebookEntryA(Handle, nil, PChar(EntryNameComboBox.Text));
    if dwRet <> 0 then begin
        RasGetErrorStringA(dwRet, @Buf[0], SizeOf(Buf));
        LogMessage(Buf);
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRasDialerForm.DoNew;
var
    EntryName : String;
    dwRet     : DWORD;
    Buf       : Array [0..127] of char;
begin
    dwRet := RasCreatePhonebookEntryA(Handle, nil);
    if dwRet <> 0 then begin
        RasGetErrorStringA(dwRet, @Buf[0], SizeOf(Buf));
        LogMessage(Buf);
    end
    else begin
        EntryName := EntryNameCombobox.Text;
        LoadPhoneBook;
        SelectPhoneBookEntry(EntryName);
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRasDialerForm.MnuQuitClick(Sender: TObject);
begin
    Close;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRasDialerForm.MnuConnectClick(Sender: TObject);
begin
    DoConnect;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRasDialerForm.MnuPropertiesClick(Sender: TObject);
begin
    DoProperties;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRasDialerForm.MnuNewClick(Sender: TObject);
begin
    DoNew;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRasDialerForm.MnuAboutClick(Sender: TObject);
begin
    AboutForm.ShowModal;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRasDialerForm.MnuCancelClick(Sender: TObject);
begin
    DoCancel;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRasDialerForm.MnuConfigureClick(Sender: TObject);
begin
    DoConfigure;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRasDialerForm.DoConfigure;
begin
    ConfigureAutoForm.Configure;
    GetDuration;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRasDialerForm.RunInternetNewsReader1Click(Sender: TObject);
begin
    ConfigureAutoForm.ExecuteNews;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRasDialerForm.RunInternetBrowser1Click(Sender: TObject);
begin
    ConfigureAutoForm.ExecuteBrowser;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRasDialerForm.RunInternetMailReader1Click(Sender: TObject);
begin
    ConfigureAutoForm.ExecuteMail;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRasDialerForm.TimeRestrictions1Click(Sender: TObject);
begin
    inherited;
    with TimeAutoForm do begin
        Section := 'RAS_ENTRY_' + CrunchName(EntryNameComboBox.Text);
        Execute;
    end;
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
procedure TRasDialerForm.IPButtonClick(Sender: TObject);
var
    IPAddr : String;
begin
    IPAddr := RasGetIPAddress;
    if IPAddr > '' then
        InfoListBox.Items.Add('IP=' + IPAddr)
    else
        InfoListBox.Items.Add('IP unknown');
end;


{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}

end.

{* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}

⌨️ 快捷键说明

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