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

            公告

            Using C++

            導航

            統計

            留言簿(73)

            隨筆分類(513)

            積分與排名

            最新評論

            閱讀排行榜

            評論排行榜

            亚洲伊人久久成综合人影院| 色婷婷久久综合中文久久蜜桃av| 国产精品久久久亚洲| 久久精品国内一区二区三区| 国产精品免费久久久久影院 | 亚洲AV无码久久精品狠狠爱浪潮 | 国产成人99久久亚洲综合精品| 大美女久久久久久j久久| 午夜精品久久影院蜜桃| 色诱久久久久综合网ywww| 久久精品国产免费一区| 久久精品aⅴ无码中文字字幕不卡| 国产精品久久久久久福利漫画| 人人狠狠综合久久亚洲| 一本色道久久88加勒比—综合| 狠狠色丁香久久婷婷综合图片| 色综合久久天天综合| 久久久久久午夜成人影院| 无码任你躁久久久久久久| 国产成人精品久久一区二区三区av| 亚洲伊人久久精品影院| 狠狠色丁香婷婷久久综合| 激情综合色综合久久综合| 久久精品一区二区国产| 久久精品国产亚洲αv忘忧草 | 亚洲国产精品无码久久九九| 久久国产高清字幕中文| 久久人爽人人爽人人片AV| 久久国产AVJUST麻豆| 亚洲婷婷国产精品电影人久久| 久久一区二区三区免费| 伊人丁香狠狠色综合久久| 国产一区二区精品久久| 狠狠色噜噜狠狠狠狠狠色综合久久 | 777久久精品一区二区三区无码| 久久丫精品国产亚洲av不卡| 新狼窝色AV性久久久久久| 国产A三级久久精品| 青青草原精品99久久精品66| 五月丁香综合激情六月久久| 欧美午夜精品久久久久免费视 |