1、参考链接

参考:http://www.cnblogs.com/liulun/archive/2009/05/27/1491116.html

Live Writer API参考:http://msdn.microsoft.com/en-us/library/aa702864.aspx

获取用户名密码参考:http://www.cnblogs.com/xiaoshatian/archive/2010/09/14/1825561.html

经过修改后的项目文件查看如下:LiveWriterPlugin2.7z

2、Live Writer API调用实例

2.1、添加关键引用

using WindowsLive.Writer.Api;
using System.Windows.Forms;
using System.Web;

引用的dll文件在你安装windows live writer的根目录下

名字叫WindowsLive.Writer.Api.dll

2.2、框体类文件

添加一个类文件,此文件程序用来处理用户插入的代码

    public static class ContentProcessor
{
public static string ProcessedContent { get; private set; }
public static void Process(string originalContent)
{
ProcessedContent = (!string.IsNullOrEmpty(originalContent)
?string.Format("<fieldset style=\"background-color:#E0EFF6;color:#15428B\"><pre>{0}</pre></div>", HttpUtility.HtmlEncode(originalContent))
:string.Empty
);
}
}

添加一个windows form窗体,如图:

给确定按钮添加的事件为

        private void button1_Click(object sender, EventArgs e)
{
ContentProcessor.Process(this.textBox1.Text);
this.Close();
}

其中ContentProcessor.Process(this.textBox1.Text);

就是调用的我们上一个类文件中的处理程序

2.2.1、插件类文件

    [WriterPlugin("7c371eef-e350-4aae-af28-91613a9137e3", "xland", Description = "insert code plugin", Name = "xland", PublisherUrl = "http://www.cnblogs.com/liulun")]
[InsertableContentSource("insert code",SidebarText="insert code")]
public class MyPlugin:ContentSource
{
public override DialogResult CreateContent(IWin32Window dialogOwner, ref string content)
{
new ProcessForm().ShowDialog();
content = ContentProcessor.ProcessedContent;
return (!string.IsNullOrEmpty(content) ? DialogResult.OK : DialogResult.No);
}
}

其中7c371eef-e350-4aae-af28-91613a9137e3为一个GUID

其他的一些信息是插件在live writer中的信息

函数中第一句是创建一个窗口(我们刚才制作的窗口)

第二句获取我们输入的数据(处理过后的数据)

第三句让live writer知道有东西要插入。

content变量是live writer中的,所以要用ref修饰

都完成后只要把生成的dll文件放在live writer安装目录下Plugins文件夹内就可以了

此文章就是用这个插件写的

贴个图看下

2.2.2、插件类文件图标

c#项目中,添加图片到根目录(图片为18*16大小),右键图片属性,生成操作:嵌入的资源,添加ImagePath如下。

    [WriterPlugin("7c371eef-e350-4aae-af28-91613a9137e3", "xland", ImagePath="icon.png",Description = "insert code plugin", Name = "xland", PublisherUrl = "http://www.cnblogs.com/liulun")]
[InsertableContentSource("insert code",SidebarText="insert code")]
public class MyPlugin:ContentSource
{
public override DialogResult CreateContent(IWin32Window dialogOwner, ref string content)
{
new ProcessForm().ShowDialog();
content = ContentProcessor.ProcessedContent;
return (!string.IsNullOrEmpty(content) ? DialogResult.OK : DialogResult.No);
}
}

2.2.3、源代码下载

LiveWriterPlugin.rar

另外:

我在我的blog中设置了这样的样式

pre { white-space: pre-wrap; /* css-3 */ white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ white-space: -pre-wrap; /* Opera 4-6 */ white-space: -o-pre-wrap; /* Opera 7 */ }
* html pre { word-wrap: break-word; /* Internet Explorer 5.5+ */ white-space : normal ; /* Internet Explorer 5.5+ */ }

具体设置方法是,进入你的博客园后台》》》选项》》》config》》》通过CSS定制页面 

这样设置主要是不让代码太宽,撑破页面

 

******************************************************

3、获取用户信息

Windows Live Writer是颇受欢迎的博客客户端,除了支持多种博客服务之外,还具备良好的扩展性,允许第三方开发插件来扩展或补充功能,我也为它开发了两个插件:用来补充Slug的SlugHelper和补充图片Exif信息的ExifInfo

但你有没有想过,虽然这些第三方插件的确为我们提供了方便,但它们真的值得信赖吗?

 

最近搬家,没有网络,闲暇时便用“.NET Reflector”来查看Windows Live Writer的内部实现,期望能找到对我开发插件有帮助的API,没想到却发现了令人大吃一惊的东西,Windows Live Writer插件可以轻而易举地窃取你的博客账号和密码!

想知道是怎么做到的吗?只需要随便开发一个插件,添加对“WindowsLive.Writer.BlogClient.dll”的引用和以下的using:

 

1
using WindowsLive.Writer.BlogClient;

 

在适当的位置添加以下代码:

 

1
2
3
4
5
6
7
8
9
10
11
StringBuilder sb = new StringBuilder();
string[] blogIds = BlogSettings.GetBlogIds();
foreach (string blogId in blogIds)
{
BlogSettings blogSetting = BlogSettings.ForBlogId(blogId);
sb.AppendLine("blogname: " + blogSetting.BlogName);
sb.AppendLine("homepage: " + blogSetting.HomepageUrl);
sb.AppendLine("username: " + blogSetting.Credentials.Username);
sb.AppendLine("password: " + blogSetting.Credentials.Password);
sb.AppendLine("===============================================");
}

 

