From: qwerty2501 Date: Tue, 7 Feb 2012 13:52:39 +0000 (+0900) Subject: IEコンポーネントでマイリスト登録機能は無理な感じ? X-Git-Tag: v0.002~2^2~18 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=4d94699c2dce57133a48f2e794d103a6176e46b4;p=nlite%2Fnlite.git IEコンポーネントでマイリスト登録機能は無理な感じ? --- diff --git a/nlite.suo b/nlite.suo index 2731503..5c1d3ea 100644 Binary files a/nlite.suo and b/nlite.suo differ diff --git a/nlite/nlite_addTomylistWindow.cpp b/nlite/nlite_addTomylistWindow.cpp index d1479a3..781e9cb 100644 --- a/nlite/nlite_addTomylistWindow.cpp +++ b/nlite/nlite_addTomylistWindow.cpp @@ -5,8 +5,8 @@ namespace nlite{ static const LPCTSTR ADDMYLIST_URL = TEXT("MSHTML:"); - - + static const LPCTSTR ADDMYLISTAPI_URL = TEXT("http://www.nicovideo.jp/mylist_add/video/{1}"); + /* VOID WINAPI CAddToMyListWindow::OnDocumentComplete(IDispatch* pDisp, VARIANT* URL){ CComPtr idp; @@ -29,6 +29,13 @@ namespace nlite{ return (BOOL)SendMessage(WM_FORWARDMSG, 0, (LPARAM)pMsg); } + VOID WINAPI CAddToMyListWindow::OnBeforeNavigate2(IDispatch** dispatch, VARIANT* url, VARIANT* flags,VARIANT* frameName, VARIANT* postData, VARIANT* headers, VARIANT_BOOL* cancel){ + + dumpln(TEXT("veforeNavigate")); + + return; + } + VOID CAddToMyListWindow::ShowAddWindow(CNicoVideoAuth &refAuth,LPCTSTR lvNo){ liveNo = ADDMYLIST_URL; @@ -90,6 +97,109 @@ cleanup:; SetMsgHandled(false); } + */ + + VOID WINAPI CAddToMyListWindow::OnDocumentComplete(IDispatch* pDisp, VARIANT* URL){ + /* + CComPtr idp; + this->m_pWB2->get_Document(&idp); +// this->m_pDoc2 = idp; +*/ + return; + } + + VOID WINAPI CAddToMyListWindow::OnNewWindow2(LPDISPATCH* ppDisp,BOOL* Cancel ){ + + dumpln(TEXT("newwindow")); + return; + } + + BOOL CAddToMyListWindow::PreTranslateMessage(MSG* pMsg){ + if((pMsg->message < WM_KEYFIRST || pMsg->message > WM_KEYLAST) && + (pMsg->message < WM_MOUSEFIRST || pMsg->message > WM_MOUSELAST)) + return FALSE; + + return (BOOL)SendMessage(WM_FORWARDMSG, 0, (LPARAM)pMsg); + } + + VOID WINAPI CAddToMyListWindow::OnBeforeNavigate2(IDispatch** dispatch, VARIANT* url, VARIANT* flags,VARIANT* frameName, VARIANT* postData, VARIANT* headers, VARIANT_BOOL* cancel){ + + + dumpln(TEXT("veforeNavigate")); + + return; + } + + + VOID CAddToMyListWindow::ShowAddWindow(CNicoVideoAuth &refAuth,LPCTSTR lvNo){ + + this->CenterWindow(); + this->ShowWindow(SW_SHOW); + liveNo = ADDMYLISTAPI_URL; + liveNo.Replace(TEXT("{1}"), lvNo); + + if(m_pWB2){ + VARIANT v; + + m_pWB2->Navigate(CComBSTR(liveNo),&v,&v,&v,&v); + + /* + // Creates a new one-dimensional array + SAFEARRAY *psaStrings = SafeArrayCreateVector(VT_VARIANT, 0, 1); + if (psaStrings == NULL) { + goto cleanup; + } + VARIANT *param; + HRESULT hr = SafeArrayAccessData(psaStrings, (LPVOID*)¶m); + param->vt = VT_BSTR; + param->bstrVal = CComBSTR(liveNo); + hr = SafeArrayUnaccessData(psaStrings); + m_pDoc2->write(psaStrings); + */ +cleanup:; + + //CComPtr iup; + //HRESULT rslt = this->CreateControlEx(liveNo,(IStream*)NULL,(IUnknown**)NULL,&iup,GUID_NULL,(IUnknown*)NULL); + //CComPtr idp = (IDispatch*)&iup; + //iup->QueryInterface(DIID_DWebBrowserEvents2,(LPVOID*)&idp); + + + } + } + + + INT_PTR CAddToMyListWindow::OnCreate(LPCREATESTRUCT lpCreateStruct){ + LRESULT lRet = DefWindowProc(); + + HRESULT hRet = QueryControl(&m_pWB2); + if(SUCCEEDED(hRet)){ + DispEventAdvise(m_pWB2, &DIID_DWebBrowserEvents2); + } + /* + VARIANT v; + //m_pWB2->Navigate(TEXT("url"),&v,&v,&v,&v); + m_pWB2->Navigate(TEXT("about:brank"),&v,&v,&v,&v); + */ + return lRet; + } + + + VOID CAddToMyListWindow::OnDestroy(){ + + + + if(m_pWB2){ + if(DispEventUnadvise(m_pWB2, &DIID_DWebBrowserEvents2) == S_OK){ + m_pWB2 = NULL; + } + } + + SetMsgHandled(false); + } + VOID CAddToMyListWindow::OnClose(){ + + this->ShowWindow(SW_HIDE); + } } diff --git a/nlite/nlite_addTomylistWindow.h b/nlite/nlite_addTomylistWindow.h index 1154c74..68d73a1 100644 --- a/nlite/nlite_addTomylistWindow.h +++ b/nlite/nlite_addTomylistWindow.h @@ -6,7 +6,7 @@ namespace nlite{ //class CAddToMyListDialog; - + /* class CAddToMyListWindow : public CWindowImpl, public IDispEventImpl { @@ -30,8 +30,8 @@ namespace nlite{ BEGIN_SINK_MAP(CAddToMyListWindow) SINK_ENTRY_EX(IDC_NLITE_ADDMYLIST, DIID_DWebBrowserEvents2, DISPID_DOCUMENTCOMPLETE, OnDocumentComplete) SINK_ENTRY_EX(IDC_NLITE_ADDMYLIST, DIID_DWebBrowserEvents2, DISPID_NEWWINDOW2, OnNewWindow2) - //SINK_ENTRY_EX(IDC_NLITE_ADDMYLIST, - //DIID_DWebBrowserEvents2, DISPID_BEFORENAVIGATE2, OnBeforeNavigate2) + SINK_ENTRY_EX(IDC_NLITE_ADDMYLIST, + DIID_DWebBrowserEvents2, DISPID_BEFORENAVIGATE2, OnBeforeNavigate2) END_SINK_MAP() @@ -46,7 +46,11 @@ namespace nlite{ ///V‚µ‚¢ƒEƒBƒ“ƒhƒEì¬Žž‚̏ˆ— /// VOID WINAPI OnNewWindow2(LPDISPATCH* ppDisp,BOOL* Cancel ); - + + /// + ///ƒiƒrƒQ[ƒVƒ‡ƒ“‘O + /// + VOID WINAPI OnBeforeNavigate2(IDispatch** dispatch, VARIANT* url, VARIANT* flags,VARIANT* frameName, VARIANT* postData, VARIANT* headers, VARIANT_BOOL* cancel); /// ///ƒ}ƒCƒŠƒXƒg“o˜^‰æ–Ê•\Ž¦ @@ -70,6 +74,79 @@ namespace nlite{ }; + */ + + + class CAddToMyListWindow : public CWindowImpl, + public IDispEventImpl + { + //friend CAddToMyListDialog; + public: + DECLARE_WND_SUPERCLASS(NULL, CAxWindow::GetWndClassName()) + + CComPtr m_pWB2; +// CComPtr m_pDoc2; + + CString liveNo; + + BOOL PreTranslateMessage(MSG* pMsg); + BEGIN_MSG_MAP(CAddToMyListWindow) + MSG_WM_CREATE(OnCreate) + MSG_WM_CLOSE(OnClose) + MSG_WM_DESTROY(OnDestroy) + END_MSG_MAP() + + BEGIN_SINK_MAP(CAddToMyListWindow) + SINK_ENTRY_EX(IDC_NLITE_ADDMYLIST, DIID_DWebBrowserEvents2, DISPID_DOCUMENTCOMPLETE, OnDocumentComplete) + SINK_ENTRY_EX(IDC_NLITE_ADDMYLIST, DIID_DWebBrowserEvents2, DISPID_NEWWINDOW2, OnNewWindow2) + SINK_ENTRY_EX(IDC_NLITE_ADDMYLIST, + DIID_DWebBrowserEvents2, DISPID_BEFORENAVIGATE2, OnBeforeNavigate2) + END_SINK_MAP() + + + public: + + /// + ///ƒhƒLƒ…ƒƒ“ƒg“ǂݍž‚݉”\‚É‚È‚Á‚½‚Æ‚« + /// + VOID WINAPI OnDocumentComplete(IDispatch* pDisp, VARIANT* URL); + + /// + ///V‚µ‚¢ƒEƒBƒ“ƒhƒEì¬Žž‚̏ˆ— + /// + VOID WINAPI OnNewWindow2(LPDISPATCH* ppDisp,BOOL* Cancel ); + + /// + ///ƒiƒrƒQ[ƒVƒ‡ƒ“‘O + /// + VOID WINAPI OnBeforeNavigate2(IDispatch** dispatch, VARIANT* url, VARIANT* flags,VARIANT* frameName, VARIANT* postData, VARIANT* headers, VARIANT_BOOL* cancel); + + /// + ///ƒ}ƒCƒŠƒXƒg“o˜^‰æ–Ê•\Ž¦ + /// + VOID ShowAddWindow(CNicoVideoAuth &refAuth,LPCTSTR lvNo); + private: + + /// + ///ì¬Žž‚̏ˆ— + /// + INT_PTR OnCreate(LPCREATESTRUCT lpCreateStruct); + + /// + ///”jŠüŽž‚̏ˆ— + /// + VOID OnDestroy(); + + /// + ///•Â‚¶‚ç‚ê‚é‚Æ‚«‚̏ˆ— + /// + VOID OnClose(); + + + + + }; + } \ No newline at end of file diff --git a/nlite/nlite_commentview.cpp b/nlite/nlite_commentview.cpp index 7c90f9f..5bd0c11 100644 --- a/nlite/nlite_commentview.cpp +++ b/nlite/nlite_commentview.cpp @@ -1305,7 +1305,8 @@ end: //::AtlAxCreateControlEx(TEXT("MSHTML:"),*this,(IStream*)NULL,(IUnknown**)NULL,&iu,GUID_NULL); //iu->QueryInterface(DIID_DWebBrowserEvents2,&addToMyListWindow); - addToMyListWindow.Create(m_hWnd, 0,_T("Shell.Explorer.2"),WS_CHILD | WS_VISIBLE, 0, IDC_NLITE_ADDMYLIST); + RECT rc = {0,0,300,200}; + addToMyListWindow.Create(m_hWnd, &rc,_T("Shell.Explorer.2"),WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN , 0); return 0; } diff --git a/nlite/nlite_nlib.cpp b/nlite/nlite_nlib.cpp index b6c0ec3..e295e1d 100644 --- a/nlite/nlite_nlib.cpp +++ b/nlite/nlite_nlib.cpp @@ -32,6 +32,7 @@ VOID CNicoVideoAuth::SetBrowserType(BROWSERTYPE bt){ throw NLIBException(TEXT("ƒjƒRƒjƒR“®‰æ”FØî•ñŽæ“¾‚ÉŽ¸”s‚µ‚Ü‚µ‚½"),rslt,__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__)); } + InternetSetOption(0, INTERNET_OPTION_END_BROWSER_SESSION, NULL, 0); }