mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
445 lines
14 KiB
445 lines
14 KiB
//*********************************************************************
|
|
//* Microsoft Windows **
|
|
//* Copyright(c) Microsoft Corp., 1999 **
|
|
//*********************************************************************
|
|
//
|
|
// Directions.CPP - Header for the implementation of CDirections
|
|
//
|
|
// HISTORY:
|
|
//
|
|
// 1/27/99 a-jaswed Created.
|
|
//
|
|
|
|
#include "direct.h"
|
|
#include "appdefs.h"
|
|
#include "dispids.h"
|
|
#include "msobmain.h"
|
|
#include "resource.h"
|
|
|
|
DISPATCHLIST DirectionsExternalInterface[] =
|
|
{
|
|
{L"get_DoMouseTutorial", DISPID_DIRECTIONS_GET_DOMOUSETUTORIAL },
|
|
{L"get_DoOEMRegistration", DISPID_DIRECTIONS_GET_DOOEMREGISTRATION },
|
|
{L"get_DoRegionalKeyboard", DISPID_DIRECTIONS_GET_DOREGIONALKEYBOARD },
|
|
{L"get_DoOEMHardwareCheck", DISPID_DIRECTIONS_GET_DOOEMHARDWARECHECK },
|
|
{L"get_DoBrowseNow", DISPID_DIRECTIONS_GET_DOBROWSENOW },
|
|
{L"get_ISPSignup", DISPID_DIRECTIONS_GET_ISPSIGNUP },
|
|
{L"get_Offline", DISPID_DIRECTIONS_GET_OFFLINE },
|
|
{L"get_OEMOfferCode", DISPID_DIRECTIONS_GET_OFFERCODE },
|
|
{L"get_AppMode", DISPID_DIRECTIONS_GET_APPMODE },
|
|
{L"get_OEMCust", DISPID_DIRECTIONS_GET_OEMCUST },
|
|
{L"get_DoOEMAddRegistration", DISPID_DIRECTIONS_GET_DOOEMADDREGISTRATION},
|
|
{L"get_DoIMETutorial", DISPID_DIRECTIONS_GET_DOIMETUTORIAL },
|
|
{L"get_DoTimeZone", DISPID_DIRECTIONS_GET_DOTIMEZONE },
|
|
{L"get_TimeZoneValue", DISPID_DIRECTIONS_GET_TIMEZONEVALUE },
|
|
{L"get_DoSkipAnimation", DISPID_DIRECTIONS_GET_DOSKIPANIMATION },
|
|
{L"get_DoWelcomeFadeIn", DISPID_DIRECTIONS_GET_DOWELCOMEFADEIN },
|
|
{L"get_IntroOnly", DISPID_DIRECTIONS_GET_INTROONLY },
|
|
{L"get_AgentDisabled", DISPID_DIRECTIONS_GET_AGENTDISABLED },
|
|
{L"get_ShowISPMigration", DISPID_DIRECTIONS_GET_SHOWISPMIGRATION },
|
|
{L"get_DoJoinDomain", DISPID_DIRECTIONS_GET_DOJOINDOMAIN },
|
|
{L"get_DoAdminPassword", DISPID_DIRECTIONS_GET_DOADMINPASSWORD }
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////////
|
|
// CDirections::CDirections
|
|
CDirections::CDirections(HINSTANCE hInstance, DWORD dwAppMode)
|
|
{
|
|
|
|
// Init member vars
|
|
m_cRef = 0;
|
|
m_hInstance = hInstance;
|
|
m_dwAppMode = dwAppMode;
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////
|
|
// CDirections::~CDirections
|
|
CDirections::~CDirections()
|
|
{
|
|
assert(m_cRef == 0);
|
|
}
|
|
|
|
////////////////////////////////////////////////
|
|
////////////////////////////////////////////////
|
|
//// GET / SET :: DirectionsLocale
|
|
////
|
|
HRESULT CDirections::get_DoMouseTutorial(LPVARIANT pvResult)
|
|
{
|
|
return GetINIKeyBSTR(m_hInstance, INI_SETTINGS_FILENAME, IDS_SECTION_OPTIONS,
|
|
IDS_KEY_MOUSETUTORIAL, pvResult);
|
|
}
|
|
|
|
HRESULT CDirections::get_DoOEMRegistration(LPVARIANT pvResult)
|
|
{
|
|
return GetINIKeyUINT(m_hInstance, INI_SETTINGS_FILENAME, IDS_SECTION_OEMREGISTRATIONPAGE,
|
|
IDS_KEY_OEMREGPAGE, pvResult);
|
|
}
|
|
|
|
HRESULT CDirections::get_DoRegionalKeyboard(LPVARIANT pvResult)
|
|
{
|
|
return GetINIKeyUINT(m_hInstance, INI_SETTINGS_FILENAME, IDS_SECTION_OPTIONS,
|
|
IDS_KEY_INTL_SETTINGS, pvResult);
|
|
}
|
|
|
|
HRESULT CDirections::get_DoOEMHardwareCheck(LPVARIANT pvResult)
|
|
{
|
|
return GetINIKeyUINT(m_hInstance, INI_SETTINGS_FILENAME, IDS_SECTION_OEMHARDWARECHECK,
|
|
IDS_KEY_OEMHWCHECK, pvResult);
|
|
}
|
|
|
|
HRESULT CDirections::get_DoBrowseNow(LPVARIANT pvResult)
|
|
{
|
|
return GetINIKeyUINT(m_hInstance, INI_SETTINGS_FILENAME, IDS_SECTION_BROWSENOW,
|
|
IDS_KEY_BROWSENOW, pvResult);
|
|
}
|
|
|
|
HRESULT CDirections::get_ISPSignup(LPVARIANT pvResult)
|
|
{
|
|
return GetINIKeyBSTR(m_hInstance, INI_SETTINGS_FILENAME, IDS_SECTION_SIGNUP,
|
|
IDS_KEY_ISPSIGNUP, pvResult);
|
|
}
|
|
|
|
HRESULT CDirections::get_Offline(LPVARIANT pvResult)
|
|
{
|
|
return GetINIKeyUINT(m_hInstance, INI_SETTINGS_FILENAME, IDS_SECTION_STARTUPOPTIONS,
|
|
IDS_KEY_OFFLINE, pvResult);
|
|
}
|
|
|
|
HRESULT CDirections::get_OEMOfferCode(LPVARIANT pvResult)
|
|
{
|
|
return GetINIKeyBSTR(m_hInstance, INI_SETTINGS_FILENAME, IDS_SECTION_SIGNUP,
|
|
IDS_KEY_OEMOFFERCODE, pvResult);
|
|
}
|
|
|
|
HRESULT CDirections::get_OEMCust(LPVARIANT pvResult)
|
|
{
|
|
return GetINIKeyUINT(m_hInstance, INI_SETTINGS_FILENAME, IDS_SECTION_OPTIONS,
|
|
IDS_KEY_OEMCUST, pvResult);
|
|
}
|
|
|
|
HRESULT CDirections::get_DoOEMAddRegistration(LPVARIANT pvResult)
|
|
{
|
|
return GetINIKeyUINT(m_hInstance, INI_SETTINGS_FILENAME, IDS_SECTION_OEMREGISTRATIONPAGE,
|
|
IDS_KEY_OEMADDREGPAGE, pvResult);
|
|
}
|
|
|
|
HRESULT CDirections::get_DoTimeZone(LPVARIANT pvResult)
|
|
{
|
|
return GetINIKeyUINT(m_hInstance, INI_SETTINGS_FILENAME, IDS_SECTION_OPTIONS,
|
|
IDS_KEY_TIMEZONE, pvResult);
|
|
}
|
|
|
|
HRESULT CDirections::get_TimeZoneValue(LPVARIANT pvResult)
|
|
{
|
|
return GetINIKeyBSTR(m_hInstance, INI_SETTINGS_FILENAME, IDS_SECTION_OPTIONS,
|
|
IDS_KEY_TIMEZONEVAL, pvResult);
|
|
}
|
|
|
|
HRESULT CDirections::get_DoIMETutorial(LPVARIANT pvResult)
|
|
{
|
|
return GetINIKeyUINT(m_hInstance, INI_SETTINGS_FILENAME, IDS_SECTION_OPTIONS,
|
|
IDS_KEY_IMETUTORIAL, pvResult);
|
|
}
|
|
|
|
HRESULT CDirections::get_DoSkipAnimation(LPVARIANT pvResult)
|
|
{
|
|
return GetINIKeyUINT(m_hInstance, INI_SETTINGS_FILENAME, IDS_SECTION_STARTUPOPTIONS,
|
|
IDS_SKIPANIMATION, pvResult);
|
|
}
|
|
|
|
HRESULT CDirections::get_DoWelcomeFadeIn(LPVARIANT pvResult)
|
|
{
|
|
return GetINIKeyUINT(m_hInstance, INI_SETTINGS_FILENAME, IDS_SECTION_STARTUPOPTIONS,
|
|
IDS_DOWELCOMEFADEIN, pvResult);
|
|
}
|
|
|
|
HRESULT CDirections::get_IntroOnly(LPVARIANT pvResult)
|
|
{
|
|
return GetINIKeyUINT(m_hInstance, INI_SETTINGS_FILENAME, IDS_SECTION_OPTIONS,
|
|
IDS_INTROONLY, pvResult);
|
|
}
|
|
|
|
HRESULT CDirections::get_AgentDisabled(LPVARIANT pvResult)
|
|
{
|
|
return GetINIKeyUINT(m_hInstance, INI_SETTINGS_FILENAME, IDS_SECTION_OPTIONS,
|
|
IDS_AGENTDISABLED, pvResult);
|
|
}
|
|
|
|
HRESULT CDirections::get_ShowISPMigration(LPVARIANT pvResult)
|
|
{
|
|
return GetINIKeyUINT(m_hInstance, INI_SETTINGS_FILENAME, IDS_SECTION_SIGNUP,
|
|
IDS_KEY_SHOWISPMIGRATION, pvResult);
|
|
}
|
|
HRESULT CDirections::get_DoJoinDomain(LPVARIANT pvResult)
|
|
{
|
|
return GetINIKeyUINT(m_hInstance, INI_SETTINGS_FILENAME, IDS_SECTION_OPTIONS,
|
|
IDS_KEY_JOINDOMAIN, pvResult);
|
|
}
|
|
|
|
HRESULT CDirections::get_DoAdminPassword(LPVARIANT pvResult)
|
|
{
|
|
return GetINIKeyUINT(m_hInstance, INI_SETTINGS_FILENAME, IDS_SECTION_OPTIONS,
|
|
IDS_KEY_ADMINPASSWORD, pvResult);
|
|
}
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////
|
|
/////// IUnknown implementation
|
|
///////
|
|
///////
|
|
|
|
/////////////////////////////////////////////////////////////
|
|
// CDirections::QueryInterface
|
|
STDMETHODIMP CDirections::QueryInterface(REFIID riid, LPVOID* ppvObj)
|
|
{
|
|
// must set out pointer parameters to NULL
|
|
*ppvObj = NULL;
|
|
|
|
if ( riid == IID_IUnknown)
|
|
{
|
|
AddRef();
|
|
*ppvObj = (IUnknown*)this;
|
|
return ResultFromScode(S_OK);
|
|
}
|
|
|
|
if (riid == IID_IDispatch)
|
|
{
|
|
AddRef();
|
|
*ppvObj = (IDispatch*)this;
|
|
return ResultFromScode(S_OK);
|
|
}
|
|
|
|
// Not a supported interface
|
|
return ResultFromScode(E_NOINTERFACE);
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////
|
|
// CDirections::AddRef
|
|
STDMETHODIMP_(ULONG) CDirections::AddRef()
|
|
{
|
|
return ++m_cRef;
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////
|
|
// CDirections::Release
|
|
STDMETHODIMP_(ULONG) CDirections::Release()
|
|
{
|
|
return --m_cRef;
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////
|
|
/////// IDispatch implementation
|
|
///////
|
|
///////
|
|
|
|
/////////////////////////////////////////////////////////////
|
|
// CDirections::GetTypeInfo
|
|
STDMETHODIMP CDirections::GetTypeInfo(UINT, LCID, ITypeInfo**)
|
|
{
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////
|
|
// CDirections::GetTypeInfoCount
|
|
STDMETHODIMP CDirections::GetTypeInfoCount(UINT* pcInfo)
|
|
{
|
|
return E_NOTIMPL;
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////
|
|
// CDirections::GetIDsOfNames
|
|
STDMETHODIMP CDirections::GetIDsOfNames(REFIID riid,
|
|
OLECHAR** rgszNames,
|
|
UINT cNames,
|
|
LCID lcid,
|
|
DISPID* rgDispId)
|
|
{
|
|
|
|
HRESULT hr = DISP_E_UNKNOWNNAME;
|
|
rgDispId[0] = DISPID_UNKNOWN;
|
|
|
|
for (int iX = 0; iX < sizeof(DirectionsExternalInterface)/sizeof(DISPATCHLIST); iX ++)
|
|
{
|
|
if(lstrcmp(DirectionsExternalInterface[iX].szName, rgszNames[0]) == 0)
|
|
{
|
|
rgDispId[0] = DirectionsExternalInterface[iX].dwDispID;
|
|
hr = NOERROR;
|
|
break;
|
|
}
|
|
}
|
|
|
|
// Set the disid's for the parameters
|
|
if (cNames > 1)
|
|
{
|
|
// Set a DISPID for function parameters
|
|
for (UINT i = 1; i < cNames ; i++)
|
|
rgDispId[i] = DISPID_UNKNOWN;
|
|
}
|
|
|
|
return hr;
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////
|
|
// CDirections::Invoke
|
|
HRESULT CDirections::Invoke
|
|
(
|
|
DISPID dispidMember,
|
|
REFIID riid,
|
|
LCID lcid,
|
|
WORD wFlags,
|
|
DISPPARAMS* pdispparams,
|
|
VARIANT* pvarResult,
|
|
EXCEPINFO* pexcepinfo,
|
|
UINT* puArgErr
|
|
)
|
|
{
|
|
HRESULT hr = S_OK;
|
|
|
|
switch(dispidMember)
|
|
{
|
|
case DISPID_DIRECTIONS_GET_AGENTDISABLED:
|
|
TRACE(L"DISPID_DIRECTIONS_GET_AGENTDISABLED\n");
|
|
if (NULL != pvarResult)
|
|
get_AgentDisabled(pvarResult);
|
|
break;
|
|
|
|
case DISPID_DIRECTIONS_GET_DOMOUSETUTORIAL:
|
|
TRACE(L"DISPID_DIRECTIONS_GET_DOMOUSETUTORIAL\n");
|
|
if (NULL != pvarResult)
|
|
get_DoMouseTutorial(pvarResult);
|
|
break;
|
|
|
|
case DISPID_DIRECTIONS_GET_DOTIMEZONE:
|
|
TRACE(L"DISPID_DIRECTIONS_GET_DOTIMEZONE\n");
|
|
if (NULL != pvarResult)
|
|
get_DoTimeZone(pvarResult);
|
|
break;
|
|
|
|
case DISPID_DIRECTIONS_GET_DOIMETUTORIAL:
|
|
TRACE(L"DISPID_DIRECTIONS_GET_DOIMETUTORIAL\n");
|
|
if (NULL != pvarResult)
|
|
get_DoIMETutorial(pvarResult);
|
|
break;
|
|
|
|
case DISPID_DIRECTIONS_GET_TIMEZONEVALUE:
|
|
TRACE(L"DISPID_DIRECTIONS_GET_TIMEZONEVALUE\n");
|
|
if (NULL != pvarResult)
|
|
get_TimeZoneValue(pvarResult);
|
|
break;
|
|
|
|
case DISPID_DIRECTIONS_GET_DOOEMREGISTRATION:
|
|
TRACE(L"DISPID_DIRECTIONS_GET_DOOEMREGISTRATION\n");
|
|
if (NULL != pvarResult)
|
|
get_DoOEMRegistration(pvarResult);
|
|
break;
|
|
|
|
case DISPID_DIRECTIONS_GET_DOREGIONALKEYBOARD:
|
|
TRACE(L"DISPID_DIRECTIONS_GET_DOREGIONALKEYBOARD\n");
|
|
if (NULL != pvarResult)
|
|
get_DoRegionalKeyboard(pvarResult);
|
|
break;
|
|
|
|
case DISPID_DIRECTIONS_GET_DOOEMHARDWARECHECK:
|
|
TRACE(L"DISPID_DIRECTIONS_GET_DOOEMHARDWARECHECK\n");
|
|
if (NULL != pvarResult)
|
|
get_DoOEMHardwareCheck(pvarResult);
|
|
break;
|
|
|
|
case DISPID_DIRECTIONS_GET_DOBROWSENOW:
|
|
TRACE(L"DISPID_DIRECTIONS_GET_DOBROWSENOW\n");
|
|
if (NULL != pvarResult)
|
|
get_DoBrowseNow(pvarResult);
|
|
break;
|
|
|
|
case DISPID_DIRECTIONS_GET_DOSKIPANIMATION:
|
|
TRACE(L"DISPID_DIRECTIONS_GET_DOSKIPANIMATION\n");
|
|
if (NULL != pvarResult)
|
|
get_DoSkipAnimation(pvarResult);
|
|
break;
|
|
|
|
case DISPID_DIRECTIONS_GET_DOWELCOMEFADEIN:
|
|
TRACE(L"DISPID_DIRECTIONS_GET_DOWELCOMEFADEIN\n");
|
|
if (NULL != pvarResult)
|
|
get_DoWelcomeFadeIn(pvarResult);
|
|
break;
|
|
|
|
case DISPID_DIRECTIONS_GET_INTROONLY:
|
|
TRACE(L"DISPID_DIRECTIONS_GET_INTROONLY\n");
|
|
if (NULL != pvarResult)
|
|
get_IntroOnly(pvarResult);
|
|
break;
|
|
|
|
case DISPID_DIRECTIONS_GET_ISPSIGNUP:
|
|
TRACE(L"DISPID_DIRECTIONS_GET_ISPSIGNUP\n");
|
|
if (NULL != pvarResult)
|
|
get_ISPSignup(pvarResult);
|
|
break;
|
|
|
|
case DISPID_DIRECTIONS_GET_OFFLINE:
|
|
TRACE(L"DISPID_DIRECTIONS_GET_OFFLINE\n");
|
|
if (NULL != pvarResult)
|
|
get_Offline(pvarResult);
|
|
break;
|
|
|
|
case DISPID_DIRECTIONS_GET_OFFERCODE:
|
|
TRACE(L"DISPID_DIRECTIONS_GET_OFFERCODE\n");
|
|
if (NULL != pvarResult)
|
|
get_OEMOfferCode(pvarResult);
|
|
break;
|
|
|
|
case DISPID_DIRECTIONS_GET_OEMCUST:
|
|
TRACE(L"DISPID_DIRECTIONS_GET_OEMCUST\n");
|
|
if (NULL != pvarResult)
|
|
get_OEMCust(pvarResult);
|
|
break;
|
|
|
|
case DISPID_DIRECTIONS_GET_DOOEMADDREGISTRATION:
|
|
TRACE(L"DISPID_DIRECTIONS_GET_DOOEMADDREGISTRATION\n");
|
|
if (NULL != pvarResult)
|
|
get_DoOEMAddRegistration(pvarResult);
|
|
break;
|
|
|
|
case DISPID_DIRECTIONS_GET_APPMODE:
|
|
TRACE(L"DISPID_DIRECTIONS_GET_APPMODE\n");
|
|
if (NULL != pvarResult)
|
|
{
|
|
VariantInit(pvarResult);
|
|
V_VT(pvarResult) = VT_I4;
|
|
V_I4(pvarResult) = m_dwAppMode;
|
|
hr = S_OK;
|
|
}
|
|
break;
|
|
|
|
case DISPID_DIRECTIONS_GET_SHOWISPMIGRATION:
|
|
TRACE(L"DISPID_DIRECTIONS_GET_SHOWISPMIGRATION\n");
|
|
if (NULL != pvarResult)
|
|
{
|
|
get_ShowISPMigration(pvarResult);
|
|
}
|
|
break;
|
|
|
|
case DISPID_DIRECTIONS_GET_DOJOINDOMAIN:
|
|
TRACE(L"DISPID_DIRECTIONS_GET_DOJOINDOMAIN");
|
|
if (NULL != pvarResult)
|
|
get_DoJoinDomain(pvarResult);
|
|
break;
|
|
|
|
case DISPID_DIRECTIONS_GET_DOADMINPASSWORD:
|
|
TRACE(L"DISPID_DIRECTIONS_GET_DOADMINPASSWORD");
|
|
if (NULL != pvarResult)
|
|
get_DoAdminPassword(pvarResult);
|
|
break;
|
|
|
|
default:
|
|
hr = DISP_E_MEMBERNOTFOUND;
|
|
break;
|
|
}
|
|
|
|
return hr;
|
|
}
|