• <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 閱讀(287) 評論(0)  編輯 收藏 引用 所屬分類: C++ 、隨筆而已

            公告

            Using C++

            導航

            統計

            留言簿(73)

            隨筆分類(513)

            積分與排名

            最新評論

            閱讀排行榜

            評論排行榜

            久久精品夜色噜噜亚洲A∨ | 久久久久亚洲AV无码网站| 久久久国产99久久国产一| 国产激情久久久久久熟女老人| 蜜臀久久99精品久久久久久小说| 久久精品国产91久久综合麻豆自制 | 久久精品国产亚洲av麻豆小说| 国产L精品国产亚洲区久久| 亚洲精品99久久久久中文字幕 | 亚洲乱码日产精品a级毛片久久 | 久久一区二区三区99| 久久亚洲精精品中文字幕| 久久久久久国产精品免费免费| 久久精品国产99国产精品亚洲| 99久久精品免费看国产一区二区三区 | 一本色综合久久| 国产精品久久永久免费| 精品伊人久久大线蕉色首页| 亚洲国产二区三区久久| 久久久久亚洲Av无码专| 国产精品久久久久免费a∨| 国产一区二区精品久久凹凸| 97久久国产亚洲精品超碰热| 午夜精品久久久久久影视riav| 国产高潮久久免费观看| 久久九九有精品国产23百花影院| 亚洲AV日韩精品久久久久| 亚洲国产成人精品91久久久| 精品久久久久久无码中文野结衣| 久久精品国产99国产精品澳门 | 久久青青草原精品影院| 亚洲中文字幕无码久久综合网| 亚洲国产精品一区二区三区久久| 久久久久97国产精华液好用吗| 国产精品成人精品久久久| 国产精品久久久天天影视香蕉| 国产精品天天影视久久综合网| 久久天天躁狠狠躁夜夜avapp| 麻豆成人久久精品二区三区免费 | 99久久超碰中文字幕伊人| 日产精品久久久久久久|