ADSL拨号

#include <Ras.h>
#include <RasError.h>
#pragma comment(lib, "RasApi32.lib")

HRASCONN RasGetConnection(TCHAR *lpName)
{
	HRASCONN hRet;
	LPRASCONN lpConn;
	DWORD cbConn;
	DWORD cbOpt;
	DWORD dwRet;

	hRet = NULL;
	lpConn = NULL;
	cbConn = 0;
	dwRet = RasEnumConnections(lpConn, &cbConn, &cbOpt);
	if (dwRet == ERROR_BUFFER_TOO_SMALL || dwRet == ERROR_NOT_ENOUGH_MEMORY)
	{
		if (lpConn = (LPRASCONN)GlobalAlloc(GPTR, cbConn))
		{
			lpConn[0].dwSize = sizeof(RASCONN);
			if (RasEnumConnections(lpConn, &cbConn, &cbOpt) == 0)
			{
				for (DWORD i = 0; i < cbOpt; i++)
				{
					if (lstrcmpi(lpConn[i].szEntryName, lpName) == 0)
					{
						hRet = lpConn[i].hrasconn;
						break; // for i
					}
				}
			}
			GlobalFree(lpConn);
		}
	}
	return hRet;
}

BOOL RasDisConnect(HRASCONN RasConn)
{
	return (RasHangUp(RasConn) == 0);
}

BOOL RasReDial(TCHAR *lpName, TCHAR *PassWord)
{
	HRASCONN hRas;
	RASDIALPARAMS rdp;
	BOOL IsGetPassword;

	if (hRas = RasGetConnection(lpName))
	{
		if (!RasDisConnect(hRas))
		{
			return FALSE;
		}
		Sleep(10 * 1000);
		hRas = NULL;
	}
	memset(&rdp, 0, sizeof(rdp));
	rdp.dwSize = sizeof(rdp);
	lstrcpyn(rdp.szEntryName, lpName, _countof(rdp.szEntryName));
	if (RasGetEntryDialParams(NULL, &rdp, &IsGetPassword) == 0)
	{
		lstrcpyn(rdp.szPassword, PassWord, _countof(rdp.szPassword));
		if (RasDial(NULL, NULL, &rdp, 0, NULL, &hRas) == 0)
		{
			return TRUE;
		}
	}
	return FALSE;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值