• <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)

            積分與排名

            最新評論

            閱讀排行榜

            評論排行榜

            一极黄色视频久久网站| 精品熟女少妇a∨免费久久| 久久电影网| 国产69精品久久久久APP下载| 久久久久亚洲AV无码专区首JN| 久久99久久99精品免视看动漫| 一本色道久久HEZYO无码| 精品久久一区二区三区| 久久中文字幕视频、最近更新| 婷婷伊人久久大香线蕉AV | 中文成人无码精品久久久不卡 | 久久久无码精品亚洲日韩按摩 | 久久免费大片| 精品蜜臀久久久久99网站| 色欲综合久久躁天天躁| 老司机国内精品久久久久| 无码人妻久久一区二区三区免费丨| 精品人妻伦九区久久AAA片69| 欧洲成人午夜精品无码区久久| 亚洲精品97久久中文字幕无码| 九九久久99综合一区二区| 欧美亚洲色综久久精品国产| 国产69精品久久久久观看软件| 久久成人永久免费播放| 国产美女久久精品香蕉69| AV无码久久久久不卡蜜桃| 色狠狠久久综合网| 久久久久国产一区二区| 国产精品亚洲综合专区片高清久久久| 日韩AV无码久久一区二区| 亚洲午夜久久久影院伊人| 精品久久久久久无码不卡| 久久久午夜精品福利内容| 久久国产精品视频| 久久久精品国产Sm最大网站| 99久久伊人精品综合观看| 国内精品久久久久久久久| 久久一区二区三区99| 一本久久精品一区二区| 久久精品国产日本波多野结衣| 波多野结衣久久一区二区|