高分求助!!!怎样用VC在98下建立一拨号连接?

allfresh 2001-11-27 10:47:13
BOOL CreateTdxConnection()
{
//列举设备
RASDEVINFO *pdevinfo = new RASDEVINFO[10];
DWORD cb=10*sizeof(RASDEVINFO);
DWORD num_devices;
pdevinfo[0].dwSize = sizeof(RASDEVINFO);
DWORD ret = RasEnumDevices(pdevinfo, &cb, &num_devices);
if(ret != 0 || num_devices < 1) { delete pdevinfo; return FALSE; }
for(int i=0;i < num_devices;i++)
{
if(strcmp(pdevinfo[i].szDeviceType,RASDT_Modem)==0)
break;
}
if(i >= num_devices) { delete pdevinfo; return FALSE; }
//填充RASENTRY接口
RASENTRY entry;
memset(&entry, 0, sizeof(RASENTRY));
entry.dwSize = sizeof(RASENTRY);
entry.dwfOptions = RASEO_RemoteDefaultGateway | RASEO_ModemLights | RASEO_IpHeaderCompression | RASEO_SwCompression | RASEO_NetworkLogon;
entry.dwfNetProtocols = RASNP_Ip; //TCPIP协议
entry.dwFramingProtocol = RASFP_Ppp; //PPP方式
strcpy(entry.szDeviceType, pdevinfo[i].szDeviceType);
strcpy(entry.szDeviceName, pdevinfo[i].szDeviceName);
strcpy(entry.szLocalPhoneNumber,"");

ret = RasSetEntryProperties(NULL,"拨号连接1",&entry,sizeof(RASENTRY),NULL,0);

delete pdevinfo;
if(ret != 0) return FALSE;
return TRUE;
}

这段代码好象在98和Me下不生效(在2000下可以)!!
Help!
...全文
240 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
0313700000 2002-03-01
  • 打赏
  • 举报
回复
收藏先~~
Frank0233 2002-03-01
  • 打赏
  • 举报
回复
网上很多
Frank0233 2002-03-01
  • 打赏
  • 举报
回复
bool CTstDlg::DialUp()
{
RASDIALPARAMS rdParams;
rdParams.dwSize = sizeof(RASDIALPARAMS);
rdParams.szEntryName[0] = '\0';
lstrcpy( rdParams.szPhoneNumber, m_strPhoneNumber );
rdParams.szCallbackNumber[0] = '\0';
lstrcpy( rdParams.szUserName, m_strUserName );
lstrcpy( rdParams.szPassword, m_strPassword );
rdParams.szDomain[0] = '\0';

HRASCONN hRasConn = NULL;
DWORD dwRet = RasDial( NULL, NULL, &rdParams, 0L, NULL, &hRasConn );
if ( dwRet == 0 ) return true;
char szBuf[256];
if ( RasGetErrorString( (UINT)dwRet, (LPSTR)szBuf, 256 ) != 0 )
wsprintf( (LPSTR)szBuf, "Undefined RAS Dial Error (%ld).", dwRet );
RasHangUp( hRasConn );
MessageBox( (LPSTR)szBuf, "Error", MB_OK | MB_ICONSTOP );
return false;
}
allfresh 2002-02-24
  • 打赏
  • 举报
回复
thanks.
Try it
ynyn 2002-02-24
  • 打赏
  • 举报
回复
http://www.csdn.net/expert/topic/357/357042.xml
masterz 2002-02-23
  • 打赏
  • 举报
回复
Programmatically Create Dialup Connection Objects
http://www.codeguru.com/internet/rasabslay.shtml
masterz 2002-02-23
  • 打赏
  • 举报
回复
http://www.codeguru.com/internet/rasabslay.shtml
Programmatically Create Dialup Connection Objects
allfresh 2002-02-23
  • 打赏
  • 举报
回复
再提提
congcongguoke 2002-01-16
  • 打赏
  • 举报
回复
我也想知道这个问题如何解决,如果谁知道请e_mail一份到ivrbuilder@yeah.net
allfresh 2001-12-26
  • 打赏
  • 举报
回复
再提提
allfresh 2001-12-23
  • 打赏
  • 举报
回复
再提提
smallfool 2001-11-30
  • 打赏
  • 举报
回复
这好象需要RasDial等函数来做吧.很麻烦,以前曾经做过,很长时间没有接触了.不过www.codeguru.com应该有类似的例子,你可以到那里找找看.
allfresh 2001-11-29
  • 打赏
  • 举报
