zoukankan      html  css  js  c++  java
  • [Tool] Open Live Writer插件开发

    一 前言

    Windows Live Writer(简称 WLW)开源之后变成 Open Live Writer(简称 OLW),原先 WLW 的插件在 OLW 下都不能用了,原因很简单,WLW 插件开发是基于 WindowsLive.Writer.Api.dll 组件,而 OLW 的插件则是基于 OpenLiveWriter.Api.dll,命名空间都不一样了,自然是不可能直接拿过来用的。不过对于插件开发而言,换一个 dll,换一个命名空间,其他差不多都保持不变。

    对于 WLW 的插件开发,可以参考之前 仿博客园插入代码插入折叠区域功能 两篇文章,今天这里则是要将之前 WLW 下的工程修改成 OLW 使用的插件。

    其中:

    WLW 下载地址:http://windows.microsoft.com/en-us/windows/essentials

    OLW 下载地址:http://openlivewriter.org/ Github:https://github.com/OpenLiveWriter

    二 正文

    如果你想要自己开发一个 OLW 插件,怎么办呢?

    1. 新建一个 Windows 类库工程;

    2. 在“程序包管理器控制台”中,也就是通过 NuGet 执行“Install-Package OpenLiveWriter.SDK -Pre命令,导入上面提到的 OpenLiveWriter.Api.dll

    当然了,你也可以在安装完 Open Live Writer 之后,从 C:Users用户文件夹AppDataLocalOpenLiveWriterapp-0.6.0.0 里面寻找到该 dll 组件,手动在项目引用处添加该 dll 引用,也是可以的。

    3. 最重要的是要实现 OpenLiveWriter.Api.ContentSource 的继承扩展类,由此作为插件的入口。下面根据示例代码简单讲解一下。

      1 /// <summary>
      2 /// 插件描述属性设置
      3 /// WriterPlugin(string id, string name, 
      4 /// 属性:
      5 /// [Description = string], 
      6 /// [HasEditableOptions = bool], 
      7 /// [Id = string], 
      8 /// [ImagePath = string], 
      9 /// [Name = string], 
     10 /// [PublisherUrl = string]
     11 /// </summary>
     12 [WriterPlugin(
     13     "4d558c25-8a1d-4441-a68f-7cd40c35c514",
     14     "插件名称",
     15     Description = "插件描述",
     16     HasEditableOptions = true,
     17     ImagePath = "插件图标",
     18     PublisherUrl = "插件发布URL")]
     19 [InsertableContentSource("Source Code")]
     20 public class ContentSource扩展类 : ContentSource
     21 {
     22     ...
     23 }

    继承 OpenLiveWriter.Api.ContentSource 的扩展类,需要设置 WriterPlugin 特性,用于描述插件的相关配置。WriterPlugin 需要两个参数,id 和 name,id 直接取工程->属性->程序集信息 里的 GUID 即可,也可以自己设定;name 表示插件的名称,参考下面的图示说明。

    • 4d558c25-8a1d-4441-a68f-7cd40c35c514:id参数,对应工程的GUID;
    • 插件名称:插件名称,用于插件显示名称;
    • Description:插件描述信息,参考如下图示;
    • HasEditableOptions:默认为 false,表示是否显示“Options…”设置插件属性按钮;
    • ImagePath:插件图标路径,ico 图像格式,如果 ico 图标存放于工程目录下 Images/code.ico,则此处表示为 Images.code.ico,也就是说需要把路径连接符转换成 .;
    • PublisherUrl:插件发布网址链接,参考如下图示;

    InsertableContentSource 特性表示在插入部分显示的一些文本信息。

    QQ截图20160322233746

    3. 接下来就要重写该类中的 CreateContent 方法了。

    public virtual DialogResult CreateContent(IWin32Window dialogOwner, ref string content);

    第一个参数 dialogOwner 表示当前 OLW 窗口句柄,第二个参数 content 是一个引用,表示从 OLW 中引用过来,指当前在 OLW 窗口中选中的内容,此时就可以在该方法中对该 content 内容进行处理,最后赋值返回给 content,就可以实现插件对 OLW 当前内容的封装处理了。当然也可以在插件中对剪贴板内容进行整合处理后,再赋值给 content,作为光标位置处插入的新内容。

    4. 如果想要实现上图中右下角那个“Option”,对插件进行属性设置,则需要重写该类中的 EditOptions 方法了。

    public virtual void EditOptions(IWin32Window dialogOwner);

    三 生成

    1. 如何将生成的自定义插件 dll 自动复制拷贝到 OLW 安装目录下呢?

    可以在 工程->属性->生成事件 里设置“后期生成事件命令行”,保证在运行后期生成事件成功时,自动将 Debug 目录下的插件 dll 拷贝到 OLW 安装目录下,如下图所示:

    image

    通过 copy 命令,可以将 $(TargetPath) 指定的dll文件,拷贝到 C:…AppDataLocalOpenLiveWriterapp-0.6.0.0Plugins 文件夹下。(也可以采用网上提到的 XCOPY /D /Y /R命令进行拷贝,本人是怎么简单怎么来,这些命令详情可以查看 cmd,在 cmd 中输入 help copy,就可以看到命令帮助提示)

    BTW,原先的 WLW 安装后,目录是在 C:Program Files (x86)Windows Live Writer,而 OLW 安装后是在 用户文件夹下的隐藏文件夹 AppData 里,比如本人的就是 C:Users用户文件夹AppDataLocalOpenLiveWriterapp-0.6.0.0,而且默认该目录下没有 Plugins 文件夹存放插件,可以手动创建一个用于存放插件 dll。

    四 调试

    在编写自定义插件过程中,调试是难免的,而该工程项目只是一个 dll 类库,与 WLW 类似,调试也是需要依赖于 OLW 这个外部程序的。

    同样,需要在 工程->属性->调试 中设置“启动外部程序“,并指定到 OLW 安装目录下对应的 exe 应用程序文件即可,此时在 VS 项目中点击启动,就会自动启用 OLW 进行插件调试。

    image

    剩下的就要靠自己自由发挥了,下一篇介绍在插件中封装博客园的 SyntaxHighlighter 高亮代码功能。

    五 资源

  • 相关阅读:
    转_前端开发技术概要
    获取链接的参数
    tabIndex 主要是美化tab键切换的体现
    textarea自动增高并隐藏滚动条
    Zen Coding:css,html缩写替换大观让你的html,css飞起来
    动态添加链接颜色代码
    转javascript 数组
    为指定元素增加样式
    1 CodeBox代码盒子 alpha版发布
    转发布js支持Firefox的加入收藏代码
  • 原文地址:https://www.cnblogs.com/memento/p/5309213.html
Copyright © 2011-2022 走看看