当前位置: 开源爱好者 » 编程教程 » VC++教程 » 正文

VC++ 创建拨号连接 并自动挂断

一个比较早的拨号程序代码,基于VC++实现的电话拨号,可能现在用得少了,不过里面涉及的网络知识还是有必要掌握的,下面给出这个例子,是VC++书中的例子:

void CDialupDlg::OnSelchangeDialcombo() 
{	
	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); 
		TRACE("%s\n",params.szEntryName);
		BOOL p;
		//根据连接名获得用户名和密码
		RasGetEntryDialParams(NULL, &params, &p);
		m_UserId.SetWindowText(params.szUserName);
		m_PassWordEdit.SetWindowText(params.szPassword);
	}
}

void CDialupDlg::SetupDialupCombo()
{
	m_DialCombo.ResetContent();
	//m_DialCombo是对话框中Combox控件的命名
	DWORD n;
	DWORD dwSize=0;
	//枚举出本地电脑中的所有拨号连接。
	DWORD ret=RasEnumEntries(NULL, NULL, NULL, &dwSize,&n);
	n=dwSize/sizeof(RASENTRYNAME);
	RASENTRYNAME *entry=new RASENTRYNAME[n];
	if (entry) {
		entry[0].dwSize=sizeof(RASENTRYNAME);
		DWORD ret=RasEnumEntries(NULL, NULL, entry, &dwSize,&n);
		for (DWORD i=0;i<n;i++) {
			m_DialCombo.AddString(entry[i].szEntryName);
		}
		delete[] entry;
	}
}

void CDialupDlg::OnConnect() 
{
	CWaitCursor wait;
	RASDIALPARAMS params;
	memset(&params, '\0', sizeof(params));
	params.dwSize=sizeof(params);
	m_DialCombo.GetWindowText(params.szEntryName,sizeof(params.szEntryName)-1);
	strcpy(params.szPhoneNumber,"");
	m_UserId.GetWindowText(params.szUserName,sizeof(params.szUserName)-1);
	m_PassWordEdit.GetWindowText(params.szPassword,sizeof(params.szPassword)-1);
	//m_UserId 和m_PasswordEdit是对话框中两个Edit控件的命名
	HRASCONN handle;
	//指定的拨号连接。
	if (RasDial(NULL, NULL,&params,NULL, NULL, &handle)==0) 
	{
		MessageBox("已联接,如果按“确定”就会切断电话");
	}
	else
	{
		MessageBox("正在拨打的计算机没有应答,稍后请再试");
	}
	wait.Restore();
	//挂断
	RasHangUp(handle);	
}

连接到指定的拨号连接,已联接,如果按“确定”就会切断电话。

CopyRight 2018© 开源爱好者 All Rights Reserved 豫ICP备16030607号 隐私声明 网站地图