回复
to Lighter(火机)
拨号文件(.dun)中好象与我建立的拨号连接没有关系,请教!
Lighter 2001-11-28
  • 打赏
  • 举报
回复
拨号文件(.dun)都是文本的啊!而且是INI格式,可以用WritePrivateProfileString之类函数自己写一个。
CoolBoy_007 2001-11-27
  • 打赏
  • 举报
回复
查MSDN,TAPI,保证让你满意!
allfresh 2001-11-27
  • 打赏
  • 举报
回复
to alphagx(alpha) 
谢谢!这些代码好象跟IE连接到互联网有关,不能真正地建立连接!
alphagx 2001-11-27
  • 打赏
  • 举报
回复
最后在析构时, FreeLibray
_WININET_DATA::~_WININET_DATA()
{
if (m_hWininet)
{
FreeLibrary(m_hWininet);
m_hWininet = NULL;
}
}
alphagx 2001-11-27
  • 打赏
  • 举报
回复
class _WININET_DATA
{
public:
//Constructors /Destructors
_WININET_DATA();
~_WININET_DATA();

//typedefs of the function pointers
typedef BOOL (WINAPI INTERNETGETCONNECTEDSTATE)(LPDWORD, DWORD);
typedef INTERNETGETCONNECTEDSTATE* LPINTERNETGETCONNECTEDSTATE;
typedef BOOL (WINAPI INTERNETAUTODIALHANGUP)(DWORD);
typedef INTERNETAUTODIALHANGUP* LPINTERNETAUTODIALHANGUP;
typedef BOOL (WINAPI INTERNETATTEMPCONNECT)(DWORD);
typedef INTERNETATTEMPCONNECT* LPINTERNETATTEMPCONNECT;


//Member variables
HINSTANCE m_hWininet; //Instance handle of the "Wininet.dll" which houses the 2 functions we want
LPINTERNETGETCONNECTEDSTATE m_lpfnInternetGetConnectedState;
LPINTERNETAUTODIALHANGUP m_lpfnInternetAutoDialHangup;
LPINTERNETATTEMPCONNECT m_lpfnInternetAttemptConnect;
};

_WININET_DATA::_WININET_DATA()
{
m_hWininet = LoadLibrary(_T("WININET.DLL"));
if (m_hWininet)
{
m_lpfnInternetGetConnectedState = (LPINTERNETGETCONNECTEDSTATE) GetProcAddress(m_hWininet, "InternetGetConnectedState");
m_lpfnInternetAutoDialHangup = (LPINTERNETAUTODIALHANGUP) GetProcAddress(m_hWininet, "InternetAutodialHangup");
m_lpfnInternetAttemptConnect = (LPINTERNETATTEMPCONNECT) GetProcAddress(m_hWininet, "InternetAttemptConnect");
}
}
alphagx 2001-11-27
  • 打赏
  • 举报
回复
上面的代码是从我在一份别人的源码中获得的,
但不知对你有没有用,

_WININET_DATA _WinInetData;

BOOL CXXXX::ConnectToInternet()
{
if (_WinInetData.m_lpfnInternetGetConnectedState && _WinInetData.m_lpfnInternetAttemptConnect)
{
// Check to see if an internet connection exists already.
// bInternet = TRUE internet connection exists.
// bInternet = FALSE internet connection does not exist
DWORD dwFlags;
BOOL bInternet = _WinInetData.m_lpfnInternetGetConnectedState(&dwFlags, 0);
if (!bInternet)
{
// Attempt to establish internet connection, probably
// using Dial-up connection.
// static method CloseInternetConnection() Closes dial-up connection
// if any.
DWORD dwResult = _WinInetData.m_lpfnInternetAttemptConnect(0);
if (dwResult != ERROR_SUCCESS)
{
SetLastError(dwResult);
return FALSE;
}
}
return TRUE;
}
else
{
//Wininet is not available. Do what would happen if the dll
//was present but the function call failed
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return FALSE;
}
}


BOOL CXXXX::CloseInternetConnection()
{
if (_WinInetData.m_lpfnInternetAutoDialHangup)
{
// Make sure any connection through a modem is 'closed'.
return _WinInetData.m_lpfnInternetAutoDialHangup(0);
}
else
{
//Wininet is not available. Do what would happen if the dll
//was present but the function call failed
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return FALSE;
}
}
allfresh 2001-11-27
  • 打赏
  • 举报
回复
to acptvc(微软全球技术中心 VC技术支持) 
谢谢!! "首先手动创建一个到ISP的拨号连接。",我的本意是用程序来自动建立,并且不一定非得连接到ISP
加载更多回复(3)

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