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

            積分與排名

            最新評論

            閱讀排行榜

            評論排行榜

            久久精品国产一区二区三区日韩| 国产精品久久久久久久app| 久久午夜免费视频| 亚洲精品无码成人片久久| 少妇高潮惨叫久久久久久 | 91麻精品国产91久久久久| 美女写真久久影院| 亚洲国产成人久久综合区| 久久婷婷是五月综合色狠狠| 久久久国产精品亚洲一区| 亚洲精品tv久久久久久久久| 久久99精品国产| 久久人人爽人人爽人人片AV不| 99麻豆久久久国产精品免费| 亚洲人成网站999久久久综合| 99久久99久久久精品齐齐| 97精品依人久久久大香线蕉97| 国产精品免费久久久久电影网| 久久精品中文闷骚内射| 日本精品久久久久久久久免费| 精品久久无码中文字幕| 91麻豆国产精品91久久久| 国产免费久久久久久无码| 国产婷婷成人久久Av免费高清 | 久久精品国产亚洲av水果派 | 一本一本久久A久久综合精品| 久久精品国产免费一区| 久久亚洲精品中文字幕| 亚洲精品成人网久久久久久| 久久久久人妻一区精品| 欧美久久精品一级c片片| 久久精品aⅴ无码中文字字幕重口| 日日狠狠久久偷偷色综合0 | 久久久国产精品福利免费| 午夜精品久久久久久毛片| 狠狠色噜噜色狠狠狠综合久久| 亚洲午夜精品久久久久久app| 久久有码中文字幕| 久久性精品| 久久精品青青草原伊人| 国产激情久久久久久熟女老人|