首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

VC++ 實現撥號上網功能 (RAS API)

     編輯:VC 教學

需求與環境

在應用程式內整合撥號上網,方便使用者無需手動撥號。開發環境:中文 Windows 95 + VC++ 5.0,對話框架專案。

介面設計

  • 下拉方塊 m_DialCombo:列出系統現有撥號連線項目。
  • 編輯框 m_UserId、m_PasswordEdit:輸入帳號密碼。
  • 按鈕「接續」:觸發撥號。

核心代碼 (需包含 <ras.h>、連結 rasapi32.lib)

列舉撥號項目填充下拉框

void CDialprocDlg::SetupDialupCombo() {
    m_DialCombo.ResetContent();
    DWORD n, dwSize = 0;
    RasEnumEntries(NULL, NULL, NULL, &dwSize, &n); // 先取得所需緩衝區大小
    n = dwSize / sizeof(RASENTRYNAME);
    RASENTRYNAME* entry = new RASENTRYNAME[n];
    if (entry) {
        entry[0].dwSize = sizeof(RASENTRYNAME);
        RasEnumEntries(NULL, NULL, entry, &dwSize, &n);
        for (DWORD i = 0; i < n; i++)
            m_DialCombo.AddString(entry[i].szEntryName);
        delete[] entry;
    }
}

撥號連線按鈕處理

void CDialprocDlg::OnConnectbutton() {
    CWaitCursor wait;
    RASDIALPARAMS params; memset(&params, 0, sizeof(params));
    params.dwSize = sizeof(params);
    m_DialCombo.GetWindowText(params.szEntryName, sizeof(params.szEntryName)-1);
    m_UserId.GetWindowText(params.szUserName, sizeof(params.szUserName)-1);
    m_PasswordEdit.GetWindowText(params.szPassWord, sizeof(params.szPassWord)-1);
    strcpy(params.szPhoneNumber, ""); // 使用預設號碼

    HRASCONN handle;
    if (RasDial(NULL, NULL, &params, NULL, NULL, &handle) == 0) {
        MessageBox("已連線,按確定將掛斷");
    } else {
        MessageBox("對方無應答,請稍後再試");
    }
    wait.Restore();
    RasHangUp(handle); // 使用者確認後掛斷
}

下拉框選擇變更自動填入帳密

void CDialprocDlg::OnSelchangeDialupCombo() {
    RASDIALPARAMS params; memset(&params, 0, sizeof(params));
    params.dwSize = sizeof(RASDIALPARAMS);
    int sel = m_DialCombo.GetCurSel();
    if (sel >= 0) {
        m_DialCombo.GetLBText(sel, params.szEntryName);
        BOOL fCached;
        RasGetEntryDialParams(NULL, &params, &fCached);
        m_UserId.SetWindowText(params.szUserName);
        m_PasswordEdit.SetWindowText(params.szPassWord);
    }
}

初始化

BOOL CDialprocDlg::OnInitDialog() {
    CDialog::OnInitDialog();
    SetupDialupCombo();
    return TRUE;
}

結語

利用 RAS API 即可輕鬆整合撥號功能,提升應用程式網路易用性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved