在應用程式內整合撥號上網,方便使用者無需手動撥號。開發環境:中文 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(¶ms, 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, ¶ms, NULL, NULL, &handle) == 0) {
MessageBox("已連線,按確定將掛斷");
} else {
MessageBox("對方無應答,請稍後再試");
}
wait.Restore();
RasHangUp(handle); // 使用者確認後掛斷
}
void CDialprocDlg::OnSelchangeDialupCombo() {
RASDIALPARAMS params; memset(¶ms, 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, ¶ms, &fCached);
m_UserId.SetWindowText(params.szUserName);
m_PasswordEdit.SetWindowText(params.szPassWord);
}
}
BOOL CDialprocDlg::OnInitDialog() {
CDialog::OnInitDialog();
SetupDialupCombo();
return TRUE;
}
利用 RAS API 即可輕鬆整合撥號功能,提升應用程式網路易用性。