• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Codejie's C++ Space

            Using C++

            記錄:Lingos結果窗口訪問


            ??? 下午等著開會,無聊又翻出DLL代碼來,上次由于VCExpress不支持ATL,導致程序開發停止。研究個作弊的法子,終于可以繼續寫下去了。
            ??? 下面是今天反復嘗試后的代碼,可以獲取Lingos結果窗口的顯式了。很亂,參考都不建議,僅僅做個記錄。

            ?1#include?<mshtml.h>
            ?2#include?<atlbase.h>
            ?3#include?<oleacc.h>
            ?4#include?<tchar.h>
            ?5
            ?6BOOL?CALLBACK?EnumChildProc(HWND?hwnd,LPARAM?lParam)
            ?7{
            ?8????TCHAR????buf[100];
            ?9
            10????::GetClassName(?hwnd,?(LPTSTR)&buf,?100?);
            11????if?(?_tcscmp(?buf,?_T("Internet?Explorer_Server")?)?==?0?)
            12????{
            13????????*(HWND*)lParam?=?hwnd;
            14????????return?FALSE;
            15????}

            16????else
            17????????return?TRUE;
            18}
            ;
            19
            20//You?can?store?the?interface?pointer?in?a?member?variable?
            21//for?easier?access
            22void?OnGetDocInterface(HWND?hWnd)?
            23{
            24????CoInitialize(?NULL?);
            25
            26????//?Explicitly?load?MSAA?so?we?know?if?it's?installed
            27????HINSTANCE?hInst?=?::LoadLibrary(?_T("OLEACC.DLL")?);
            28????if?(?hInst?!=?NULL?)
            29????{
            30????????if?(?hWnd?!=?NULL?)
            31????????{
            32????????????HWND?hWndChild=NULL;
            33????????????//?Get?1st?document?window
            34????????????::EnumChildWindows(?hWnd,?EnumChildProc,?(LPARAM)&hWndChild?);
            35????????????if?(?hWndChild?)
            36????????????{
            37????????????????CComPtr<IHTMLDocument2>?spDoc;
            38????????????????LRESULT?lRes;
            39????????????
            40????????????????UINT?nMsg?=?::RegisterWindowMessage(?_T("WM_HTML_GETOBJECT")?);
            41????????????????::SendMessageTimeout(?hWndChild,?nMsg,?0L,?0L,?SMTO_ABORTIFHUNG,?1000,?(DWORD*)&lRes?);
            42
            43????????????????LPFNOBJECTFROMLRESULT?pfObjectFromLresult?=?(LPFNOBJECTFROMLRESULT)::GetProcAddress(hInst,?("ObjectFromLresult"));
            44????????????????if?(?pfObjectFromLresult?!=?NULL?)
            45????????????????{
            46????????????????????HRESULT?hr;
            47????????????????????hr?=?(*pfObjectFromLresult)(?lRes,?IID_IHTMLDocument,?0,?(void**)&spDoc?);
            48????????????????????if?(?SUCCEEDED(hr)?)
            49????????????????????{
            50????????????????????????IDispatch?*pDisp;?
            51????????????????????????IHTMLWindow2?*pWin;?
            52????????????????????????spDoc->get_Script(&pDisp);?
            53????????????????????????pDisp->QueryInterface(IID_IHTMLWindow2,?(void?**)&pWin);?
            54????????????????????????//pDisp->Release();?
            55????????????????????????IHTMLDocument2*?pDoc?=?NULL;
            56????????????????????????pWin->get_document(&pDoc);?
            57????????????????????????//pWin->Release();?
            58
            59????????????????????????//VARIANT?v;
            60????????????????????????//v.vt?=?VT_BSTR;
            61????????????????????????//v.bstrVal?=?_T("FF0000");
            62????????????????????????////spDoc->put_bgColor(v);//?CComVariant("red")?);
            63????????????????????????////pDoc->get_bgColor(&v);

            64????????????????????????//pDoc->put_bgColor(v);
            65????????????????????????
            66????????????????????????IHTMLElement*?p?=?NULL;
            67????????????????????????pDoc->get_body(&p);
            68????????????????????????BSTR?str;
            69????????????????????????p->get_innerText(&str);
            70????????????????????????BSTR?html;
            71????????????????????????p->get_innerHTML(&html);
            72
            73????????????????????????VARIANT?m;
            74????????????????????????m?=?v;
            75????????????????????}

            76????????????????}

            77????????????}
            ?//?else?document?not?ready
            78????????}
            ?//?else?Internet?Explorer?is?not?running
            79????????::FreeLibrary(?hInst?);
            80????}
            ?//?else?Active?Accessibility?is?not?installed
            81????CoUninitialize();
            82}

            ??? 這樣,關于Lingos取結果的問題中的關鍵兩個問題都解決了,可以著手寫代碼。嘿嘿,不知道還有沒有興趣繼續下去~

            posted on 2009-11-06 18:02 codejie 閱讀(284) 評論(0)  編輯 收藏 引用 所屬分類: C++隨筆而已

            公告

            Using C++

            導航

            統計

            留言簿(73)

            隨筆分類(513)

            積分與排名

            最新評論

            閱讀排行榜

            評論排行榜

            国产精品成人99久久久久91gav | 一本久久a久久精品综合香蕉 | 久久这里只有精品视频99| 久久久精品无码专区不卡| 模特私拍国产精品久久| 91精品国产综合久久精品| 久久综合伊人77777麻豆| 午夜人妻久久久久久久久| 久久www免费人成精品香蕉| 人妻少妇久久中文字幕 | 一本色道久久88精品综合| 99久久精品国产一区二区三区| 波多野结衣久久一区二区| 曰曰摸天天摸人人看久久久| 日韩精品久久无码中文字幕| 国产午夜福利精品久久2021 | 国产成人精品综合久久久| 51久久夜色精品国产| 久久久久久久波多野结衣高潮 | 区亚洲欧美一级久久精品亚洲精品成人网久久久久| 2021久久国自产拍精品| 国产叼嘿久久精品久久| 国产成人精品免费久久久久| 精品久久综合1区2区3区激情| 亚洲中文字幕无码久久2017| 久久午夜福利电影| 中文字幕一区二区三区久久网站| 久久人人爽人人爽人人AV东京热| 2021国产精品久久精品| 伊人久久无码精品中文字幕| 激情五月综合综合久久69| 青青草国产成人久久91网| 99久久99久久| 亚洲国产成人久久综合一| 国产亚洲欧美成人久久片| 国产精品久久久久久一区二区三区| 亚洲愉拍99热成人精品热久久| 超级97碰碰碰碰久久久久最新| 久久久久久久久久久久久久 | 国产精品9999久久久久| 精品少妇人妻av无码久久|