HtmlScreenCapture – Live Writer SDK 中好用的 class

三月 8, 2009

HtmlScreenCapture

可以將 HTML 內容(或指定網址)快照成圖檔。(Provides the ability to capture HTML content into a bitmap. [#])

  • 要參考 C:\Program Files\Windows Live\Writer\WindowsLive.Writer.Api.dll

程式碼:

using System;
using System.Collections.Generic;
using System.Text;
using WindowsLive.Writer.Api;

class Program
{
    static void Main(string[] args)
    {
        // 從指定網址截圖
        WindowsLive.Writer.Api.HtmlScreenCapture capture =
            new HtmlScreenCapture(new Uri("http://tw.yahoo.com"), 1024/*寬度*/);
        System.Drawing.Bitmap bmp = capture.CaptureHtml(5000/*timeoutMs*/);
        bmp.Save(@"C:\1.png", System.Drawing.Imaging.ImageFormat.Png);

        // 從 html 內容截圖
        WindowsLive.Writer.Api.HtmlScreenCapture capture2 = new HtmlScreenCapture(
            "<h1>中文測試</h1><p>一些<b>文字</b>"+
            "和一個<a href='http://klcin.tw/net'>連結</a></p>", 200);
        System.Drawing.Bitmap bmp2 = capture2.CaptureHtml(5000);
        bmp2.Save(@"C:\2.png", System.Drawing.Imaging.ImageFormat.Png);

    } // Main
} // class

輸出結果:

從指定網址截圖
從 html 內容截圖

參考資料:

迴響已關閉

Faves:2009/03/06:jQuery

三月 6, 2009

jQuery

# | jquery,javascript,online tool
Mini jQuery Lab is a handy HTML page to test simple Javascript and jQuery. It is useful when you want to verify uncertain Javascript syntax …

測試jQuery的線上工具

# | jquery
$("#someDiv")[someCondition ? "show" : "hide"]();

# | plugin,jquery,firefox
在Firefox上,我們可以透過console.log()輸出一些Debug資訊,並使用Firebug檢視,跟.NET偵錯時的Debug.WriteLine()有異曲同工之妙!

# | jquery,lightBox,plugin

ThickBox, FancyBox, jQuery lightBox plugin

# | jQuery,online help
Visual jQuery 將 API 裡的各個函數分門別類,以階層方式編排整理,並且每個 API 都很用心地提供明確的範例,讓人更容易瞭解各函數的功用。網頁的操作界面支援動態層階式的展開、收合,方便函數尋找,想當然爾,這些網頁操作互動程式都是採用 jQuery 開發的。

速查表

# | jquery,速查表
jQuery 速查表,黑白版,字體較小但資訊較詳細

# | jquery,速查表
jQuery速查表,彩色版,字較大並有彩色,較賞心悅目

繼續閱讀 »

迴響已關閉

Twitter:2008/09-2009/02

二月 28, 2009

2009/02/28

2009/02/23

  • 22:43|CarolineX: 【Data Dictionary Creator】他可以幫你的 SQL Server 中的表格、欄位做註解,儲存「擴充屬性」中,然後可以直接輸出完整的資料庫結構說明文件(包括 Word, Excel, Xml, Html, T-SQL 等)http://xrl.in/1msr
  • 22:41|CarolineX: 【現在就下載開源工具P/Invoke Interop Assistant — 使用P/Invoke中進行簽名轉換的好幫手】幫助使用P/Invoke(及reverse P/Invoke)的開發人員進行託管代碼與非託管代碼之間簽名轉換的小工具。http://xrl.in/1msq
  • 22:36|CarolineX: 【InfoQ: 在.NET應用程序中使用7-Zip的壓縮/解壓縮功能】開發人員Eugene Sichkar在Code Project中發佈了一個使用7-Zip壓縮功能的.NET/C#項目。7-Zip是一個用於壓縮/解壓多種文件格式的開源項目。 http://xrl.in/1msp
  • 22:32|CarolineX: 【Oxite – CodePlex】Oxite 是一個簡單的 blog 引擎,完全以 ASP.Net MVC 實作。http://xrl.in/1msm

繼續閱讀 »

迴響已關閉

[C#]程式幫您按按鈕(SendKey & SendMessage)

十二月 6, 2008

前言

專案中有個程式負責透過 ACDSee 列印(ProcessStartInfo.Verb=”Print”)各種圖檔。但 ACDSee 在列印時會出現讓使用者設定格式、頁首頁尾、印表機選項的視窗出現,要按下「列印(P)」之後才會真的開始列印,所以程式必須在開始工作時偵測 ACDSee 的狀態並且按下列印鈕。

方法如下:

  1. hWnd = FindWindow(null,”ACDSee – 列印”); // 尋找 ACDSee 的列印視窗
  2. SetForegroundWindow(hWnd); // 將視窗帶到前景
  3. SendKeys.SendWait(“{ENTER}”); // 送出 ENTER 鍵按列印鈕

事前測試都OK,但安裝到客戶的機器上卻經常發生沒有自動按列印鈕而卡住的問題。原以為是被其它程式干擾{ENTER}的發送,但奇怪的是同事在現場怎麼測試都無法重現問題,一離開不久客戶就反應問題又發生了。

最後,細心的同事發現是因為機器一段時間沒人操作就會被鎖住(lock),流程卡住的問題就開始了!

推測:當系統 lock 時,畫面看不到 ACDSee 的視窗(但 FindWindow 可以找到)所以 SendKey 無法送到正確的視窗。

繼續閱讀 »

迴響已關閉

Windows Live Writer Backup – 備份研究

十一月 30, 2008

使用 Windows Live Writer Backup (2.0.0.22) 備份 Windows Live Writer (14.0.5025.904) 時發生如下的錯誤,雖然最後顯示備份成功,但並沒有任何檔案產生。

錯誤訊息

System.Diagnostics.Debug.WriteLine(exception.ToString())
System.NullReferenceException: 並未將物件參考設定為物件的執行個體
   於 CabLib.Compress.OnUpdateStatus(kCurStatus pk_CurStatus, Void* p_Param)
   於 CCompressT<CCompress>.FCIUpdateStatus(UInt32 typeStatus, UInt32 cb1, UInt32 cb2, Void* pv)
   於 CCompressT<CCompress>.FlushCabinet(CCompressT<CCompress>* , Int32 b_CreateNewCabinetFile, Void* pParam)
   於 CCompressT<CCompress>.DestroyFCIContext(CCompressT<CCompress>* )
   於 CCompress.{dtor}(CCompress* )
   於 ___CxxCallUnwindDtor(IntPtr pDtor, Void* pThis)
   於 CabLib.Compress.CompressFileList(ArrayList i_FileList, String s_CabFile, Int32 s32_SplitSize)
   於 CabLib.Compress.CompressFolder(String s_Folder, String s_CabFile, String s_Filter, Int32 s32_SplitSize)
   於 LiveWriterBackup.BackupRestore.doCompression(String filen)

於是使用工具去研究 Windows Live Writer Backup 的錯誤所在及其備份原理。

繼續閱讀 »

迴響已關閉