Avatar

線上人數

tracker
 

微軟認證



 

MSN&Skype&Email


 

twMVC

twMVC

每月文章

最新回應

上一篇【Live Writer 小插件 - Insert Amazon Details】中,因為 Insert Amazon Deail 無法提供中文書籍的插入,所以還蠻想有人可以寫一個【插入 博客來】的 Plugin。可是,我似乎有點太心急了,所以利用 WindowForm 昨天花一兩個小時寫了一個雛型版本,已經可以正常運作了。困難的地方是我沒有寫過 Live Writer 的 Plugin,所以不知道從何下手。多虧了 dotjum,指了一條路可以給我參考。所以,就先寫一個插入表情符號的 Plugin 來測試看看。

參考了【Windows Live Writer SDK】,原來撰寫的 Content Source Plugins 分為【Simple】與【Smart】兩種:

  1. Simple. Enable the insertion of custom HTML content into a post. Simple content sources are derived from the ContentSource base class.
  2. Smart. Enables the insertion of HTML content with "smart" editing capabilities into a post. These capabilities include atomic selection, two-way editing using the Sidebar, resizability, and the ability to have distinct HTML representations for editing and publishing contexts. Smart content sources are derived from the SmartContentSource base class.

簡單的來說,Simple 屬於單向的插入 HTML 碼,如果有任何變動,都只能透過自己手動修改;Smart 屬於雙向的 HTML 碼與 Plugin 之間會有交互作用,改變任一方另一方也隨之改變。

撰寫 Live Writer Plugin 的環境,僅需要安裝 Visual Studio 以及 Live Writer,安裝 Visual Stuido 是整合式開發環境,而安裝 Live Writer 是取得 SDK,而開發的專案選擇【Class Library】即可。

Writer-0001

建立專案後,就必須匯入 Live Writer SDK,在專案中加入參考檔案 C:\Program Files\Windows Live\Writer\WindowsLive.Writer.Api.dll;並且加入 System.Windows.Forms 以便開發視窗介面。

Writer-0002 Writer-0003

首先,建立一個 類別需要繼承 ContentSource 類別,這個自己命名的類別(例如: InsertCatEmotionPlugin)定義了 Plugin 的名稱、圖示、Plugin 描述、回傳的 HTML 碼等資訊。

   1:  using System.Windows.Forms;
   2:  using WindowsLive.Writer.Api;
   3:   
   4:  namespace WindowsLiveWriter
   5:  {
   6:      [WriterPlugin("140A0597-3011-4fea-A1E3-C1B32161FCC5", "可愛貓咪表情",
   7:          PublisherUrl = "http://www.dotblogs.com.tw/chhuang/",
   8:          ImagePath = "Cat.bmp",
   9:          Description = "在 Blog 內文中插入可愛貓咪表情")]
  10:      [InsertableContentSource("可愛貓咪表情")]
  11:      public class InsertCatEmotionPlugin : ContentSource
  12:      {
  13:          public override DialogResult CreateContent(IWin32Window dialogOwner, ref string newContent)
  14:          {
  15:              using (InsertCatEmotion insertCatEmotionForm = new InsertCatEmotion())
  16:              {
  17:                  DialogResult result = insertCatEmotionForm.ShowDialog();
  18:                  newContent = insertCatEmotionForm.HtmlString;
  19:   
  20:                  return result;
  21:              }
  22:          }
  23:      }
  24:  }

 

 

 

 

 

【140A0597-3011-4fea-A1E3-C1B32161FCC5】是自己建立的 GUID,可利用 VIsual Studio 的 GUID Tool 建立,用來辨識 Plugin 使用。【可愛貓咪表情】是套件名稱。【PublisherUrl】設定發佈者的網址。【ImagePath】定義 Plugin 的圖示名稱,該圖示需為 bmp 檔案、大小 18*16 左右,且須定義為 Embedded Resource 來發佈。

Writer-0007

自己撰寫的類別 InsertCatEmotionPlugin 需要繼承 ContentSource 類別,還要覆寫 CreateContent() 方法,傳回 DialogResult 變數。所以我們必須寫一個 WinodwForm:insertCatEmotionForm,其中 insertCatEmotionForm.HtmlString 就是要回傳的 HTML 碼。所以大致上,只需要會寫 WindowForm 並且知道使用者勾選了什麼,需要傳回怎樣的 HTML 碼,其實寫 Live Writer Plugin 不會有太大的困難。

 Writer-0005

而為了開發方便,我們可以將專案產生的 dll 編譯後馬上複製到【C:\Program Files\Windows Live Writer\Plugins\】供我們測試,可以設定專案屬性設定 Build Events 的 Post-build event command line: 【xcopy "$(TargetPath)" "C:\Program Files\Windows Live Writer\Plugins\" /D /R /Y】。

Writer-0004 Writer-0004-2

如果開發成功的話,打開 Live Writer 就可以看到【插入可愛貓咪表情】的圖示,透過介面就可以勾選表情符號,插入可愛貓咪表情囉。

Writer-0008 Writer-0009

Writer-0010 

所有表情符號大集合:

下載【可愛貓咪表情符號】(MD5: 5b6fbc3bc13eaf4f2ef018048a3fb4c5  WindowsLiveWriter.InsertCatEmotionPlugin.zip)