执行后查看sb.ToString(),你会看到你添加到Windows Live Writer里的所有博客信息,包括博客名称、主页地址、用户名和密码,可怕之处就在于密码是明文的。

如果插件的作者心怀不轨,他完全可以利用这些内容来控制你的博客。所以在使用第三方插件之前,最好能够确定该插件是值得信赖的。

另外,开源的插件也是个不错的选择,你可以检查插件的代码中是否包含泄露隐私的内容,并自行编译使用。

我开发的SlugHelperExifInfo两个插件都是开源项目,欢迎使用。

学习编写Windows Live Writer插件的更多相关文章

  1. windows live writer插件说明文档(附录网盘地址)

    百度云地址:http://pan.baidu.com/s/1hqnjzjY 1.Screen Capture tool 用于直接在WLWriter中进行截图的一个插件,要配合SnagIt 这个软件使用 ...

  2. 编写自己的Windows Live Writer插件

    起因 自从小猪使用Windows Live Writer(wlw)来写博客之后就很少打开网站的后台编辑器了,这真是个写博客的好东西啊,但是任何东西都是不完美的.索契冬奥会开幕式都会把五环弄成四环呢!对 ...

  3. 如何安装Windows Live Writer插件

    Windows Live Writer 是一个强大的离线博客编辑工具,通过它可以离线编辑内容丰富的博文.它不但支持微软的live space,还支持诸如Wordpress 这样的开源博客系统. Win ...

  4. 一次查找Windows Live Writer的VSPaste插件丢失RTF格式信息的经历

    背景 我在博客园上写博客是使用Windows Live Writer,代码高亮插件是使用Paste from Visual Studio(下文简称VSPaste). Windows Live Writ ...

  5. Windows Live Writer介绍及相关问题解决

    今天本来想说更新一篇我的文章,更新的过程中添加了很多的内容,里面的图片太多了,导致我浏览器占用的内存不断增大,浏览器变得很卡,最后过了好久我终于更新完文章打算保存的时候居然卡住,然后所有我更新的文字和 ...

  6. Windows Live Writer代码插件整理

    以下code插件命名按照 Windows Live Writer 中显示的插件名 1.Source code plug-in(cnblogs官方推荐) 界面: 效果: /** * Returns th ...

  7. Windows Live Writer离线编写博客

    WLW最新版本为2012,官网下载 Windows Live Writer配置步骤 使用Windows Live Writer 2012和Office Word 2013 发布文章到博客园全面总结 L ...

  8. Windows Live Writer编写Octopress

    Windows live Writer是一个可以用来离线编写,并发布博客的工具. Octopress是一个静态博客生成系统.使用群体多是geek,主要有显示代码清晰,git同步,并且不用购买空间的特点 ...

  9. Windows Live Writer的Markdown插件MarkdownInLiveWriter支持语法高亮了

    我前几天开发的Windows Live Writer的Markdown的插件MarkdownInLiveWriter支持语法高亮了.参见下图: 基本上就是把我的另一个插件CodeInLiveWrite ...

随机推荐

  1. Android Tab -- 使用ViewPager、Fragment、FragmentPagerAdapter来实现

    原文地址:http://blog.csdn.net/crazy1235/article/details/42678877 效果:滑动切换:点击标签切换. 代码:https://github.com/l ...

  2. ssh -v root@xxxxx 显示登录的细节

    [root@ok .ssh]# ssh -v root@10.100.2.84 OpenSSH_5.3p1, OpenSSL Feb debug1: Reading configuration dat ...

  3. SessionState详解 session有效期时间:默认20分

    为当前应用程序配置会话状态设置. configuration 元素(常规设置架构)   system.web 元素(ASP.NET 设置架构)     sessionState 元素(ASP.NET ...

  4. scrollTop和scrollLeft的兼容解决万全方法

    1.各浏览器下 scrollTop的差异 IE6/7/8: 对于没有doctype声明的页面里可以使用  document.body.scrollTop 来获取 scrollTop高度 : 对于有do ...

  5. POJ3208 Apocalypse Someday(二分 数位DP)

    数位DP加二分 //数位dp,dfs记忆化搜索 #include<iostream> #include<cstdio> #include<cstring> usin ...

  6. js注入

    1.JavaScript注入就是在浏览器地址栏中输入一段js代码,用来改变页面js变量.页面标签的内容. 使用Javascript注入,用户不需要关闭或保存网页就可以改变其内容,这是在浏览器的地址栏上 ...

  7. Linggle: 英语写作学习搜索引擎

    Linggle 搜索引擎是一个可用于英语写作的语法.句子工具,可帮助学习者分析更准确的英文写作建议,能够根据词性来推测短句和句子,可精准的分享出完整英文句子如何撰写. Linggle 是台湾学术团队研 ...

  8. 趣味算法:字符串反转的N种方法(转)

    老赵在反对北大青鸟的随笔中提到了数组反转.这的确是一道非常基础的算法题,然而也是一道很不平常的算法题(也许所有的算法深究下去都会很不平常).因为我写着写着,就写出来8种方法……现在我们以字符串的反转为 ...

  9. 在Salesforce中用Data Loader去批量处理数据

    Data Loader download file: Setup --> Administration Setup --> Data Loader --> Download the ...

  10. Intel CPU MMX SSE SSE2/3/4指令集手册下载URL

    在线查看的网址: https://software.intel.com/sites/landingpage/IntrinsicsGuide/ Intel® 64 and IA-32 Architect ...