From 71cfe74d3618c15feab24032c7d4cd71d77129af Mon Sep 17 00:00:00 2001 From: dartraiden Date: Tue, 7 Apr 2020 22:57:27 +0300 Subject: MSN: moved to deprecated, banned, removed support from plugins, etc --- protocols/MSN/src/msn_ieembed.cpp | 446 -------------------------------------- 1 file changed, 446 deletions(-) delete mode 100644 protocols/MSN/src/msn_ieembed.cpp (limited to 'protocols/MSN/src/msn_ieembed.cpp') diff --git a/protocols/MSN/src/msn_ieembed.cpp b/protocols/MSN/src/msn_ieembed.cpp deleted file mode 100644 index b34ec7f437..0000000000 --- a/protocols/MSN/src/msn_ieembed.cpp +++ /dev/null @@ -1,446 +0,0 @@ -/* -Plugin of Miranda IM for communicating with users of the MSN Messenger protocol. - -Copyright (c) 2012-2020 Miranda NG team -Copyright (c) 2007-2012 Boris Krasnovskiy. - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#include "stdafx.h" -#include -#include "msn_proto.h" -#include "msn_ieembed.h" - -IEEmbedSink::IEEmbedSink(IEEmbed *smptr) -{ - ieWindow = smptr; -} - -IEEmbedSink::~IEEmbedSink() {} - -STDMETHODIMP IEEmbedSink::QueryInterface(REFIID riid, PVOID *ppv) -{ - *ppv = nullptr; - if (IID_IUnknown == riid) - *ppv = (IUnknown *)this; - - if (IID_IDispatch == riid) - *ppv = (IDispatch *)this; - - if (DIID_DWebBrowserEvents2 == riid) - *ppv = (DWebBrowserEvents2*)this; - - if (nullptr != *ppv) { - ((LPUNKNOWN)*ppv)->AddRef(); - return NOERROR; - } - return E_NOINTERFACE; -} - -STDMETHODIMP_(ULONG) IEEmbedSink::AddRef(void) -{ - ++m_cRef; - return m_cRef; -} - -STDMETHODIMP_(ULONG) IEEmbedSink::Release(void) -{ - --m_cRef; - return m_cRef; -} - -STDMETHODIMP IEEmbedSink::GetTypeInfoCount(UINT *) { return E_NOTIMPL; } -STDMETHODIMP IEEmbedSink::GetTypeInfo(UINT, LCID, LPTYPEINFO*) { return S_OK; } -STDMETHODIMP IEEmbedSink::GetIDsOfNames(REFIID, LPOLESTR*, UINT, LCID, DISPID*) { return S_OK; } - -STDMETHODIMP IEEmbedSink::Invoke(DISPID dispIdMember, REFIID, LCID, WORD, DISPPARAMS* pDispParams, VARIANT*, EXCEPINFO*, UINT*) -{ - if (!pDispParams) return E_INVALIDARG; - switch (dispIdMember) { - case DISPID_DOCUMENTCOMPLETE: - DocumentComplete( - pDispParams->rgvarg[1].pdispVal, - pDispParams->rgvarg[0].pvarVal); - return S_OK; - } - - return DISP_E_MEMBERNOTFOUND; -} -// DWebBrowserEvents2 - -void IEEmbedSink::StatusTextChange(BSTR) {} -void IEEmbedSink::ProgressChange(long, long) {} -void IEEmbedSink::CommandStateChange(long, VARIANT_BOOL) {} -void IEEmbedSink::DownloadBegin() {} -void IEEmbedSink::DownloadComplete() {} -void IEEmbedSink::TitleChange(BSTR) {} -void IEEmbedSink::PropertyChange(BSTR) {} -void IEEmbedSink::BeforeNavigate2(IDispatch*, VARIANT*, VARIANT*, VARIANT*, VARIANT*, VARIANT*, VARIANT_BOOL*) {} -void IEEmbedSink::NewWindow2(IDispatch**, VARIANT_BOOL*) {} -void IEEmbedSink::NavigateComplete(IDispatch*, VARIANT*) {} -void IEEmbedSink::DocumentComplete(IDispatch*, VARIANT* url) -{ - HWND hWnd; - ieWindow->GetWindow(&hWnd); - SendMessage(hWnd, UM_DOCCOMPLETE, 0, (LPARAM)url->bstrVal); -} -void IEEmbedSink::OnQuit() {} -void IEEmbedSink::OnVisible(VARIANT_BOOL) {} -void IEEmbedSink::OnToolBar(VARIANT_BOOL) {} -void IEEmbedSink::OnMenuBar(VARIANT_BOOL) {} -void IEEmbedSink::OnStatusBar(VARIANT_BOOL) {} -void IEEmbedSink::OnFullScreen(VARIANT_BOOL) {} -void IEEmbedSink::OnTheaterMode(VARIANT_BOOL) {} -void IEEmbedSink::WindowSetResizable(VARIANT_BOOL) {} -void IEEmbedSink::WindowSetLeft(long) {} -void IEEmbedSink::WindowSetTop(long) {} -void IEEmbedSink::WindowSetWidth(long) {} -void IEEmbedSink::WindowSetHeight(long) {} -void IEEmbedSink::WindowClosing(VARIANT_BOOL, VARIANT_BOOL*) {} -void IEEmbedSink::ClientToHostWindow(long *, long *) {} -void IEEmbedSink::SetSecureLockIcon(long) {} -void IEEmbedSink::FileDownload(VARIANT_BOOL*) {} - -static LRESULT CALLBACK IEEmbedServerWindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) -{ - IEEmbed **view = (IEEmbed **)GetWindowLongPtr(GetParent(GetParent(GetParent(hwnd))), GWLP_USERDATA); - if (view && *view) { - switch (message) { - case WM_KEYDOWN: - if (LOWORD(wParam) != VK_BACK) - (*view)->translateAccelerator(message, wParam, lParam); - break; - } - - return CallWindowProc((*view)->getServerWndProc(), hwnd, message, wParam, lParam); - } - return DefWindowProc(hwnd, message, wParam, lParam); -} - -static LRESULT CALLBACK IEEmbedDocWindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) -{ - IEEmbed **view = (IEEmbed **)GetWindowLongPtr(GetParent(GetParent(hwnd)), GWLP_USERDATA); - if (view && *view) { - WNDPROC oldWndProc = (*view)->getDocWndProc(); - if (message == WM_PARENTNOTIFY && wParam == WM_CREATE) { - SetWindowLongPtr(hwnd, GWLP_WNDPROC, (LONG_PTR)oldWndProc); - (*view)->setServerWndProc((WNDPROC)SetWindowLongPtr((HWND)lParam, GWLP_WNDPROC, (LONG_PTR)IEEmbedServerWindowProcedure)); - } - return CallWindowProc(oldWndProc, hwnd, message, wParam, lParam); - } - return DefWindowProc(hwnd, message, wParam, lParam); -} - -static LRESULT CALLBACK IEEmbedWindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) -{ - IEEmbed **view = (IEEmbed **)GetWindowLongPtr(GetParent(hwnd), GWLP_USERDATA); - if (view && *view) { - WNDPROC oldWndProc = (*view)->getMainWndProc(); - if (message == WM_PARENTNOTIFY && wParam == WM_CREATE) { - SetWindowLongPtr(hwnd, GWLP_WNDPROC, (LONG_PTR)oldWndProc); - (*view)->setDocWndProc((WNDPROC)SetWindowLongPtr((HWND)lParam, GWLP_WNDPROC, (LONG_PTR)IEEmbedDocWindowProcedure)); - } - return CallWindowProc(oldWndProc, hwnd, message, wParam, lParam); - } - return DefWindowProc(hwnd, message, wParam, lParam); -} - - -IEEmbed::IEEmbed(HWND _parent) -{ - MSG msg; - parent = _parent; - GetClientRect(_parent, &rcClient); - if (SUCCEEDED(pWebBrowser.CoCreateInstance(CLSID_WebBrowser, nullptr, CLSCTX_INPROC))) { - CComPtr pOleObject; - if (SUCCEEDED(pWebBrowser.QueryInterface(&pOleObject))) { - pOleObject->SetClientSite(this); - pOleObject->DoVerb(OLEIVERB_INPLACEACTIVATE, &msg, this, 0, this->parent, &rcClient); - } - - CComPtr pOleInPlace; - if (SUCCEEDED(pWebBrowser.QueryInterface(&pOleInPlace))) - pOleInPlace->GetWindow(&hwnd); - - //setBorder(); - CComPtr pCPContainer; - // Step 1: Get a pointer to the connection point container. - if (SUCCEEDED(pWebBrowser.QueryInterface(&pCPContainer))) { - // m_pConnectionPoint is defined like this: - // Step 2: Find the connection point. - if (SUCCEEDED(pCPContainer->FindConnectionPoint(DIID_DWebBrowserEvents2, &m_pConnectionPoint))) { - // Step 3: Advise the connection point that you - // want to sink its events. - sink = new IEEmbedSink(this); - m_pConnectionPoint->Advise(sink, &m_dwCookie); - } - } - setMainWndProc((WNDPROC)SetWindowLongPtr(hwnd, GWLP_WNDPROC, (LONG_PTR)IEEmbedWindowProcedure)); - SetFocus(hwnd); - } - - pWebBrowser->put_RegisterAsDropTarget(VARIANT_FALSE); -} - -IEEmbed::~IEEmbed() -{ - CComPtr pOleObject; - if (SUCCEEDED(pWebBrowser.QueryInterface(&pOleObject))) - pOleObject->SetClientSite(nullptr); - - if (m_pConnectionPoint != nullptr) - m_pConnectionPoint->Unadvise(m_dwCookie); - - delete sink; - DestroyWindow(hwnd); -} - -void IEEmbed::ResizeBrowser() -{ - GetClientRect(parent, &rcClient); - - CComPtr pOleInPlace; - if (SUCCEEDED(pWebBrowser.QueryInterface(&pOleInPlace))) - pOleInPlace->SetObjectRects(&rcClient, &rcClient); -} - - -// IUnknown -STDMETHODIMP IEEmbed::QueryInterface(REFIID riid, PVOID *ppv) -{ - *ppv = nullptr; - if (IID_IUnknown == riid) - *ppv = this; - if (IID_IOleClientSite == riid) - *ppv = (IOleClientSite*)this;//Unknown)m_pIOleClientSite; - if (IID_IOleWindow == riid || IID_IOleInPlaceSite == riid) - *ppv = (IOleInPlaceSite*)this;//m_pIOleIPSite; - - if (nullptr != *ppv) { - ((LPUNKNOWN)*ppv)->AddRef(); - return NOERROR; - } - return E_NOINTERFACE; -} - -STDMETHODIMP_(ULONG) IEEmbed::AddRef(void) -{ - ++m_cRef; - return m_cRef; -} - -STDMETHODIMP_(ULONG) IEEmbed::Release(void) -{ - --m_cRef; - return m_cRef; -} - -// IDispatch -STDMETHODIMP IEEmbed::GetTypeInfoCount(UINT *) { return E_NOTIMPL; } -STDMETHODIMP IEEmbed::GetTypeInfo(UINT, LCID, LPTYPEINFO*) { return S_OK; } -STDMETHODIMP IEEmbed::GetIDsOfNames(REFIID, LPOLESTR*, UINT, LCID, DISPID*) { return S_OK; } -STDMETHODIMP IEEmbed::Invoke(DISPID, REFIID, LCID, WORD, DISPPARAMS*, VARIANT*, EXCEPINFO*, UINT*) { return DISP_E_MEMBERNOTFOUND; } - -// IOleWindow -STDMETHODIMP IEEmbed::GetWindow(HWND *phwnd) -{ - *phwnd = parent; - return S_OK; -} - -STDMETHODIMP IEEmbed::ContextSensitiveHelp(BOOL) { return E_NOTIMPL; } -STDMETHODIMP IEEmbed::CanInPlaceActivate(void) { return S_OK; } -STDMETHODIMP IEEmbed::OnInPlaceActivate(void) { return S_OK; } -STDMETHODIMP IEEmbed::OnUIActivate(void) { return E_NOTIMPL; } - -STDMETHODIMP IEEmbed::GetWindowContext(IOleInPlaceFrame **, IOleInPlaceUIWindow **, LPRECT lprcPosRect, LPRECT lprcClipRect, LPOLEINPLACEFRAMEINFO) -{ - lprcPosRect->left = rcClient.left; - lprcPosRect->top = rcClient.top; - lprcPosRect->right = rcClient.right; - lprcPosRect->bottom = rcClient.bottom; - lprcClipRect->left = rcClient.left; - lprcClipRect->top = rcClient.top; - lprcClipRect->right = rcClient.right; - lprcClipRect->bottom = rcClient.bottom; - return S_OK; -} - -STDMETHODIMP IEEmbed::Scroll(SIZE) { return E_NOTIMPL; } -STDMETHODIMP IEEmbed::OnUIDeactivate(BOOL) { return E_NOTIMPL; } -STDMETHODIMP IEEmbed::OnInPlaceDeactivate(void) { return S_OK; } -STDMETHODIMP IEEmbed::DiscardUndoState(void) { return E_NOTIMPL; } -STDMETHODIMP IEEmbed::DeactivateAndUndo(void) { return E_NOTIMPL; } -STDMETHODIMP IEEmbed::OnPosRectChange(LPCRECT) { return E_NOTIMPL; } -STDMETHODIMP IEEmbed::SaveObject(void) { return E_NOTIMPL; } -STDMETHODIMP IEEmbed::GetMoniker(DWORD, DWORD, IMoniker **) { return E_NOTIMPL; } -STDMETHODIMP IEEmbed::GetContainer(IOleContainer **) { return E_NOTIMPL; } -STDMETHODIMP IEEmbed::ShowObject(void) { return E_NOTIMPL; } -STDMETHODIMP IEEmbed::OnShowWindow(BOOL) { return E_NOTIMPL; } -STDMETHODIMP IEEmbed::RequestNewObjectLayout(void) { return E_NOTIMPL; } - - -void IEEmbed::setMainWndProc(WNDPROC wndProc) -{ - mainWndProc = wndProc; -} - -WNDPROC IEEmbed::getMainWndProc() -{ - return mainWndProc; -} - -void IEEmbed::setDocWndProc(WNDPROC wndProc) -{ - docWndProc = wndProc; -} - -WNDPROC IEEmbed::getDocWndProc() -{ - return docWndProc; -} - -void IEEmbed::setServerWndProc(WNDPROC wndProc) -{ - serverWndProc = wndProc; -} - -WNDPROC IEEmbed::getServerWndProc() -{ - return serverWndProc; -} - -void IEEmbed::write(const wchar_t *text) -{ - CComPtr document = getDocument(); - if (!document) return; - - SAFEARRAY *safe_array = ::SafeArrayCreateVector(VT_VARIANT, 0, 1); - if (safe_array != nullptr) { - VARIANT *variant; - ::SafeArrayAccessData(safe_array, (LPVOID *)&variant); - variant->vt = VT_BSTR; - variant->bstrVal = ::SysAllocString(text); - ::SafeArrayUnaccessData(safe_array); - document->write(safe_array); - // ::SysFreeString(bstr); // don't free it !!!!!!! - ::SafeArrayDestroy(safe_array); - document->close(); - } -} - -void IEEmbed::addCookie(const wchar_t *cookieString) -{ - CComPtr document = getDocument(); - if (!document) return; - BSTR cookie = SysAllocString(cookieString); - - document->put_cookie(cookie); - - SysFreeString(cookie); -} - -BSTR IEEmbed::getCookies() -{ - CComPtr document = getDocument(); - BSTR cookie = nullptr; - - if (!document) return nullptr; - document->get_cookie(&cookie); - return cookie; -} - -IHTMLDocument2* IEEmbed::getDocument() -{ - CComPtr dispatch; - if (SUCCEEDED(pWebBrowser->get_Document(&dispatch)) && dispatch != nullptr) { - CComPtr document; - dispatch.QueryInterface(&document); - return document.Detach(); - } - - return nullptr; -} - -void IEEmbed::navigate(const wchar_t *url) -{ - BSTR tmp = ::SysAllocString(url); - pWebBrowser->Navigate(tmp, nullptr, nullptr, nullptr, nullptr); - ::SysFreeString(tmp); -} - -void IEEmbed::navigate(char *url) -{ - wchar_t *pwszUrl = mir_a2u(url); - navigate(pwszUrl); - mir_free(pwszUrl); -} - -void IEEmbed::navigate(NETLIBHTTPREQUEST *nlhr) -{ - BSTR bstrHeaders = SysAllocString(L"Content-Type: application/x-www-form-urlencoded\r\n"); - - VARIANT vHeaders = {}; - V_VT(&vHeaders) = VT_BSTR; - V_BSTR(&vHeaders) = bstrHeaders; - - VARIANT vPostData = {}; - VariantInit(&vPostData); - - LPSAFEARRAY psa = SafeArrayCreateVector(VT_UI1, 0, nlhr->dataLength); - LPSTR pPostData; - SafeArrayAccessData(psa, (LPVOID*)&pPostData); - memcpy(pPostData, nlhr->pData, nlhr->dataLength); - SafeArrayUnaccessData(psa); - - V_VT(&vPostData) = VT_ARRAY | VT_UI1; - V_ARRAY(&vPostData) = psa; - pWebBrowser->Navigate(_A2T(nlhr->szUrl), nullptr, nullptr, &vPostData, &vHeaders); - SysFreeString(bstrHeaders); - VariantClear(&vPostData); -} - -char* IEEmbed::GetHTMLDoc() -{ - CComPtr spDispDoc; - char *pszRet = nullptr; - - if (SUCCEEDED(pWebBrowser->get_Document(&spDispDoc))) { - CComPtr spDoc; - if (SUCCEEDED(spDispDoc->QueryInterface(IID_IHTMLDocument3, (void**)&spDoc))) { - CComPtr spRootElement; - if (SUCCEEDED(spDoc->get_documentElement(&spRootElement))) { - BSTR bstrDoc; - if (SUCCEEDED(spRootElement->get_outerHTML(&bstrDoc))) { - pszRet = mir_u2a(bstrDoc); - SysFreeString(bstrDoc); - } - } - } - } - return pszRet; -} - -void IEEmbed::translateAccelerator(UINT uMsg, WPARAM wParam, LPARAM lParam) -{ - CComPtr pIOIPAO; - if (SUCCEEDED(pWebBrowser.QueryInterface(&pIOIPAO))) { - MSG msg; - msg.message = uMsg; - msg.wParam = wParam; - msg.lParam = lParam; - pIOIPAO->TranslateAccelerator(&msg); - } -} -- cgit v1.2.3