Beispiel #1
0
void 
CConnectionManager::AsyncConnectThread()
{
	DWORD size = 1024;
	TCHAR host[1024] = _T("localhost");
	if (GetStringValueFromRegistry(REGISTRY_ROOT_KEY, REGISTRY_SETTINGS_KEY, REGISTRY_SETTINGS_HOST, host, &size)!=0)
	{
		m_Parent->Log(_T("Unable to read host record from registry."), ICON_WARNING);
	}

	DWORD port = 41258;
	if (GetDWORDValueFromRegistry(REGISTRY_ROOT_KEY, REGISTRY_SETTINGS_KEY, REGISTRY_SETTINGS_PORT, &port)!=0)
	{
		m_Parent->Log(_T("Unable to read port from registry."), ICON_WARNING);
	}

	CString sport;
	sport.Format(_T("%d"), port);
	if (!m_Connection.ConnectTo(host, sport, AF_INET, SOCK_STREAM))
	{
		BrowserManagerLock browserManager;
		CBrowserMessageWindow* window = browserManager->FindBrowserMessageWindow(m_Parent->GetBrowserId());
		if (!window) return;

		window->PostMessage(BMM_REQUEST_LOG, ICON_WARNING, (LPARAM)FS(_T("Unable to see XRefresh Monitor.")));
		window->PostMessage(BMM_REQUEST_LOG, ICON_BULB, (LPARAM)FS(_T("Please check if you have running XRefresh Monitor. On Windows, it is program running in system tray. Look for Programs -> XRefresh -> XRefresh.exe")));
		window->PostMessage(BMM_REQUEST_LOG, ICON_BULB, (LPARAM)FS(_T("You may also want to check your firewall settings. XRefresh IE Addon expects Monitor to talk from %s on port %d"), host, port));
		TRACE_I(_T("server not available"));
		return;
	}
	m_Connection.WatchComm();
	SendHello();
}
Beispiel #2
0
void 
CConnection::OnEvent(UINT uEvent)
{
	BrowserManagerLock browserManager;
	CBrowserMessageWindow* window = browserManager->FindBrowserMessageWindow(m_Parent->m_Parent->GetBrowserId());
	if (!window) return;

	switch (uEvent)
	{
		case EVT_CONSUCCESS:
			TRACE_I( _T("Connection Established\r\n") );
			break;
		case EVT_CONFAILURE:
			TRACE_I( _T("Connection Failed\r\n") );
			window->PostMessage(BMM_REQUEST_DISCONNECTED_NOTIFY, 0, 0);
			CloseComm();
			m_Parent->m_Connected = false;
			break;
		case EVT_CONDROP:
			TRACE_I( _T("Connection Abandonned\r\n") );
			window->PostMessage(BMM_REQUEST_DISCONNECTED_NOTIFY, 0, 0);
			CloseComm();
			m_Parent->m_Connected = false;
			break;
		case EVT_ZEROLENGTH:
			TRACE_I( _T("Zero Length Message\r\n") );
			break;
		default:
			TRACE_W(_T("Unknown Socket event\n"));
			break;
	}
}
Beispiel #3
0
// CXRefreshBHO
STDMETHODIMP 
CXRefreshBHO::SetSite(IUnknown* pUnkSite)
{
	WATCH_EXITS;
	DTI(TRACE_I(FS(_T("BHO[%08X]: SetSite(%08X)"), this, pUnkSite)));
	if (pUnkSite != NULL)
	{
		// cache the pointer to IWebBrowser2
		pUnkSite->QueryInterface(IID_IWebBrowser2, (void **)&m_Browser);
		// register to sink events from DWebBrowserEvents2
		DispEventAdvise(m_Browser);
		m_IsAdvised = true;

		// allocate browser id
		BrowserManagerLock browserManager;
		m_BrowserId = browserManager->AllocBrowserId(m_Browser, this);
		m_Logger.m_BrowserId = m_BrowserId;
		ATLASSERT(m_BrowserId!=NULL_BROWSER);

		HWND hwnd;
		HRESULT hr = m_Browser->get_HWND((LONG_PTR*)&hwnd);
		if (SUCCEEDED(hr))
		{
			m_IE7ToolWindow.TryToIntegrate(hwnd);
		}

		m_ConnectionManager.Connect();
	}
	else
	{
		m_ConnectionManager.StopReconnectListener();
		m_ConnectionManager.Disconnect();

		m_IE7ToolWindow.DetachFromIE();

		// unregister event sink.
		if (m_IsAdvised)
		{
			DispEventUnadvise(m_Browser);
			m_IsAdvised = false;
		}

		BrowserManagerLock browserManager;
		CBrowserMessageWindow* bw = browserManager->FindBrowserMessageWindow(m_BrowserId);
		ATLASSERT(bw);
		bw->SetBHO(NULL);
		browserManager->ReleaseBrowserId(m_BrowserId);
		m_BrowserId = NULL_BROWSER;
		m_Logger.m_BrowserId = NULL_BROWSER;

		// release cached pointers and other resources here.
		m_Browser = NULL;
	}

	SendInfoAboutPage();

	// Call base class implementation.
	return IObjectWithSiteImpl<CXRefreshBHO>::SetSite(pUnkSite);
}
Beispiel #4
0
void
CHelperbarWindow::Log(CString message, int icon)
{
	BrowserManagerLock browserManager;
	CBrowserMessageWindow* window = browserManager->FindBrowserMessageWindow(m_BrowserId);
	if (!window) return;
	CXRefreshBHO* BHO = window->GetBHO();
	if (!BHO) return;
	BHO->Log(message, icon);
}
Beispiel #5
0
void 
CConnectionManager::RequestStartingReconnectListener()
{
	BrowserManagerLock browserManager;
	CBrowserMessageWindow* window = browserManager->FindBrowserMessageWindow(m_Parent->GetBrowserId());
	if (!window) return;

	// refresh must be called by BHO thread
	window->PostMessage(BMM_REQUEST_LISTEN_FOR_RECONNECT, 0, 0);
}
Beispiel #6
0
void 
CConnectionManager::PerformRefresh()
{
	BrowserManagerLock browserManager;
	CBrowserMessageWindow* window = browserManager->FindBrowserMessageWindow(m_Parent->GetBrowserId());
	if (!window) return;

	// refresh must be called by BHO thread
	window->PostMessage(BMM_REQUEST_REFRESH, 0, 0);
}
Beispiel #7
0
void 
CConnectionManager::RequestResetLastSentTitle()
{
	BrowserManagerLock browserManager;
	CBrowserMessageWindow* window = browserManager->FindBrowserMessageWindow(m_Parent->GetBrowserId());
	if (!window) return;

	// refresh must be called by BHO thread
	window->PostMessage(BMM_REQUEST_RESET_LAST_SENT_TITLE, 0, 0);
}
Beispiel #8
0
void 
CConnectionManager::RequestSendInfoAboutPage()
{
	BrowserManagerLock browserManager;
	CBrowserMessageWindow* window = browserManager->FindBrowserMessageWindow(m_Parent->GetBrowserId());
	if (!window) return;

	// refresh must be called by BHO thread
	window->PostMessage(BMM_REQUEST_INFO_ABOUT_PAGE, 0, 0);
}
Beispiel #9
0
void
CConnectionManager::UpdateIcon()
{
	BrowserManagerLock browserManager;
	CBrowserMessageWindow* window = browserManager->FindBrowserMessageWindow(m_Parent->GetBrowserId());
	if (!window) return;

	// refresh must be called by BHO thread
	window->PostMessage(BMM_REQUEST_UPDATE_ICON, 0, 0);
}
Beispiel #10
0
void
CXRefreshBHO::Log(LPCTSTR message, int icon)
{
	BrowserManagerLock browserManager;
	if (browserManager->IsBrowserThread(GetCurrentThreadId(), m_BrowserId))
	{
		m_Logger.Log(message, icon);
		return;
	}
	CBrowserMessageWindow* window = browserManager->FindBrowserMessageWindow(m_BrowserId);
	if (!window) return;
	window->PostMessage(BMM_REQUEST_LOG, icon, (LPARAM)FS(_T("%s"), message));
}
Beispiel #11
0
STDMETHODIMP 
CXRefreshToolbar::SetSite(IUnknown *pUnknownSite)
{
	DT(TRACE_I(FS(_T("Toolbar[%08X]: SetSite(%08X)"), this, pUnknownSite)));
	try {
		if (!!pUnknownSite)
		{
			// attach the window
			HWND hWnd;
			CComPtr<IUnknown> site(pUnknownSite);
			CComQIPtr<IOleWindow> window(site);
			window->GetWindow(&hWnd);
			if (!hWnd) 
			{
				TRACE_E(FS(_T("Toolbar[%08X]: Cannot retrieve toolbar base window"), this));
				return E_FAIL;
			}
			SubclassWindow(hWnd);

			// get a WebBrowser reference
			CComQIPtr<IServiceProvider> serviceProvider(site);
			serviceProvider->QueryService(IID_IWebBrowserApp, IID_IWebBrowser2, (void**)&m_Browser);
			site->QueryInterface(IID_IInputObjectSite, (void**)&m_Site);

			// retrive browser id
			{
				BrowserManagerLock browserManager;
				m_BrowserId = browserManager->AllocBrowserId(m_Browser, this);
				ATLASSERT(m_BrowserId!=NULL_BROWSER);
			}

			// create main window
			CreateMainWindow();
		}
		else
		{
			BrowserManagerLock browserManager;
			CBrowserMessageWindow* bw = browserManager->FindBrowserMessageWindow(m_BrowserId);
			ATLASSERT(bw);
			bw->SetToolbar(NULL);
			browserManager->ReleaseBrowserId(m_BrowserId);
			m_BrowserId = NULL_BROWSER;
		}
	}
	catch (CXRefreshRuntimeError &ex)
	{
		HandleError(ex.ErrorMessage());
		return E_FAIL;
	}
	return S_OK;
}
Beispiel #12
0
LRESULT
CHelperbarWindow::OnToolbarMenu(WORD wCode, WORD wId, HWND hWnd, BOOL& bHandled)
{
	CXRefreshBHO* BHO;
	CBrowserMessageWindow* window;
	{
		BrowserManagerLock browserManager;
		window = browserManager->FindBrowserMessageWindow(m_BrowserId);
		if (!window) return 0;
		BHO = window->GetBHO();
		if (!BHO) return 0;
	}

	switch (wId) {
		case IDC_HB_TOOL_BUTTON:
			break;
		case IDC_HB_REFRESH_BUTTON:
			Log(_T("Manual refresh performed by user"), ICON_REFRESH);
			BHO->PerformRefresh();
			break;
		case IDC_HB_CONNECT_BUTTON:
			Log(_T("Connection requested by user"), ICON_CONNECTED_BTN);
			BHO->Connect();
			break;
		case IDC_HB_DISCONNECT_BUTTON:
			Log(_T("Disconnection requested by user"), ICON_DISCONNECTED_BTN);
			BHO->Disconnect();
			break;
		case ID_POPUPMENU_VISITSITE:
			{
				CComPtr<IWebBrowser2> browser = BHO->GetBrowser();
				if (!!browser)
				{
					CComBSTR url = _T("http://xrefresh.com");
					CComVariant target = _T("_blank");
					CComVariant flags = navOpenInNewTab;
					browser->Navigate(url, &flags, &target, NULL, NULL);
				}
			}
			break;
		case ID_POPUPMENU_ABOUT:
			{
				CAboutBox kAboutBox;
				kAboutBox.DoModal();
			}
			break;
		case ID_POPUPMENU_ALLOWEDSITES:
			{
				CComQIPtr<IWebBrowser2> browser;
				{
					BrowserManagerLock browserManager;
					CBrowserMessageWindow* window = browserManager->FindBrowserMessageWindow(m_BrowserId);
					if (!window) return 0;
					browser = window->GetBrowserInterface();
					if (!browser) return 0;
				}
				CSitesDialog kSitesDialog(GetSiteRootUrl(browser));
				kSitesDialog.DoModal();
			}
			break;
	}
	return 0;
}