上面的代码是从我在一份别人的源码中获得的,
但不知对你有没有用,_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;
}
}
但不知对你有没有用,_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;
}
}
解决方案 »
- 求大神!!有关对话框的!
- 编程
- Login登陆框 限制输入第一个数字 问题,谢谢
- Win32 编程问题,请教各位...
- 讨论怎样看候捷的《深入浅出MFC》,和大家看这本书的感想,看这本书所遇到的困难和经历,大家说清楚一点呀!小弟我愿意拿出100分献给大哥
- 计时器每隔一秒启动一个工作线程,在这个线程中和服务器通信。可是启动第二线程时即会出错,什么原因???
- CopyFile小问题,30分钟内结帖!!!
- 如何把右下角的整个托盘都隐藏?????
- 整个程序的全局变量该如何定义?
- 如何在VB PB这些没有指针的环境下得到DLL函数中指针指向的一组数据 我是新手 请多指教
- 如何在一个类中定义一个可以异步执行的函数,即不用等该函数执行完成就把cpu的占要权转让给主程序????
- windows下有符号链接吗?
{
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");
}
}
_WININET_DATA::~_WININET_DATA()
{
if (m_hWininet)
{
FreeLibrary(m_hWininet);
m_hWininet = NULL;
}
}
谢谢!这些代码好象跟IE连接到互联网有关,不能真正地建立连接!
然后调用系统wininet.dll中的InternetAutodial函数就可以了(假设您的连接为默认连接)。请注意在VC中加入wininet.h头文件,项目中加入wininet.lib文件。关于拨号连接的详细信息,请参见Microsoft Win32 Internet Function introduction.
您可以在msdn中找到与InternetDial相关的一系列函数。======================
- 微软全球技术中心VC技术支持
本贴子仅供CSDN的用户作为参考信息使用。其内容不具备任何法律保障。您需要考虑到并承担使用此信息可能带来的风险。具体事项可参见使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。
为了为您创建更好的讨论环境,请参加我们的用户满意度调查(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。
======================
谢谢!! "首先手动创建一个到ISP的拨号连接。",我的本意是用程序来自动建立,并且不一定非得连接到ISP
拨号文件(.dun)中好象与我建立的拨号连接没有关系,请教!
Programmatically Create Dialup Connection Objects
http://www.codeguru.com/internet/rasabslay.shtml
{
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;
}