199 lines
4.4 KiB
C++
199 lines
4.4 KiB
C++
//+---------------------------------------------------------------------------
|
||
//
|
||
// Microsoft Windows
|
||
// Copyright (C) Microsoft Corporation, 1997 - 2000
|
||
//
|
||
// File: N E T I N E T . C P P
|
||
//
|
||
// Contents: Routines supporting RAS interoperability
|
||
//
|
||
// Notes:
|
||
//
|
||
// Author: billi 07 03 2001
|
||
//
|
||
// History:
|
||
//
|
||
//----------------------------------------------------------------------------
|
||
|
||
|
||
#include "stdafx.h"
|
||
#include "Util.h"
|
||
#include "TheApp.h"
|
||
|
||
#include <lmjoin.h>
|
||
#include <devguid.h>
|
||
|
||
#include "NetUtil.h"
|
||
#include "NetInet.h"
|
||
|
||
|
||
#define c_szIConnDwnAgent WIZARDNAME // agent for InternetOpen()
|
||
|
||
|
||
|
||
HRESULT GetInternetAutodialMode( DWORD *pdwMode )
|
||
//+---------------------------------------------------------------------------
|
||
//
|
||
// Function: GetInternetAutodialMode
|
||
//
|
||
// Purpose: Gets the Autodial mode setting in the IE5+ dialer
|
||
//
|
||
// Arguments: pdwMode AUTODIAL_MODE_NEVER
|
||
// AUTODIAL_MODE_ALWAYS
|
||
// AUTODIAL_MODE_NO_NETWORK_PRESENT
|
||
//
|
||
// Returns: HRESULT
|
||
//
|
||
// Author: billi 22/01/01
|
||
//
|
||
// Notes:
|
||
//
|
||
{
|
||
HRESULT hr;
|
||
|
||
ASSERT(NULL != pdwMode);
|
||
|
||
if ( NULL != pdwMode )
|
||
{
|
||
HINTERNET hInternet;
|
||
|
||
hr = S_OK;
|
||
*pdwMode = 0;
|
||
hInternet = InternetOpen( c_szIConnDwnAgent, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0 );
|
||
|
||
if ( NULL == hInternet )
|
||
{
|
||
hr = HrFromLastWin32Error();
|
||
}
|
||
else
|
||
{
|
||
DWORD dwLength = sizeof(*pdwMode);
|
||
|
||
// The flag only exists for IE5, this call
|
||
// will have no effect if IE5 is not present.
|
||
|
||
BOOL bOk = InternetQueryOption( hInternet,
|
||
INTERNET_OPTION_AUTODIAL_MODE,
|
||
pdwMode,
|
||
&dwLength );
|
||
|
||
if ( !bOk )
|
||
{
|
||
hr = HrFromLastWin32Error();
|
||
}
|
||
|
||
InternetCloseHandle( hInternet );
|
||
}
|
||
}
|
||
else
|
||
{
|
||
hr = E_POINTER;
|
||
}
|
||
|
||
return hr;
|
||
}
|
||
|
||
|
||
|
||
HRESULT HrSetInternetAutodialMode( DWORD dwMode )
|
||
//+---------------------------------------------------------------------------
|
||
//
|
||
// Function: HrSetInternetAutodialMode
|
||
//
|
||
// Purpose: Sets the Autodial mode setting in the IE5+ dialer
|
||
//
|
||
// Arguments: dwMode AUTODIAL_MODE_NEVER
|
||
// AUTODIAL_MODE_ALWAYS
|
||
// AUTODIAL_MODE_NO_NETWORK_PRESENT
|
||
//
|
||
// Returns: HRESULT
|
||
//
|
||
// Author: billi 22/01/01
|
||
//
|
||
// Notes:
|
||
//
|
||
{
|
||
HRESULT hr = S_OK;
|
||
HINTERNET hInternet;
|
||
|
||
hInternet = InternetOpen( c_szIConnDwnAgent, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0 );
|
||
|
||
if ( NULL != hInternet )
|
||
{
|
||
// The flag only exists for IE5, this call
|
||
// will have no effect if IE5 is not present.
|
||
|
||
BOOL bOk = InternetSetOption( hInternet,
|
||
INTERNET_OPTION_AUTODIAL_MODE,
|
||
&dwMode,
|
||
sizeof(dwMode) );
|
||
|
||
if ( !bOk )
|
||
{
|
||
hr = HrFromLastWin32Error();
|
||
}
|
||
|
||
InternetCloseHandle( hInternet );
|
||
}
|
||
else
|
||
{
|
||
hr = HrFromLastWin32Error();
|
||
}
|
||
|
||
return hr;
|
||
}
|
||
|
||
|
||
|
||
HRESULT HrSetAutodial( DWORD dwMode )
|
||
//+---------------------------------------------------------------------------
|
||
//
|
||
// Function: HrSetAutodial
|
||
//
|
||
// Purpose: Sets the specified network connection to the specified mode.
|
||
//
|
||
// Arguments: dwMode AUTODIAL_MODE_NEVER
|
||
// AUTODIAL_MODE_ALWAYS
|
||
// AUTODIAL_MODE_NO_NETWORK_PRESENT
|
||
//
|
||
// Returns: HRESULT
|
||
//
|
||
// Author: billi 22/01/01
|
||
//
|
||
// Notes:
|
||
//
|
||
{
|
||
#ifdef SETAUTODIALMODEDOWNONLY
|
||
|
||
DWORD dwCurrentMode;
|
||
HRESULT hr;
|
||
|
||
// If we are trying to set the autodial mode to an extreme then
|
||
// we go ahead and set it.
|
||
|
||
if ( AUTODIAL_MODE_NO_NETWORK_PRESENT != dwMode )
|
||
{
|
||
hr = HrSetInternetAutodialMode( dwMode );
|
||
}
|
||
else
|
||
{
|
||
// If we are trying to set autodial mode to AUTODIAL_MODE_NO_NETWORK_PRESENT
|
||
// then we only need to set if the current state is AUTODIAL_MODE_ALWAYS.
|
||
|
||
hr = GetInternetAutodialMode( &dwCurrentMode );
|
||
|
||
if ( SUCCEEDED(hr) && ( AUTODIAL_MODE_ALWAYS == dwCurrentMode ) )
|
||
{
|
||
hr = HrSetInternetAutodialMode( dwMode );
|
||
}
|
||
}
|
||
|
||
return hr;
|
||
|
||
#else
|
||
|
||
return HrSetInternetAutodialMode( dwMode );
|
||
|
||
#endif
|
||
}
|