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

            羅朝輝(飄飄白云)

            關(guān)注嵌入式操作系統(tǒng),移動(dòng)平臺(tái),圖形開(kāi)發(fā)。-->加微博 ^_^

              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              85 隨筆 :: 0 文章 :: 169 評(píng)論 :: 0 Trackbacks

                                                          截取網(wǎng)頁(yè)快照的dll
                                                飄飄白云 (http://www.shnenglu.com/kesalin
                 
            這個(gè)dll的功能是將在后臺(tái)(也可指定參數(shù)是否顯示)用安靜模式(也就是不執(zhí)行JavaScript,ActiveX以及Java程序)打開(kāi)指定網(wǎng)址,并將網(wǎng)頁(yè)截屏保存成png格式的圖片。

            dll src以及測(cè)試程序下載:點(diǎn)擊這里

            如下測(cè)試程序所示:
               


            將得到我的cppblog首頁(yè)的快照?qǐng)D:


            下面來(lái)說(shuō)說(shuō)如何使用這個(gè)dll,我寫(xiě)了一個(gè)裝載dll的幫助文件LuoSnapShotImport.h,只需要include這個(gè)頭文件就很可以很方便地使用了。使用步驟如下:

             

            Step 1: 包含相關(guān)頭文件,載入dll文件
            // Include header files for LuoSnapShot.
            #include "include/LuoSnapShot.h"
            #include 
            "include/LuoSnapShotImport.h"

            // Import lib
            #ifdef _DEBUG
            #pragma comment(lib, 
            "bin/LuoSnapShot_Debug.lib")
            #else
            #pragma comment(lib, 
            "bin/LuoSnapShot.lib")
            #endif

            Step 2: 創(chuàng)建snapshot對(duì)象,并裝載 dll 并初始化,最后清理
            LuoSnapShot::UActivator* g_pLuoSnapShot;

            /**
            * @brief      : Initialize LuoDnd
            * @param      : 
            * @return     : bool
            */

            bool InitLuoSnapShot()
            {
                HRESULT hRslt 
            = LuoSnapShot::Activate_import(
                    L
            "activator",
                    (
            void**)&g_pLuoSnapShot);

                
            if (FAILED(hRslt)) {
                    
            return false;
                }


                hRslt 
            = g_pLuoSnapShot->Initialize();
                
            if (FAILED(hRslt)) {
                    g_pLuoSnapShot
            ->Uninitialize();
                    g_pLuoSnapShot 
            = NULL;
                    
            return false;
                }


                
            return true;
            }


            /**
            * @brief      : Uninitialize LuoDnd
            * @param      : 
            * @return     : 
            */

            void UninitLuoSnapShot()
            {
                
            if (g_pLuoSnapShot != NULL) {
                    g_pLuoSnapShot
            ->Uninitialize();
                    g_pLuoSnapShot 
            = NULL;
                }

            }



            Step 3: 調(diào)用snapShot的AddWebItem函數(shù),截取網(wǎng)頁(yè)快照。參數(shù)WebItem的詳細(xì)說(shuō)明如下:

            Uri      -- 以http://或https://打頭的網(wǎng)址
            Path    -- 保存快照?qǐng)D片的絕對(duì)路徑
            ImageWidth -- 保存快照?qǐng)D片的寬度
            ImageHeight -- 保存快照?qǐng)D片的高度
            Target    --  消息回調(diào)窗口(默認(rèn)為NULL)
            Message -- 回調(diào)消息(默認(rèn)為)
            Cookie  -- 此次截屏的辨識(shí)符號(hào)(默認(rèn)為0)
            ShotDelay -- 截屏延遲時(shí)間
            NavigateTimeout -- 網(wǎng)頁(yè)打開(kāi)超時(shí)時(shí)間
            Show  -- 截屏的時(shí)候是否顯示網(wǎng)頁(yè)(調(diào)試用)
            PageWidth -- 如果Show  為true,前臺(tái)顯示網(wǎng)頁(yè)的寬度
            PageHeight -- 如果Show  為true,前臺(tái)顯示網(wǎng)頁(yè)的高度

                void capture(const LPCWSTR url, const LPCWSTR savePath)
                
            {
                    
            if (g_pLuoSnapShot) {
                        LuoSnapShot::WebItem item;
                        item.Uri 
            = url;
                        item.Path 
            = savePath;
                        item.Show 
            = true;

                        item.ImageWidth 
            = 640;
                        item.ImageHeight 
            = 480;

                        item.Target 
            = *this;
                        item.Message 
            = LuoSnapShot::WM_LUO_SNAPSHOT_CALLBACK;
                        item.Cookie 
            = ++count;

                        item.PageWidth 
            = 1024;
                        item.PageHeight 
            = 768;

                        item.ShotDelay 
            = 2 * 1000;
                        item.NavigateTimeout 
            = 20 * 1000;

                        g_pLuoSnapShot
            ->AddWebItem(&item);
                    }

                }

            posted on 2008-12-01 12:25 羅朝輝 閱讀(3473) 評(píng)論(10)  編輯 收藏 引用 所屬分類(lèi): 網(wǎng)絡(luò)相關(guān)Windows

            評(píng)論

            # re: 截取網(wǎng)頁(yè)快照的dll 2008-12-01 12:57 肥仔
            很有創(chuàng)意,且提供源代碼
            可惜沒(méi)有這方面的需求,用不上了。  回復(fù)  更多評(píng)論
              

            # re: 截取網(wǎng)頁(yè)快照的dll 2008-12-02 12:38 true
            很好的東西,值得研究  回復(fù)  更多評(píng)論
              

            # re: 截取網(wǎng)頁(yè)快照的dll 2008-12-02 15:59 回復(fù)
            問(wèn)題是還是不能截取全部的
            只能截取一個(gè)窗體的  回復(fù)  更多評(píng)論
              

            # re: 截取網(wǎng)頁(yè)快照的dll 2008-12-02 16:45 飄飄白云
            @回復(fù)

            不能截取全部的,只能截取一個(gè)窗體的~~  回復(fù)  更多評(píng)論
              

            # re: 截取網(wǎng)頁(yè)快照的dll 2008-12-03 11:52 回復(fù)
            這樣的話就意義不大了

            你可以考慮下,把整個(gè)網(wǎng)頁(yè)都截取出來(lái)

            簡(jiǎn)單點(diǎn)的方法就是不停的滾動(dòng)截屏,直到底部,最后再拼接  回復(fù)  更多評(píng)論
              

            # re: 截取網(wǎng)頁(yè)快照的dll 2008-12-03 19:06 小不點(diǎn)
            貌似 codeproject上有個(gè)用gdi+實(shí)現(xiàn)了一個(gè)~  回復(fù)  更多評(píng)論
              

            # re: 截取網(wǎng)頁(yè)快照的dll 2008-12-03 19:57 飄飄白云
            ~~@小不點(diǎn)

            gdi+只是在保存圖片的時(shí)候用到了,主要的還是在web control的運(yùn)用上,codeproject上那個(gè)不知道你是不是說(shuō)這個(gè)(貌似不是用gdi+):http://www.codeproject.com/KB/IP/htmlimagecapture.aspx,他是使用MFC封裝的CHtmlView來(lái)實(shí)現(xiàn),我這個(gè)沒(méi)有使用MFC  回復(fù)  更多評(píng)論
              

            # re: 截取網(wǎng)頁(yè)快照的dll 2008-12-03 20:56 小不點(diǎn)
            http://www.codeproject.com/KB/GDI-plus/WebPageSnapshot.aspx
            我看的是這個(gè),他好像是用的MFC中的HTML...  回復(fù)  更多評(píng)論
              

            # re: 截取網(wǎng)頁(yè)快照的dll 2009-04-22 09:20 accesine
            這個(gè)dll寫(xiě)的精彩絕倫啊  回復(fù)  更多評(píng)論
              

            # re: 截取網(wǎng)頁(yè)快照的dll 2011-07-02 06:12 chunchun
            謝謝,應(yīng)該可以用在IIS服務(wù)器上做自動(dòng)截圖吧。

            試試看。


            我以前包裹IE干這事的時(shí)候,貌似在IIS下不成功,因?yàn)閔wnd的問(wèn)題。  回復(fù)  更多評(píng)論
              

            日韩中文久久| 久久精品国产精品青草| 亚洲国产成人精品女人久久久 | 精品久久久久久99人妻| 婷婷久久综合九色综合绿巨人| 亚洲国产精品无码久久久不卡| 成人久久综合网| 女人高潮久久久叫人喷水| 亚洲国产成人久久综合一 | 99久久精品免费看国产一区二区三区| 久久国产精品一区二区| 亚洲欧美另类日本久久国产真实乱对白| 久久AV高潮AV无码AV| 久久婷婷人人澡人人| 久久综合九色综合97_久久久| 日产精品久久久久久久| 久久久久国产精品嫩草影院| 精品久久无码中文字幕| AV无码久久久久不卡蜜桃| 亚洲精品99久久久久中文字幕| 伊人久久大香线蕉精品| 国产亚洲综合久久系列| 人妻少妇久久中文字幕| 亚洲国产另类久久久精品小说| 波多野结衣久久一区二区| 欧美亚洲另类久久综合婷婷| 精品久久久久久无码中文字幕| 久久精品一区二区三区不卡| 久久偷看各类wc女厕嘘嘘| 中文字幕久久波多野结衣av| 伊人久久大香线蕉AV一区二区| 久久久久久国产a免费观看黄色大片 | 模特私拍国产精品久久| 伊人久久大香线蕉AV一区二区| 久久久久国产一区二区三区| 色综合久久天天综合| 国产精品久久久久乳精品爆 | 99久久久久| 久久人人爽人人爽人人片AV麻豆| 国产精品gz久久久| 亚洲&#228;v永久无码精品天堂久久 |