104 lines
2.1 KiB
C++
104 lines
2.1 KiB
C++
#include "stdafx.h"
|
|
#pragma hdrstop
|
|
#include "InternetGatewayFinder.h"
|
|
#include "trayicon.h"
|
|
|
|
CInternetGatewayFinder::CInternetGatewayFinder()
|
|
{
|
|
m_hWindow = NULL;
|
|
}
|
|
|
|
HRESULT CInternetGatewayFinder::Initialize(HWND hWindow)
|
|
{
|
|
HRESULT hr = S_OK;
|
|
|
|
m_hWindow = hWindow;
|
|
|
|
return hr;
|
|
}
|
|
|
|
HRESULT CInternetGatewayFinder::GetInternetGateway(BSTR DeviceId, IInternetGateway** ppInternetGateway)
|
|
{
|
|
HRESULT hr = S_OK;
|
|
|
|
*ppInternetGateway = NULL;
|
|
|
|
IInternetGateway* pInternetGateway;
|
|
if(1 == SendMessage(m_hWindow, WM_APP_GETBEACON, 0, reinterpret_cast<LPARAM>(&pInternetGateway)))
|
|
{
|
|
*ppInternetGateway = pInternetGateway;
|
|
// pass reference
|
|
}
|
|
else
|
|
{
|
|
hr = HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND);
|
|
}
|
|
|
|
return hr;
|
|
}
|
|
|
|
|
|
|
|
|
|
CInternetGatewayFinderClassFactory::CInternetGatewayFinderClassFactory()
|
|
{
|
|
m_hWindow = NULL;
|
|
}
|
|
|
|
HRESULT CInternetGatewayFinderClassFactory::Initialize(HWND hWindow)
|
|
{
|
|
HRESULT hr = S_OK;
|
|
|
|
m_hWindow = hWindow;
|
|
|
|
return hr;
|
|
}
|
|
|
|
HRESULT CInternetGatewayFinderClassFactory::CreateInstance(IUnknown* pUnkOuter, REFIID riid, void** ppvObject)
|
|
{
|
|
HRESULT hr = S_OK;
|
|
|
|
if(NULL != pUnkOuter)
|
|
{
|
|
hr = CLASS_E_NOAGGREGATION;
|
|
}
|
|
|
|
if(NULL == ppvObject)
|
|
{
|
|
hr = E_POINTER;
|
|
}
|
|
else
|
|
{
|
|
*ppvObject = NULL;
|
|
}
|
|
|
|
if(SUCCEEDED(hr))
|
|
{
|
|
CComObject<CInternetGatewayFinder>* pInternetGatewayFinder;
|
|
hr = CComObject<CInternetGatewayFinder>::CreateInstance(&pInternetGatewayFinder);
|
|
if(SUCCEEDED(hr))
|
|
{
|
|
pInternetGatewayFinder->AddRef();
|
|
|
|
hr = pInternetGatewayFinder->Initialize(m_hWindow);
|
|
if(SUCCEEDED(hr))
|
|
{
|
|
hr = pInternetGatewayFinder->QueryInterface(riid, ppvObject);
|
|
// pass reference
|
|
}
|
|
pInternetGatewayFinder->Release();
|
|
}
|
|
}
|
|
|
|
return hr;
|
|
}
|
|
|
|
HRESULT CInternetGatewayFinderClassFactory::LockServer(BOOL fLock)
|
|
{
|
|
HRESULT hr = S_OK;
|
|
|
|
fLock ? _Module.Lock() : _Module.Unlock();
|
|
|
|
return hr;
|
|
}
|