下載【插入可愛貓咪表情符號】專案 (MD5: 76437dfa77128cf15c6484221f52bc80  InsertCatEmotionPluginProject.zip)

如果大家使用上沒有太大的問題,近日內將放出原始碼專案,也希望拋磚引玉會有更多的 Live Writer Plugin 出現。


DotBlogs Tags: .Net工具 chhuang LiveWriter 軟體教學 網路工具

關連文章

ColorTranslator 類別 - 處理顏色轉換好幫手

Live Writer 小插件 - Insert Amazon Details

Multi-color DropDownList using C# - 顏色挑選器

利用 Google Maps 查詢地址經緯度 - Geocoding via HTTP 簡易範例

回應

  • # re: 我的 Live Writer Plugin - 插入可愛貓咪表情符號 by coolbird

    您好,看到這個開發教學我覺得很有興趣,
    想學習這個如何寫,
    您說原始碼專案會放出來,
    請問是何時呢?
    還是可以mail給我?
    謝謝~

    2008/4/18 下午 08:45 | 回覆

  • # re: 我的 Live Writer Plugin - 插入可愛貓咪表情符號 by chhuang

    OK 阿...非常歡迎有人有興趣研究寫 Live Writer 的 Plugin

    原先沒有放出來是因為還在測試階段,而且都沒有人回應我,讓我有點灰心。

     

    2008/4/18 下午 09:20 | 回覆

  • # re: 我的 Live Writer Plugin - 插入可愛貓咪表情符號 by lulu

    呵 不會啦 大家都是喜歡看文 但不習慣回文
    期待大大的穩定版本出來
    可以讓大家一起學習
    變的跟大大一樣利害

    2008/4/18 下午 10:37 | 回覆

  • # re: 我的 Live Writer Plugin - 插入可愛貓咪表情符號 by AR WAI

    好勁呀!.....

    2008/4/19 上午 12:01 | 回覆

  • # re: 我的 Live Writer Plugin - 插入可愛貓咪表情符號 by 希婷

    感恩捏><超可愛的

    2008/4/19 下午 02:12 | 回覆

  • # re: 我的 Live Writer Plugin - 插入可愛貓咪表情符號 by coolbird

    那請問是否能放出原始碼給我參考呢
    我嘗試寫一個類似的,不過做到50%後有點小問題,
    所以想參考大大您怎麼寫的,
    只是想參考,所以沒穩定比較沒關係
    可以嗎? 謝謝您~
    您開發的都很讚
    一定很多人默默支持,不要灰心^^

    2008/4/20 下午 08:26 | 回覆

  • # re: 我的 Live Writer Plugin - 插入可愛貓咪表情符號 by chhuang

    我已經貼出來很多天了...

    下載【插入可愛貓咪表情符號】專案 (MD5: 76437dfa77128cf15c6484221f52bc80  InsertCatEmotionPluginProject.zip)

     

    2008/4/20 下午 08:32 | 回覆

  • # re: 我的 Live Writer Plugin - 插入可愛貓咪表情符號 (已釋出原始碼專案) by coolbird

    我已經用大大的原始碼小做修改做一個符合自己習慣的plugin
    謝謝大大您的提供,讓我有機會能學習到如何開發,

    以下是我練習的成果,跟大大通知一下^^
    http://coolbirdsss.blogspot.com/

    真的很謝謝您~

    2008/5/2 下午 12:43 | 回覆

  • # re: 我的 Live Writer Plugin - 插入可愛貓咪表情符號 (已釋出原始碼專案) by chhuang

    請問,有提供下載嗎?

     

    2008/5/3 下午 03:31 | 回覆

  • # re: 我的 Live Writer Plugin - 插入可愛貓咪表情符號 (已釋出原始碼專案) by u882061

    很不錯的教學,
    謝謝分享

    2008/9/27 下午 05:32 | 回覆

  • # re: 我的 Live Writer Plugin - 插入可愛貓咪表情符號 (已釋出原始碼專案) by jeff377

    不錯的分享,加油!!

    2008/10/19 下午 05:01 | 回覆

  • # re: 我的 Live Writer Plugin - 插入可愛貓咪表情符號 (已釋出原始碼專案) by 秘密

    在那裡下載~~完全不懂Q~Q!

    2009/10/18 下午 05:59 | 回覆

  • # re: 我的 Live Writer Plugin - 插入可愛貓咪表情符號 (已釋出原始碼專案) by chhuang

    不是有一行寫著 下載【插入可愛貓咪表情符號】專案 (MD5: 76437dfa77128cf15c6484221f52bc80

    2009/10/18 下午 09:30 | 回覆

  • # re: 我的 Live Writer Plugin - 插入可愛貓咪表情符號 (已釋出原始碼專案) by 秘密

    我又來了Q~Q"~~不好意思!!我有下載~~然後不隻怎用聊天家圖案貓咪T^T~~我有看你說明~~(看不懂ˊˋ||||

    2009/10/19 下午 05:59 | 回覆

  • # re: 我的 Live Writer Plugin - 插入可愛貓咪表情符號 (已釋出原始碼專案) by 薰妹

    請問~ 你會修改RC語音的表情圖嗎?

    2011/11/25 上午 07:24 | 回覆

登入後使用進階評論

Please add 8 and 6 and type the answer here: