<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-wintysのブログ</title><link>http://www.blogjava.net/wintys/</link><description /><language>zh-cn</language><lastBuildDate>Wed, 15 Apr 2026 20:38:45 GMT</lastBuildDate><pubDate>Wed, 15 Apr 2026 20:38:45 GMT</pubDate><ttl>60</ttl><item><title>CentOS6.3(Linux)硬盘安装步骤</title><link>http://www.blogjava.net/wintys/archive/2013/01/22/linux_centos6_install_in_hard_disk.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Tue, 22 Jan 2013 07:20:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2013/01/22/linux_centos6_install_in_hard_disk.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/394562.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2013/01/22/linux_centos6_install_in_hard_disk.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/394562.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/394562.html</trackback:ping><description><![CDATA[<div>CentOS6.3(Linux)硬盘安装步骤：<br />
<br />
【作者】：Wintys (wintys@gmail.com)<br />
【时间】：2013-01-20<br />
【参考】：centos6.3三种安装方法（U盘，硬盘，光盘） ： http://www.springzoo.com/linux-basic/402.html （从原文修改而来。）<br />
<br />
1、腾出一个或者重新划分一个E盘，大小定义为5G就可以了，注意一定要小于32G。用FAT32格式化这个盘。<br />
注意：这个分区是CentOS硬盘安装源ISO文件所在的分区，就相当于U盘/光盘安装时的U盘/光盘。最终的CentOS系统并不能安装在这个分区中，需要新建一个FAT32分区用于安装CentOS。另外，Linux还需要一个2G左右的swap分区。所以一共要准备3个分区，大小分别为：swap分区(2G)、Linux系统分区(10G+)、安装源分区(5G)。最终的系统是安装在"Linux系统分区"的。Linux也不能识别NTFS分区，所以相关的分区都要格式化成FAT32。<br />
<br />
2、下载DVD镜像文件CentOS-6.3-i386-bin-DVD1.iso，放入E盘，把里面的ioslinux文件夹中的vmlinuz和initrd.img文件，以及images文件夹提取出来，解压到和CentOS镜像文件相同的目录。解压完后E盘应该有四个文件：CentOS-*.iso、vmlinuz、initrd.img、images。<br />
<br />
3、打开EasyBCD，Add New Entry &#8211;&gt; NeoGrub &#8212; &gt; Install &#8211;&gt; Configure， 这时会弹出一个txt文件，在其中输入：<br />
<div style="border-bottom: #428ede 1px solid; text-align: left; border-left: #428ede 1px solid; padding-bottom: 10px; overflow-x: auto; margin: 10px; padding-left: 10px; padding-right: 10px; word-wrap: break-word; white-space: normal; background: #ddedfb; font-size: 20px; word-break: break-all; border-top: #428ede 1px solid; border-right: #428ede 1px solid; padding-top: 10px;font-family: verdana,Arial,helvetica,sans-seriff; ">
title install centos6.3<br />
<br />
kernel (hd0,4)/vmlinuz<br />
<br />
initrd (hd0,4)/initrd.img</div>
<br />
注：因为我装windows7的时候系统自带分了一个100M的启动分区，代号为hd0，那么C盘代号就为(hd0,1)了，以此类推，我的Win 7 分成了C盘系统盘和D盘，那么E盘为逻辑分区第一个分区，那么就是(hd0,4)了。<br />
注意：选择安装CentOS过程中，可能会出现"Can not mount selected partition"等错误信息，那么可能是(hd0,4)需要修改，比如修改为(hd0,5)等，可逐一尝试。<br />
<br />
5、关闭，重启后选择安装CentOS6.3，选择CentOS-*.iso文件所在的目录。<br />
注意：<br />
a.我的电脑是华硕的，选择安装CentOS时，进入安装状态，输出一堆命令行信息，最终会卡在"registered taskstats version1"处。解决方法：进入BIOS-&gt;security-&gt;I/O interface security，将其中的选项new card interface改为locked。<br />
<br />
<br />
附：Win7中引导Linux<br />
1、正常安装Win7到C盘，并激活。<br />
2、正常安装Linux到其它分区，最后要求写入GRUB时，选择Linux的挂载点为/的分区。这一步很重要，因为GRUB写入Linux所在分区不会将MBR的GRUB覆盖。<br />
3、这时Win7可以正常启动，但是没有选项来选择进入Linux。<br />
4、下载EasyBCD 2.2，在EasyBCD中，&#8220;添加新条目&#8221;里，选择Linux/BSD选项卡，类型选择Grub(Legacy)，名称任意，驱动器选Linux所在分区。这里选择的分区要和刚才安装Linux时GRUB安装位置一致。最后选择&#8220;添加条目&#8221;保存设置。点击&#8220;查看设置&#8221;就可以看到两个选项，一个是Win7，一个是刚建的Linux。<br />
5、重启，完成。<br />
6、重装Win7后，可以再次使用EasyBCD来完成修复Linux的GURB。重装Linux后，还是将GRUB安装到Linux分区，Win7无需改变即可。<br />
</div><img src ="http://www.blogjava.net/wintys/aggbug/394562.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2013-01-22 15:20 <a href="http://www.blogjava.net/wintys/archive/2013/01/22/linux_centos6_install_in_hard_disk.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原]命令行运行class文件出现NoClassDefFoundError</title><link>http://www.blogjava.net/wintys/archive/2012/02/14/java_noclassdeffounderror_httpentity.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Tue, 14 Feb 2012 08:03:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2012/02/14/java_noclassdeffounderror_httpentity.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/369952.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2012/02/14/java_noclassdeffounderror_httpentity.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/369952.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/369952.html</trackback:ping><description><![CDATA[<div>[标题]:[原]命令行运行class文件出现NoClassDefFoundError<br />
[时间]:2012-02-14<br />
[摘要]:Java命令运行程序时出现java.lang.NoClassDefFoundError: org/apache/http/HttpEntity。<br />
[关键字]: Java、package、Jar、运行、error、class-path、库、HttpClient<br />
[文章编号]:暂无<br />
[环境]: JDK 7.0<br />
[作者]: Wintys&nbsp; (wintys@gmail.com)<br />
<br />
[错误]:<br />
&nbsp;&nbsp;&nbsp; 运行命令行：<br />
<div class="mycode">
&nbsp;&nbsp;&nbsp; java&nbsp; NetLogin -cp .;commons-codec-1.4.jar;commons-logging-1.1.1.jar;httpclient-4.1.3.jar;httpclient-cache-4.1.3.jar;httpcore-4.1.4.jar;httpmime-4.1.3.jar<br />
</div>
&nbsp;&nbsp;&nbsp; 出现如下错误：<br />
<div class="mycode">
&nbsp;&nbsp;&nbsp; Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/HttpEntity<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.lang.Class.getDeclaredMethods0(Native Method)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.lang.Class.privateGetDeclaredMethods(Unknown Source)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.lang.Class.getMethod0(Unknown Source)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.lang.Class.getMethod(Unknown Source)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.launcher.LauncherHelper.getMainMethod(Unknown Source)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)<br />
Caused by: java.lang.ClassNotFoundException: org.apache.http.HttpEntity<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.net.URLClassLoader$1.run(Unknown Source)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.net.URLClassLoader$1.run(Unknown Source)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.security.AccessController.doPrivileged(Native Method)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.net.URLClassLoader.findClass(Unknown Source)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.lang.ClassLoader.loadClass(Unknown Source)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.lang.ClassLoader.loadClass(Unknown Source)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ... 6 more<br />
</div>
<br />
[原因&amp;解决]:<br />
&nbsp;&nbsp;&nbsp; 被运行的程序编译正常通过，运行却出现了NoClassDefFoundError，不知道是哪里出错了。找了半天，发现编译程序的命令行有问题，-cp参数应放到类名前面来：<br />
<div class="mycode">
&nbsp;&nbsp;&nbsp; java&nbsp; <span style="color: red;">-cp .;commons-codec-1.4.jar;commons-logging-1.1.1.jar;httpclient-4.1.3.jar;httpclient-cache-4.1.3.jar;httpcore-4.1.4.jar;httpmime-4.1.3.jar </span>NetLogin<br />
</div>
</div>
<br /><div id="mycopyright" style="border-width: 1px 0pt 0pt; border-top: 1px solid red; padding: 5px; margin-top: 5px;">  <span style="color: #ff0000;">原创作品，转载请务必保持原文完整性并注明出处。<br />  作者:wintys (wintys@gmail.com)<br />  博客:http://www.blogjava.net/wintys</span>  </div><img src ="http://www.blogjava.net/wintys/aggbug/369952.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2012-02-14 16:03 <a href="http://www.blogjava.net/wintys/archive/2012/02/14/java_noclassdeffounderror_httpentity.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原]手动打包JAR为可执行文件</title><link>http://www.blogjava.net/wintys/archive/2012/02/13/jar_package.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Mon, 13 Feb 2012 12:35:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2012/02/13/jar_package.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/369892.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2012/02/13/jar_package.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/369892.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/369892.html</trackback:ping><description><![CDATA[<div>[标题]:[原]手动打包JAR为可执行文件<br />
[时间]:2012-02-13<br />
[摘要]:打包JAR的步骤、JAR包内部的资源访问以及MANIFEST.MF文件格式注意事项。<br />
[关键字]: Java、package、打包、Jar、manifest、可执行文件<br />
[文章编号]:暂无<br />
[环境]: JDK 7.0<br />
[作者]: wintys&nbsp; (wintys@gmail.com)<br />
<br />
[正文]: <br />
0、背景<br />
&nbsp;&nbsp;&nbsp; 尽管IDE自动打包JAR的功能已经很强大，但是手动打包JAR的步骤和注意事项也得心知肚明。对于简单的示例程序，使用手动打包也很方便。<br />
<br />
1、打包JAR<br />
&nbsp;&nbsp; &nbsp;1.1 建立清单文件<br />
&nbsp;&nbsp; &nbsp;以下内容为文件内容&nbsp; &nbsp;<br />
&nbsp;&nbsp; &nbsp;清单文件MANIFEST.MF(在D:\test\class目录下):<br />
&nbsp;&nbsp; &nbsp;================== <br />
<div class="mycode">
&nbsp;&nbsp; &nbsp;Manifest-Version: 1.0&nbsp; &nbsp;<br />
&nbsp;&nbsp; &nbsp;Main-Class: a（主类的路径，此选项可选,如果希望在windows下双击就执行，必须写)&nbsp; &nbsp;<br />
&nbsp;&nbsp; &nbsp;Created-By: 1.7.0_02 (Oracle Corporation)(随便写，这个是创建人名字)&nbsp; &nbsp;<br />
</div>
&nbsp;&nbsp; &nbsp;==================&nbsp; &nbsp;<br />
<br />
&nbsp;&nbsp; &nbsp;1.2 打包&nbsp; &nbsp;<br />
&nbsp;&nbsp; &nbsp;在D:\test\class\目录下执行&nbsp; &nbsp;<br />
<div class="mycode">
&nbsp;&nbsp; &nbsp;jar cvfm classes.jar MANIFEST.MF *.*&nbsp; &nbsp;<br />
</div>
<br />
&nbsp;&nbsp; &nbsp;以上命令将class下所有文件打包到classes.jar,生成在class目录下。&nbsp; &nbsp;<br />
<br />
&nbsp;&nbsp; &nbsp;1.3 执行&nbsp; &nbsp;<br />
&nbsp;&nbsp; &nbsp;输入java -jar classes.jar执行&nbsp; 或&nbsp;&nbsp; 双击classes.jar即可。 <br />
<br />
&nbsp;&nbsp; &nbsp;1.4 另一种方案&nbsp; &nbsp;<br />
&nbsp;&nbsp; &nbsp;如果希望使用非JAR工具建立JAR文件, 建议使用WinRAR。首先还是需要建立一个清单文件(名字必须为MANIFEST.MF), 向此文件中写入同使用JAR 工具时一样的内容, 接着需要建立一个META-INF子目录, 然后将 MANIFEST.MF放入此目录, 接着就可以保持目录结构将所有这些内容使用 WinRAR 压缩为 ZIP 格式的文件，文件名取为 xxx.jar 即可。<br />
<br />
2、需要注意的相关问题<br />
2.1 JAR中的资源访问<br />
&nbsp;&nbsp;&nbsp; 程序的资源文件(如*.gif, *.jpg, *.jpeg, *.properties 等等)不能使用物理路径, 只能使用相对于当前类文件的相对资源路径, 只有这样才能保证打包以后程序才能找到这些资源文件. 那么, 这些文件在打开的时候都要使用下列语句:<br />
&nbsp;&nbsp;&nbsp; URL url = getClass().getResource(String name);<br />
&nbsp;&nbsp;&nbsp; 或者<br />
&nbsp;&nbsp;&nbsp; InputStream in = getClass().getResourceAsStream(String name);<br />
<br />
&nbsp;&nbsp; &nbsp;例如:<br />
<div class="mycode">
&nbsp;&nbsp; &nbsp;URL url = getClass().getResource("loading.gif");<br />
&nbsp;&nbsp; &nbsp;ImageIcon icon = new ImageIcon(url);<br />
</div>
&nbsp;&nbsp;&nbsp; 其它的资源文件的使用也与此相似. 不过属性文件(*.properties)的使用, Java 自动会加载 JAR 文件中的属性文件, 例如:<br />
ResourceBundle.getBundle("com.abc.test");<br />
那么, 这个文件只要放在 JAR 文件目录结构下的 com/abc/test.properties, Java 就能自动找到这个文件.<br />
<br />
2.2 清单文件的格式<br />
MANIFEST.MF内容示例（添加JAR库文件，在Class-Path指明路径）:<br />
<div class="mycode">
&nbsp;&nbsp; &nbsp;Manifest-Version: 1.0&nbsp; &nbsp;<br />
&nbsp;&nbsp; &nbsp;Class-Path: lib/commons-codec-1.4.jar lib/commons-logging-1.1.1.jar li<br />
&nbsp;&nbsp; &nbsp; b/httpclient-4.1.3.jar lib/httpclient-cache-4.1.3.jar lib/httpcore-4.<br />
&nbsp;&nbsp; &nbsp; 1.4.jar lib/httpmime-4.1.3.jar&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp; &nbsp;Created-By: 1.7.0_02 (Oracle Corporation)<br />
&nbsp;&nbsp; &nbsp;Main-Class: MyLogin<br />
</div>
<br />
&nbsp;&nbsp; &nbsp;a.清单文件文件条目的冒号后有一个空格。<br />
&nbsp;&nbsp; &nbsp;b.清单文件总是以Manifest-Version属性开头<br />
&nbsp;&nbsp; &nbsp;c.每行最长72个字符，如果超过，采用续行。（手动写MANIFEST.MF时不受此限，用JAR.exe生成JAR包时会自动断行。）<br />
&nbsp;&nbsp; &nbsp;d.确认每行都以回车结束，否则改行将会被忽略。<br />
&nbsp;&nbsp; &nbsp;e.如果Class-Path 中的存在路径，使用"/"分隔目录，与平台无关。<br />
&nbsp;&nbsp; &nbsp;f.Class-Path中的jar包之间用空格分隔，而非分号。<br />
&nbsp;&nbsp; &nbsp;g.如果库不打包入JAR，写成：Class-Path: ./lib/jacob.jar ./lib/jdom.jar ./lib/log4j.jar<br />
<br />
[参考资料]: <br />
&nbsp;&nbsp; &nbsp;[1]*《命令行用JAR打包CALSS文件,很简单》: http://www.diybl.com/course/3_program/java/javajs/20090407/164482.html<br />
&nbsp;&nbsp; &nbsp;[2] 《打包程序为 JAR 可执行文件》 : http://www.moon-soft.com/doc/25438.htm<br />
&nbsp;&nbsp; &nbsp;[3] 《打jar把第三方的jar也打进去》 : http://www.blogjava.net/soddabao/archive/2007/01/08/92455.html<br />
&nbsp;&nbsp; &nbsp;[4] 《Jar命令 Manifest.mf的用法》 : http://ganqing.iteye.com/blog/1138341<br />
&nbsp;&nbsp; &nbsp;[5] 《关于 jar包中MANIFEST.MF 写法 》 : http://blog.csdn.net/happyhell/article/details/6639792<br />
&nbsp;&nbsp; &nbsp;[6]*《JAR File Specification》(Oracle) : http://docs.oracle.com/javase/1.3/docs/guide/jar/jar.html#The%20META-INF%20directory<br /><div id="mycopyright" style="border-width: 1px 0pt 0pt; border-top: 1px solid red; padding: 5px; margin-top: 5px;">  <span style="color: #ff0000;">原创作品，转载请务必保持原文完整性并注明出处。<br />  作者:wintys (wintys@gmail.com)<br />  博客:http://www.blogjava.net/wintys</span>  </div></div><img src ="http://www.blogjava.net/wintys/aggbug/369892.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2012-02-13 20:35 <a href="http://www.blogjava.net/wintys/archive/2012/02/13/jar_package.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Winty注册表系统设置-</title><link>http://www.blogjava.net/wintys/archive/2010/06/15/misc_wintys_register_settings.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Tue, 15 Jun 2010 13:20:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2010/06/15/misc_wintys_register_settings.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/323639.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2010/06/15/misc_wintys_register_settings.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/323639.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/323639.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/wintys/archive/2010/06/15/misc_wintys_register_settings.html'>阅读全文</a><img src ="http://www.blogjava.net/wintys/aggbug/323639.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2010-06-15 21:20 <a href="http://www.blogjava.net/wintys/archive/2010/06/15/misc_wintys_register_settings.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>常用命令</title><link>http://www.blogjava.net/wintys/archive/2010/04/12/winty_command.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Mon, 12 Apr 2010 04:28:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2010/04/12/winty_command.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/318043.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2010/04/12/winty_command.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/318043.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/318043.html</trackback:ping><description><![CDATA[<font size="3" color="#000000"><strong></strong></font>
<div><font size="3" color="#000000"><strong>■验证MX记录的方法<br />
</strong></font><font size="3" color="#000000">输入&#8220;nslookup -qt=mx 你的域名&#8221;（比如gyqqmail.com），然后按回车键；<br />
<br />
<strong>■使用Firefox无须解压缩直接浏览jar/zip文件</strong><br />
jar:file:///D:/filename.zip!/<br />
<br />
<strong>■查看端口占用情况<br />
</strong>C:\&gt;<font color="#0000ff"><strong>netstat -aon|findstr "9050"</strong></font><br />
TCP&nbsp;&nbsp;&nbsp; 127.0.0.1:9050&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0:0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LISTENING&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2016<br />
看到了吗，端口被进程号为2016的进程占用，继续执行下面命令：<br />
C:\&gt;<font color="#0000ff"><strong>tasklist|findstr "2016"</strong></font><br />
tor.exe&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2016 Console&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 16,064 K<br />
很清楚吧，tor占用了你的端口。</font></div>
<img src ="http://www.blogjava.net/wintys/aggbug/318043.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2010-04-12 12:28 <a href="http://www.blogjava.net/wintys/archive/2010/04/12/winty_command.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>常用软件</title><link>http://www.blogjava.net/wintys/archive/2010/04/12/winty_software.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Mon, 12 Apr 2010 04:19:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2010/04/12/winty_software.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/318041.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2010/04/12/winty_software.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/318041.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/318041.html</trackback:ping><description><![CDATA[■<strong>常用软件</strong>：<br />
SkyDrive SDExplorer、Navicat、XMLSpy、StarUML、ACDSee、UltraISO、Editplus、PDFCreator、CodeBlocks、WizExplorer<br />
<br />
■<strong>实用工具:</strong><br />
Recuva、Everything、Q-Dir、Picpick、EyeFoo、<br />
<br />
■<strong>常用Firefox插件</strong>:<br />
ViewSourceWith、Fiddler、Firebug、GMarks、Greasemonkey、Stylish、HttpFox、Menu Editor、Personal Menu、SrapBook、Tab Mix Plus、wmlbrowser、WebDeveloper、Fox Splitter<br />
<br />
■<strong>Windows Live Writer 插件</strong>：<br />
Attach File、Clipboard、Text Template、<a href="http://gallery.live.com/liveItemDetail.aspx?li=2cad17b3-3572-4b63-a48c-6a635a5753c7">WintyCodeArea</a> 、<br />
<br />
■其它软件：<br />
Adobe Audition、Visual Sniffer<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/wintys/aggbug/318041.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2010-04-12 12:19 <a href="http://www.blogjava.net/wintys/archive/2010/04/12/winty_software.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>常用设置</title><link>http://www.blogjava.net/wintys/archive/2010/04/12/winty_settings.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Mon, 12 Apr 2010 04:15:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2010/04/12/winty_settings.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/318040.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2010/04/12/winty_settings.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/318040.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/318040.html</trackback:ping><description><![CDATA[<div id="blog_text" class="cnt">
■<strong>Google.com 中文</strong>: http://www.google.com/webhp?hl=zh-cn<br />
■<strong>51Job RSS订阅</strong>: http://my.51job.com/rss/Rss001.php<br />
■<strong>Google Public DNS</strong>: 8.8.8.8   and&nbsp;8.8.4.4<br />
■<strong>Google Wap</strong>: http://www.google.com/m/search/?site=mobile<br />
■<strong>第一页搜索</strong>：http://www.peizhi1.com/<br />
■<strong>FTP快捷方式</strong>:建了快捷方式，在目标里面输入:"<span style="color: #0010ff;">C:\WINDOWS\explorer.exe ftp://账号:密码@服务器地址/</span>"<br />
</div>
<img src ="http://www.blogjava.net/wintys/aggbug/318040.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2010-04-12 12:15 <a href="http://www.blogjava.net/wintys/archive/2010/04/12/winty_settings.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Greasemonkey猴子脚本</title><link>http://www.blogjava.net/wintys/archive/2010/03/23/css_greasemonkey1.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Tue, 23 Mar 2010 06:18:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2010/03/23/css_greasemonkey1.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/316302.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2010/03/23/css_greasemonkey1.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/316302.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/316302.html</trackback:ping><description><![CDATA[<div class="mycode">
// ==UserScript==<br />
// @name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; china_pub<br />
// @namespace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wintys<br />
// @include&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.china-pub.com/*<br />
// ==/UserScript==<br />
<br />
/*<br />
功能:使china-pub目录页可复制<br />
时间:2009-05<br />
Author: Winty<br />
E-mail: wintys@gmail.com<br />
*/<br />
<br />
<br />
/*使可以复制*/<br />
var body = document.body;<br />
body.setAttribute("onselect" , "");<br />
body.setAttribute("oncopy" , "");<br />
body.setAttribute("oncontextmenu", "");<br />
body.setAttribute("onmouseup", "");<br />
body.setAttribute("onmousemove", "");<br />
<br />
/*去除防复制的无用字符*/<br />
var white = document.getElementsByTagName("font");<br />
for(var item = 0 ; item &lt; white.length; item++){<br />
&nbsp;&nbsp; &nbsp;white[item].removeChild(white[item].childNodes[0]);<br />
}<br />
<br />
<br />
<br />
</div>
<br />
<br />
<div class="mycode">
// ==UserScript==<br />
// @name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; qqshuqian<br />
// @namespace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wintys<br />
// @description&nbsp;&nbsp;&nbsp;&nbsp; delete all bookmarks in qqshuqian<br />
// @include&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://shuqian.qq.com/home/<br />
// ==/UserScript==<br />
<br />
//批量删除QQ书签<br />
<br />
//只需要修改begin 和 end值即可<br />
<br />
var frmDelete = document.getElementById("frmDelete");<br />
var linkID = frmDelete.elements[0];<br />
<br />
//计算linkID值<br />
//linkID形如:"1626996,1626997,1626998,1626999"<br />
//latest linkID-2009-8-3:1631912<br />
var begin = 1632307;//1625972;<br />
var end =&nbsp;&nbsp;&nbsp; 1633756;//1627177;<br />
var linkIDvalue = "";<br />
while(begin &lt; end){<br />
&nbsp;&nbsp;&nbsp; linkIDvalue += begin + ",";<br />
&nbsp;&nbsp;&nbsp; begin++;<br />
}<br />
linkIDvalue += end;<br />
<br />
//提交<br />
linkID.value = linkIDvalue;<br />
frmDelete.submit();<br />
window.alert("finished");<br />
</div>
<img src ="http://www.blogjava.net/wintys/aggbug/316302.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2010-03-23 14:18 <a href="http://www.blogjava.net/wintys/archive/2010/03/23/css_greasemonkey1.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我的Stylish CSS</title><link>http://www.blogjava.net/wintys/archive/2010/03/23/css_stylish1.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Tue, 23 Mar 2010 06:10:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2010/03/23/css_stylish1.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/316301.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2010/03/23/css_stylish1.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/316301.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/316301.html</trackback:ping><description><![CDATA[<div class="mycode">
■去除126邮箱广告的Stylish CSS:<br />
@-moz-document domain("mail.126.com") {<br />
/**去除126邮箱广告**/<br />
/**wintys@gmail.com**/<br />
<br />
/**********************/<br />
/*逍遥3.0版界面去广告*/<br />
/**********************/<br />
#inboxFakeLetterDiv/*收件箱广告*/,<br />
#divWelcomeBody/*登陆页面广告*/,<br />
#RightAD/*邮件头广告*/,<br />
.rm_expand/*邮件尾广告*/{<br />
display:none;<br />
}<br />
<br />
/**********************/<br />
/**极速3.5版界面去广告**/<br />
/*2010-05-01*/<br />
/**********************/<br />
.links .chl a[style] /*首页-顶部广告链接*/,<br />
#liWelcomeTab + li /*首页-今日新闻*/,<br />
#divWelcomePanel .pan-news /*首页-今日新闻-内容*/,<br />
#divWelcomePanel .prt1 .pic&nbsp; /*首页-邮箱推荐-广告图片*/,<br />
#welcomeSwf /*首页-flash广告*/,<br />
.gWel-gg-2 /*首页-推广链接*/,<br />
.part-sec a/*首页-每日英语提示日期*/,<br />
.part-sec .txt-info/*首页-每日英语提示日期*/,<br />
.gRead .g-dxgg/*收件箱-商业推广*/,<br />
.mailinfo .gRead-floatgg/*收件箱-信件头广告*/,<br />
#draftFakeLetterDiv/*草稿箱-有道推广*/,<br />
.gIbx-tablayout .simletter/*自定义文件夹-推广链接*/,<br />
.cnav .tip-popup/*左边导航栏-提示框*/{<br />
&nbsp; display:none !important;<br />
}<br />
#divWelcomePanel .pan-recmd/*首页-邮箱推荐内容*/{<br />
&nbsp; display:block !important;<br />
}<br />
<br />
<br />
}<br />
<br />
<br />
<br />
■去除china-pub目录乱码的Stylish CSS：<br />
<br />
@-moz-document domain("china-pub.com") {<br />
font[color="#ffffff"] , font[color="white"]{<br />
&nbsp; display:none;<br />
}<br />
<br />
}<br />
</div>
<img src ="http://www.blogjava.net/wintys/aggbug/316301.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2010-03-23 14:10 <a href="http://www.blogjava.net/wintys/archive/2010/03/23/css_stylish1.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Winty's Windows Live Writer Styles</title><link>http://www.blogjava.net/wintys/archive/2010/03/22/css_windowslivewritercss.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Mon, 22 Mar 2010 08:15:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2010/03/22/css_windowslivewritercss.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/316185.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2010/03/22/css_windowslivewritercss.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/316185.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/316185.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在插件Text Template中使用&nbsp;&nbsp;<a href='http://www.blogjava.net/wintys/archive/2010/03/22/css_windowslivewritercss.html'>阅读全文</a><img src ="http://www.blogjava.net/wintys/aggbug/316185.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2010-03-22 16:15 <a href="http://www.blogjava.net/wintys/archive/2010/03/22/css_windowslivewritercss.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原]ORACLE实验2007</title><link>http://www.blogjava.net/wintys/archive/2010/03/10/database_oracle_2007.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Wed, 10 Mar 2010 05:46:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2010/03/10/database_oracle_2007.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/315046.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2010/03/10/database_oracle_2007.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/315046.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/315046.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 请查询表DEPT中所有部门的情况&nbsp;&nbsp;<a href='http://www.blogjava.net/wintys/archive/2010/03/10/database_oracle_2007.html'>阅读全文</a><img src ="http://www.blogjava.net/wintys/aggbug/315046.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2010-03-10 13:46 <a href="http://www.blogjava.net/wintys/archive/2010/03/10/database_oracle_2007.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原]手机姓名秀 - NameShow</title><link>http://www.blogjava.net/wintys/archive/2010/01/30/java_javame_nameshow.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Sat, 30 Jan 2010 13:48:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2010/01/30/java_javame_nameshow.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/311343.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2010/01/30/java_javame_nameshow.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/311343.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/311343.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 手机姓名秀 - NameShow : 在手机上展示你的姓名。<br>1、如果你的名字是生僻字，没法组成常见词，别人问起，你得解释半天，最终还是要拿笔写出来别人才明白。<br>2、当你想向别人展示个性签名时，拿出纸质签名就太土了，也不方便。<br>3、当你需要展示名片时，纸质名片没有带，手机总带了吧？NameShow就派上用场了。.<br><br>&nbsp;&nbsp;<a href='http://www.blogjava.net/wintys/archive/2010/01/30/java_javame_nameshow.html'>阅读全文</a><img src ="http://www.blogjava.net/wintys/aggbug/311343.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2010-01-30 21:48 <a href="http://www.blogjava.net/wintys/archive/2010/01/30/java_javame_nameshow.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>全球号召-拯救MySQL请愿</title><link>http://www.blogjava.net/wintys/archive/2010/01/22/news_helpmysql.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Fri, 22 Jan 2010 14:49:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2010/01/22/news_helpmysql.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/310562.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2010/01/22/news_helpmysql.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/310562.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/310562.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 拯救MySQL的中国签名支持者进&nbsp;&nbsp;<a href='http://www.blogjava.net/wintys/archive/2010/01/22/news_helpmysql.html'>阅读全文</a><img src ="http://www.blogjava.net/wintys/aggbug/310562.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2010-01-22 22:49 <a href="http://www.blogjava.net/wintys/archive/2010/01/22/news_helpmysql.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个面试题</title><link>http://www.blogjava.net/wintys/archive/2010/01/18/job_12347152875489.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Mon, 18 Jan 2010 08:44:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2010/01/18/job_12347152875489.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/309968.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2010/01/18/job_12347152875489.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/309968.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/309968.html</trackback:ping><description><![CDATA[大意是：程序使用无线网络传输数据且有实时性要求，但发现有经常性的丢包现象，请问怎么办？<br />
我也不知道答案，大家想想。<br />
<br />
<img src ="http://www.blogjava.net/wintys/aggbug/309968.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2010-01-18 16:44 <a href="http://www.blogjava.net/wintys/archive/2010/01/18/job_12347152875489.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原]观察者模式-Java自定义事件</title><link>http://www.blogjava.net/wintys/archive/2009/10/11/pattern_observer_event.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Sun, 11 Oct 2009 12:32:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2009/10/11/pattern_observer_event.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/297810.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2009/10/11/pattern_observer_event.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/297810.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/297810.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: java.util.EventListener<br>java.util.EventObject<br>javax.swing.event.EventListenerList&nbsp;&nbsp;<a href='http://www.blogjava.net/wintys/archive/2009/10/11/pattern_observer_event.html'>阅读全文</a><img src ="http://www.blogjava.net/wintys/aggbug/297810.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2009-10-11 20:32 <a href="http://www.blogjava.net/wintys/archive/2009/10/11/pattern_observer_event.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原]观察者模式</title><link>http://www.blogjava.net/wintys/archive/2009/10/11/pattern_observer.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Sun, 11 Oct 2009 11:56:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2009/10/11/pattern_observer.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/297806.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2009/10/11/pattern_observer.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/297806.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/297806.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: java.util.Observer<br>java.util.Observable&nbsp;&nbsp;<a href='http://www.blogjava.net/wintys/archive/2009/10/11/pattern_observer.html'>阅读全文</a><img src ="http://www.blogjava.net/wintys/aggbug/297806.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2009-10-11 19:56 <a href="http://www.blogjava.net/wintys/archive/2009/10/11/pattern_observer.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原]简易Windows密码查看器</title><link>http://www.blogjava.net/wintys/archive/2009/10/10/cpp_passwordviewer.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Fri, 09 Oct 2009 16:08:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2009/10/10/cpp_passwordviewer.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/297612.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2009/10/10/cpp_passwordviewer.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/297612.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/297612.html</trackback:ping><description><![CDATA[<p>[标题]:简易Windows密码查看器 <br />
[时间]:2009-10-09 <br />
[摘要]:通过全局钩子获取当前鼠标处的窗口控件句柄，然后直接调用GetWindowText()获取密码文本。 <br />
[关键字]:密码、查看、星号、全局钩子、Hook、WM_COPYDATA、DLL、XP样式 <br />
[环境]:Visual Studio 2008、Visual C++ 6.0 <br />
[作者]:天堂露珠 (wintys@gmail.com) <a href="http://www.blogjava.net/wintys">http://www.blogjava.net/wintys</a> <br />
<br />
[正文]:</p>
<p>&nbsp;&nbsp;&nbsp; 此密码查看器原理:通过全局钩子获取当前鼠标处的窗口控件句柄，然后直接调用GetWindowText()获取密码文本。工程在VC++6.0和VS2008中编译通过。 </p>
<h3>1、查看密码的DLL工程</h3>
<p>&nbsp;&nbsp;&nbsp; 因为查看密码功能要用到全局鼠标Hook，所以要把功能放到一个DLL中。</p>
<p>PasswordViewerMouseHookDLL.h:</p>
<div class="mycode">
<p>#pragma once </p>
<p>#ifdef PSWMOUSEHOOKDLL_API_EXPORTS <br />
#define PSWMOUSEHOOKDLL_API __declspec(dllexport) <br />
#else <br />
#define PSWMOUSEHOOKDLL_API __declspec(dllimport) <br />
#endif </p>
<p>/* <br />
Winty:2009-09-29 <br />
调用SetHook()设置Hook，但无需卸载Hook，DLLMain中有清理。 <br />
*/ <br />
//My Declaration================================ <br />
#define MAXCOUNT 200 //密码最大长度 <br />
#define DWDATA_PSW_NOTIFY 1 //COPYDATASTRUCT的dwData自定义值 </p>
<p>//密码信息结构体，用于发送 <br />
typedef struct tagPswNotify <br />
{ <br />
&nbsp;&nbsp;&nbsp; char psw[MAXCOUNT];//password/text <br />
&nbsp;&nbsp;&nbsp; POINT pt;//鼠标位置 <br />
&nbsp;&nbsp;&nbsp; HWND hWnd;//控件句柄 <br />
} PSWNOTIFY , *PPSWNOTIFY; </p>
<p>/*extern表示这里只是变量声明，变量定义在cpp文件中*/ <br />
extern PSWMOUSEHOOKDLL_API BOOL g_bReadySend;//WM_COPYDATA互斥的标志，因为WM_COPYDATA不能重叠 <br />
extern PSWMOUSEHOOKDLL_API HWND g_hWnd; //接收消息的窗体句柄 <br />
extern PSWMOUSEHOOKDLL_API HHOOK g_hhk; //钩子句柄 <br />
extern PSWMOUSEHOOKDLL_API BOOL g_bView;//是否需要查看密码 </p>
<p>//鼠标钩子过程 <br />
PSWMOUSEHOOKDLL_API LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam ); <br />
//设置钩子(可在窗口的OnInitDialog()中调用) <br />
PSWMOUSEHOOKDLL_API void SetHook(HWND hWnd);</p>
</div>
<p>PasswordViewerMouseHookDLL.cpp:</p>
<div class="mycode">
<p>#include "stdafx.h" </p>
<p>#define PSWMOUSEHOOKDLL_API_EXPORTS <br />
#include "PasswordViewerMouseHookDLL.h" </p>
<p>#include &lt;stdio.h&gt;</p>
<p>//进程间共享数据,还要在链接器选项里添加:"/SECTION:.MyShare,RWS" <br />
//或: #pragma&nbsp;&nbsp; comment(linker,"/SECTION:.MyShare,RWS")&nbsp; <br />
//查看结果:dumpbin /headers *.DLL <br />
#pragma data_seg(".MyShare") <br />
HHOOK g_hhk = NULL;/*Hook句柄*/ <br />
HWND&nbsp; g_hWnd = NULL;/*接收消息的窗口句柄*/ <br />
BOOL&nbsp; g_bReadySend = TRUE;/*用于同步COPYDATA消息*/ <br />
#pragma data_seg() <br />
#pragma&nbsp;&nbsp; comment(linker,"/SECTION:.MyShare,RWS") </p>
<p>BOOL APIENTRY DllMain( HANDLE hModule, <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DWORD&nbsp; ul_reason_for_call, <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LPVOID lpReserved <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ) <br />
{ <br />
&nbsp;&nbsp;&nbsp; switch (ul_reason_for_call) <br />
&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case DLL_PROCESS_ATTACH: <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case DLL_PROCESS_DETACH: <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(g_hhk != NULL) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UnhookWindowsHookEx(g_hhk); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g_hhk = NULL; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g_hWnd = NULL; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case DLL_THREAD_ATTACH: <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case DLL_THREAD_DETACH: <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break; </p>
<p>&nbsp;&nbsp;&nbsp; } <br />
&nbsp;&nbsp;&nbsp; return TRUE; <br />
} </p>
<p>LRESULT CALLBACK MouseProc( <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int nCode,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // hook code <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WPARAM wParam,&nbsp; // message identifier <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LPARAM lParam&nbsp;&nbsp; // mouse coordinates <br />
) <br />
{ <br />
&nbsp;&nbsp;&nbsp; if(nCode == HC_ACTION) <br />
&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PMOUSEHOOKSTRUCT pMouseHookStruct <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = reinterpret_cast&lt;PMOUSEHOOKSTRUCT&gt;(lParam); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LONG x = pMouseHookStruct-&gt;pt.x; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LONG y = pMouseHookStruct-&gt;pt.y; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HWND hWnd = pMouseHookStruct-&gt;hwnd; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HWND hWndFromPoint = <strong>::WindowFromPoint</strong>(pMouseHookStruct-&gt;pt); </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(hWndFromPoint != g_hWnd&nbsp; &amp;&amp;&nbsp; g_bReadySend)//不能获取显示密码的文本框的内容 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g_bReadySend = FALSE; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char psw[MAXCOUNT]; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ::GetWindowText(hWndFromPoint , psw , MAXCOUNT); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PSWNOTIFY pswNotify; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strcpy(pswNotify.psw , psw); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pswNotify.pt.x = x; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pswNotify.pt.y = y; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pswNotify.hWnd = hWndFromPoint; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; COPYDATASTRUCT cd; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cd.lpData = &amp;pswNotify; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cd.cbData = sizeof(PSWNOTIFY); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cd.dwData = DWDATA_PSW_NOTIFY; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ::SendMessage(g_hWnd, <font color="#ff0000">WM_COPYDATA</font>, NULL , (LPARAM)(LPVOID)&amp;cd); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />
&nbsp;&nbsp;&nbsp; } </p>
<p>&nbsp;&nbsp;&nbsp; return CallNextHookEx(g_hhk , nCode , wParam ,lParam); <br />
} </p>
<p>void SetHook(HWND hWnd) <br />
{ <br />
&nbsp;&nbsp;&nbsp; g_hWnd = hWnd; <br />
&nbsp;&nbsp;&nbsp; g_hhk = SetWindowsHookEx(WH_MOUSE , <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MouseProc , <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>GetModuleHandle("PasswordViewerMouseHookDLL")</strong> , <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NULL); <br />
}</p>
</div>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; <font color="#ff0000">DLL要想将密码消息发送到主窗口显示，要用WM_COPYDATA消息(或其它进程间通信方式)，否则会发送失败。</font>如果用WM_SETTEXT，因为全局Hook发送的消息所带的字符串指针lParam可能不能被主窗口访问，从而造成访问异常。</p>
<p>&nbsp;&nbsp;&nbsp; g_bReadySend的设置是因为WM_COPYDATA消息不能连续发送，必须等前一条消息取走之后才能发送下一条消息。</p>
<h3>2、显示密码的工程PasswordViewer</h3>
<p>&nbsp;&nbsp;&nbsp; 创建一个对话框工程PasswordViewer。</p>
<p>使用DLL步骤:</p>
<ul>
    <li>把PasswordViewerMouseHookDLL工程生成的PasswordViewerMouseHookDLL.dll、PasswordViewerMouseHookDLL.lib，以及PasswordViewerMouseHookDLL.h复制到PasswordViewer工程。 <br />
    [参考资料]: <br />
    [附件]:  </li>
    <li>在PasswordViewerDlg.cpp 中加入#include "PasswordViewerMouseHookDLL.h"和#pragma comment(lib , "PasswordViewerMouseHookDLL.lib") </li>
</ul>
<p>&nbsp;&nbsp;&nbsp; 如果要设置最后生成XP样式的窗口，得在PasswordViewerDlg.cpp 中加入</p>
<div class="mycode">
<p>#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")</p>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; PasswordViewerDlg.cpp主要代码为响应WM_COPYDATA消息，把消息内容显示到窗口上:</p>
<div class="mycode">
<p>BOOL CPasswordViewerDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) <br />
{ <br />
&nbsp;&nbsp;&nbsp; if(pCopyDataStruct-&gt;dwData == DWDATA_PSW_NOTIFY &amp;&amp; !g_bReadySend) <br />
&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PPSWNOTIFY pPswNotify = (PPSWNOTIFY)pCopyDataStruct-&gt;lpData; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CString strMousePosition; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strMousePosition.Format("(%3d,%3d)" , pPswNotify-&gt;pt.x ,pPswNotify-&gt;pt.y); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_strMousePosition = strMousePosition; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CString strPsw; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strPsw.Format("%s" , pPswNotify-&gt;psw); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_strPsw = strPsw; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CString strHWnd; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strHWnd.Format("%p" , pPswNotify-&gt;hWnd); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_strHWnd = strHWnd; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UpdateData(FALSE); </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g_bReadySend = TRUE; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return TRUE; <br />
&nbsp;&nbsp;&nbsp; } <br />
&nbsp;&nbsp;&nbsp; else <br />
&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CString str(_T("未发现窗口")); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_strPsw = str; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UpdateData(FALSE); </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return CDialog::OnCopyData(pWnd, pCopyDataStruct); <br />
&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br />
}</p>
</div>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; 别忘了要在CPasswordViewerDlg::OnInitDialog()中调用DLL的SetHook(m_hWnd)，初始化全局钩子。</p>
<h3>3、运行</h3>
<p>&nbsp;&nbsp;&nbsp; 运行结果如图:</p>
<p><a href="http://www.blogjava.net/images/blogjava_net/wintys/WindowsLiveWriter/1_11D15/cpp_PasswordViewer_4.jpg"><img style="border-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="cpp_PasswordViewer" alt="cpp_PasswordViewer" src="http://www.blogjava.net/images/blogjava_net/wintys/WindowsLiveWriter/1_11D15/cpp_PasswordViewer_thumb_1.jpg" border="0" height="350" width="470" /></a> </p>
<p align="center">【cpp_PasswordViewer.jpg】</p>
<p>[附件]:</p>
<p> </p>
<div style="margin: 0px; padding: 0px; display: inline; float: none;" id="scid:F60BB8FA-6F02-4999-8F5E-9DD4E92C4DA7:3a281a8f-e72d-4343-9cec-4b8b3b1d6ac6" class="wlWriterEditableSmartContent">
<div><a href="http://www.blogjava.net/images/blogjava_net/wintys/WindowsLiveWriter/1_11D15/PasswordViewer.zip" target="_self">PasswordViewer.zip</a></div>
</div>
:&nbsp;
<p>PasswordViewer.exe、PasswordViewerMouseHookDLL.dll、工程源代码</p>
<div id="mycopyright" style="border-width: 1px 0pt 0pt; border-top: 1px solid red; padding: 5px; margin-top: 5px;">
<span style="color: #ff0000;">原创作品，转载请注明出处。<br />
作者:Winty (wintys@gmail.com)<br />
博客:http://www.blogjava.net/wintys</span>
</div>
<img src ="http://www.blogjava.net/wintys/aggbug/297612.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2009-10-10 00:08 <a href="http://www.blogjava.net/wintys/archive/2009/10/10/cpp_passwordviewer.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原]开发自己的Windows Live Writer插件</title><link>http://www.blogjava.net/wintys/archive/2009/10/05/dotNET_WindowLiveWriter_WintyCodeArea.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Mon, 05 Oct 2009 11:26:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2009/10/05/dotNET_WindowLiveWriter_WintyCodeArea.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/297273.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2009/10/05/dotNET_WindowLiveWriter_WintyCodeArea.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/297273.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/297273.html</trackback:ping><description><![CDATA[<p>[标题]: 开发自己的Windows Live Writer插件 <br />
[时间]:2009-10-04 <br />
[摘要]: 开发一个Windows Live Writer插件，在写博客时，添加自己的代码样式。最终效果是，在Windows Live Writer中选中代码，然后点击插件，将代码包含在&lt;div class="mycode"&gt;your code&lt;/div&gt;中。 <br />
[关键字]: plugin、Windows Live Writer、code、format、highlight、 插件、博客、blog、msi、package、打包、C#、前缀、后缀、简单代码、样式<br />
[环境]: Windows Live Writer 14.0.8089.726 zh-cn, Visual Studio 2008 , Windows XP SP3 , Wordpress 2.8.4 <br />
[作者]:Winty&nbsp; (wintys@gmail.com) <a href="http://www.blogjava.net/wintys">http://www.blogjava.net/wintys</a></p>
<p>[正文]: </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 开发一个Windows Live Writer插件，在写博客时，添加自己的代码样式。最终效果是，在Windows Live Writer中选中代码，然后点击插件，将代码包含在&lt;div class="mycode"&gt;your code&lt;/div&gt;中。当然要在最终发表的博客上添加.mycode 的CSS样式才有效果。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .mycode样式如下:</p>
<div class="mycode">.mycode { <br />
&nbsp;&nbsp;&nbsp; margin: 10px; <br />
&nbsp;&nbsp;&nbsp; padding: 10px; <br />
&nbsp;&nbsp;&nbsp; background: #DDEDFB; <br />
&nbsp;&nbsp;&nbsp; border: 1px solid #428EDE;&nbsp; <br />
&nbsp;&nbsp;&nbsp; text-align: left; <br />
&nbsp;&nbsp;&nbsp; /*width:500px;*/ <br />
&nbsp;&nbsp;&nbsp; overflow-x:auto; <br />
&nbsp;&nbsp;&nbsp; font-size:20px; <br />
&nbsp;&nbsp;&nbsp; white-space:nowrap; <br />
&nbsp;&nbsp;&nbsp; *white-space: normal; <br />
&nbsp;&nbsp;&nbsp; WORD-WRAP: break-word;/*IE*/ <br />
&nbsp;&nbsp;&nbsp; word-break:break-all;/*IE*/ <br />
}</div>
<pre>选中代码，点击"WintyCodeArea":</pre>
<pre><a href="http://www.blogjava.net/images/blogjava_net/wintys/WindowsLiveWriter/WindowsLiveWriter_11843/image_4.png"><img style="border-width: 0px; display: inline;" title="image" alt="image" src="http://www.blogjava.net/images/blogjava_net/wintys/WindowsLiveWriter/WindowsLiveWriter_11843/image_thumb_1.png" border="0" height="253" width="598" /></a> </pre>
<pre>&nbsp;</pre>
<pre>效果如下图</pre>
<pre>(在Writer需启用"使用主题编辑"，并已从博客中获取主题，才能立即看到效果):</pre>
<pre><a href="http://www.blogjava.net/images/blogjava_net/wintys/WindowsLiveWriter/WindowsLiveWriter_11843/image_6.png"><img style="border-width: 0px; display: inline;" title="image" alt="image" src="http://www.blogjava.net/images/blogjava_net/wintys/WindowsLiveWriter/WindowsLiveWriter_11843/image_thumb_2.png" border="0" height="226" width="605" /></a> </pre>
<pre>&nbsp;</pre>
<h3>0、准备工作</h3>
<ul>
    <li>在Visual Studio 2008中新建C#"Class Library"项目
    </li>
    <li>在项目中添加References:"C:\Program Files\Windows Live\Writer\WindowsLive.Writer.Api.dll"
    </li>
    <li>在项目属性的"Build Events"=&gt;"Post Build Event command line"添加:(XCOPY /D /Y /R "$(TargetPath)" "C:\Program Files\Windows Live\Writer\Plugins") </li>
</ul>
<p>&nbsp;</p>
<h3>1、"Class Library"主类，继承于ContentSource</h3>
<p>WintyCodeArea.cs:</p>
<div class="mycode">
<p>using System.Windows.Forms; <br />
using WindowsLive.Writer.Api; </p>
<p>/* <br />
2009-10-02</p>
<p><a href="http://www.blogjava.net/wintys" target="_blank">Winty</a></p>
<p><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#119;&#105;&#110;&#116;&#121;&#115;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;">wintys@gmail.com</a></p>
<p><a href="http://www.blogjava.net/wintys&quot;">http://www.blogjava.net/wintys</a> <br />
&nbsp; */ <br />
namespace MyWindowsLiveWriterPlugin <br />
{ <br />
&nbsp;&nbsp;&nbsp; /*Plugin 主类*/ <br />
&nbsp;&nbsp;&nbsp; [WriterPlugin("{7DFB5431-D7DA-4e61-9E4B-056D30DFDB63}", <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "WintyCodeArea", <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PublisherUrl = "<a href="http://www.blogjava.net/wintys&quot;">http://www.blogjava.net/wintys"</a>, <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImagePath = "image.jpg", <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HasEditableOptions = true, <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Description = "Insert &lt;div class=\"mycode\"&gt;your code&lt;/div&gt;\nhttp://www.blogjava.net/wintys\nwintys@gmail.com")] <br />
&nbsp;&nbsp;&nbsp; [InsertableContentSource("WintyCodeArea")] <br />
&nbsp;&nbsp;&nbsp; public class WintyCodeArea : <strong>ContentSource</strong> <br />
&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WintyCodeAreaSettings m_settings; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public override void Initialize(IProperties pluginOptions) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; base.Initialize(pluginOptions); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_settings = new WintyCodeAreaSettings(pluginOptions); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public override DialogResult CreateContent(IWin32Window dialogOwner, ref string content) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string originalContent = content; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; content = m_settings.FrontCode; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(m_settings.EscapeCode) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; content +=&nbsp; System.Web.HttpUtility.HtmlEncode(originalContent); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; content += originalContent; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; content += m_settings.BackCode; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return DialogResult.OK; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public override void EditOptions(IWin32Window dialogOwner) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SettingForm settingForm = new SettingForm(m_settings); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; settingForm.ShowDialog(dialogOwner); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />
&nbsp;&nbsp;&nbsp; } <br />
} </p>
</div>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Initialize()、EditOptions()并不是必须的，这里因为用到了"设置选项"窗口，才需要。</p>
<p>CreateContent(IWin32Window dialogOwner, ref string content)在此为必须，content传入值为Live Writer<strong>当前被选中的高亮区的HTML代码</strong>，无论在编辑还是在源代码视图中都是这样的。content的传出值为你修改后的HTML代码，最终将在Live Writer中显示的。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在CreateContent()中也可以弹出窗体，此处并未用到。以下是代码示例:</p>
<div class="mycode">
<p>public override DialogResult CreateContent(IWin32Window dialogOwner, ref string content) <br />
{ <br />
&nbsp;&nbsp;&nbsp; using (InsertCodeForm insertCodeForm = new InsertCodeForm()) <br />
&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DialogResult result = insertCodeForm.ShowDialog(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; content = insertCodeForm.MyCode; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return result; <br />
&nbsp;&nbsp;&nbsp; } <br />
} </p>
</div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 相应的InsertCodeForm类的部分代码如下:</p>
<div class="mycode">
<p>public partial class InsertCodeForm : Form <br />
{ <br />
&nbsp;&nbsp;&nbsp; private string m_MyCode; <br />
&nbsp;&nbsp;&nbsp; public string MyCode <br />
&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return m_MyCode; } <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set { m_MyCode = value; } <br />
&nbsp;&nbsp;&nbsp; } </p>
<p>&nbsp;&nbsp;&nbsp; public InsertCodeForm() <br />
&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; InitializeComponent(); <br />
&nbsp;&nbsp;&nbsp; } </p>
<p>&nbsp;&nbsp;&nbsp; private void buttonInsert_Click(object sender, EventArgs e) <br />
&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (textBoxCode.Text == string.Empty) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_MyCode = "&lt;div class=\"mycode\"&gt;"; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_MyCode += System.Web.HttpUtility.HtmlEncode(textBoxCode.Text); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_MyCode += "&lt;/div&gt;";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.DialogResult = DialogResult.OK; <br />
&nbsp;&nbsp;&nbsp; } <br />
} </p>
</div>
<p><br />
&nbsp;</p>
<h3>2、用于设置WintyCodeArea插件行为的类 </h3>
<p>WintyCodeAreaSettings.cs: </p>
<div class="mycode">
<p>using WindowsLive.Writer.Api; </p>
<p>namespace MyWindowsLiveWriterPlugin <br />
{ <br />
&nbsp;&nbsp;&nbsp; class WintyCodeAreaSettings <br />
&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>IProperties m_properties;</strong> </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private const string FRONT_CODE = "FRONT_CODE";//前缀代码 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private const string BACK_CODE = "BACK_CODE";//后缀代码 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private const string ESCAPE_CODE = "ESCAPE_CODE";//是否转义代码 </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public const string DEFAULT_FRONT_CODE = "&lt;div class=\"mycode\"&gt;"; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public const string DEFAULT_BACK_CODE = "&lt;/div&gt;"; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public const bool&nbsp;&nbsp; DEFAULT_ESCAPE_CODE = false; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public WintyCodeAreaSettings(IProperties properties) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_properties = properties; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public string FrontCode <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return m_properties.GetString(FRONT_CODE, DEFAULT_FRONT_CODE); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_properties.SetString(FRONT_CODE, value); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public string BackCode <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return m_properties.GetString(BACK_CODE, DEFAULT_BACK_CODE); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_properties.SetString(BACK_CODE, value); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public bool EscapeCode <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return m_properties.GetBoolean(ESCAPE_CODE, DEFAULT_ESCAPE_CODE); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_properties.SetBoolean(ESCAPE_CODE, value); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </p>
<p>&nbsp;&nbsp;&nbsp; } <br />
} </p>
</div>
<p>&nbsp; </p>
<h3>3、"设置窗口"的代码 </h3>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 点击"工具=&gt;选项"就可以找到这个设置窗口。</p>
<p><a href="http://www.blogjava.net/images/blogjava_net/wintys/WindowsLiveWriter/WindowsLiveWriter_11843/image_8.png"><img style="border-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="image" alt="image" src="http://www.blogjava.net/images/blogjava_net/wintys/WindowsLiveWriter/WindowsLiveWriter_11843/image_thumb_3.png" border="0" height="408" width="565" /></a></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WintyCodeArea的设置窗口: </p>
<p><a href="http://www.blogjava.net/images/blogjava_net/wintys/WindowsLiveWriter/WindowsLiveWriter_11843/image_2.png"><img style="border-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="image" alt="image" src="http://www.blogjava.net/images/blogjava_net/wintys/WindowsLiveWriter/WindowsLiveWriter_11843/image_thumb.png" border="0" height="308" width="447" /></a></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 所谓的转义原始内容，就是将所选内容中的特殊HTML字符进行编码(空格与换行不变)。</p>
<p>&nbsp;</p>
<p>SettingForm.cs: </p>
<div class="mycode">
<p>using System; <br />
using System.Windows.Forms; </p>
<p>namespace MyWindowsLiveWriterPlugin <br />
{ <br />
&nbsp;&nbsp;&nbsp; partial class SettingForm : Form <br />
&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>WintyCodeAreaSettings</strong> m_settings; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public SettingForm(WintyCodeAreaSettings settings) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; InitializeComponent(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Winty's initialization <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_settings = settings; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; txtFrontCode.Text = m_settings.FrontCode; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; chkEscapeCode.Checked = m_settings.EscapeCode; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; textBackCode.Text = m_settings.BackCode; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*保存设置*/ <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private void btnOK_Click(object sender, EventArgs e) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_settings.FrontCode = txtFrontCode.Text; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_settings.EscapeCode = chkEscapeCode.Checked; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_settings.BackCode = textBackCode.Text; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Close(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*恢复默认设置*/ <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private void btnRestoreDefault_Click(object sender, EventArgs e) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_settings.FrontCode = WintyCodeAreaSettings.DEFAULT_FRONT_CODE; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_settings.EscapeCode = WintyCodeAreaSettings.DEFAULT_ESCAPE_CODE; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_settings.BackCode = WintyCodeAreaSettings.DEFAULT_BACK_CODE; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; txtFrontCode.Text = m_settings.FrontCode; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; chkEscapeCode.Checked = m_settings.EscapeCode; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; textBackCode.Text = m_settings.BackCode; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />
&nbsp;&nbsp;&nbsp; } <br />
} </p>
</div>
<p>&nbsp; </p>
<p>SettingForm.Designer.cs(这是Visual Studio根据设计的窗体生成的代码): </p>
<div class="mycode">
<p>namespace MyWindowsLiveWriterPlugin <br />
{ <br />
&nbsp;&nbsp;&nbsp; partial class SettingForm <br />
&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// Required designer variable. <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private System.ComponentModel.IContainer components = null; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// Clean up any resources being used. <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="disposing"&gt;true if managed resources should be disposed; otherwise, false.&lt;/param&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected override void Dispose(bool disposing) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (disposing &amp;&amp; (components != null)) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; components.Dispose(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; base.Dispose(disposing); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #region Windows Form Designer generated code </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// Required method for Designer support - do not modify <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// the contents of this method with the code editor. <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private void InitializeComponent() <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.btnOK = new System.Windows.Forms.Button(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.chkEscapeCode = new System.Windows.Forms.CheckBox(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.labelFont = new System.Windows.Forms.Label(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.labelBack = new System.Windows.Forms.Label(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.txtFrontCode = new System.Windows.Forms.TextBox(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.textBackCode = new System.Windows.Forms.TextBox(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.btnRestoreDefault = new System.Windows.Forms.Button(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.SuspendLayout(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // btnOK <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.btnOK.Location = new System.Drawing.Point(222, 211); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.btnOK.Name = "btnOK"; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.btnOK.Size = new System.Drawing.Size(113, 29); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.btnOK.TabIndex = 0; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.btnOK.Text = "设置"; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.btnOK.UseVisualStyleBackColor = true; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.btnOK.Click += new System.EventHandler(this.btnOK_Click); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // chkEscapeCode <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.chkEscapeCode.AutoSize = true; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.chkEscapeCode.Location = new System.Drawing.Point(127, 94); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.chkEscapeCode.Name = "chkEscapeCode"; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.chkEscapeCode.Size = new System.Drawing.Size(96, 16); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.chkEscapeCode.TabIndex = 1; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.chkEscapeCode.Text = "转义原始内容"; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.chkEscapeCode.UseVisualStyleBackColor = true; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // labelFont <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.labelFont.AutoSize = true; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.labelFont.Location = new System.Drawing.Point(48, 12); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.labelFont.Name = "labelFont"; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.labelFont.Size = new System.Drawing.Size(53, 12); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.labelFont.TabIndex = 2; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.labelFont.Text = "前缀代码"; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // labelBack <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.labelBack.AutoSize = true; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.labelBack.Location = new System.Drawing.Point(48, 125); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.labelBack.Name = "labelBack"; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.labelBack.Size = new System.Drawing.Size(53, 12); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.labelBack.TabIndex = 4; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.labelBack.Text = "后缀代码"; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // txtFrontCode <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.txtFrontCode.Location = new System.Drawing.Point(125, 12); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.txtFrontCode.Multiline = true; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.txtFrontCode.Name = "txtFrontCode"; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.txtFrontCode.Size = new System.Drawing.Size(247, 64); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.txtFrontCode.TabIndex = 5; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // textBackCode <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.textBackCode.Location = new System.Drawing.Point(125, 125); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.textBackCode.Multiline = true; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.textBackCode.Name = "textBackCode"; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.textBackCode.Size = new System.Drawing.Size(247, 64); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.textBackCode.TabIndex = 6; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // btnRestoreDefault <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.btnRestoreDefault.Location = new System.Drawing.Point(88, 211); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.btnRestoreDefault.Name = "btnRestoreDefault"; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.btnRestoreDefault.Size = new System.Drawing.Size(106, 29); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.btnRestoreDefault.TabIndex = 7; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.btnRestoreDefault.Text = "恢复默认设置"; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.btnRestoreDefault.UseVisualStyleBackColor = true; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.btnRestoreDefault.Click += new System.EventHandler(this.btnRestoreDefault_Click); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // SettingForm <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.ClientSize = new System.Drawing.Size(420, 252); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.Controls.Add(this.btnRestoreDefault); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.Controls.Add(this.textBackCode); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.Controls.Add(this.txtFrontCode); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.Controls.Add(this.labelBack); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.Controls.Add(this.labelFont); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.Controls.Add(this.chkEscapeCode); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.Controls.Add(this.btnOK); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.Name = "SettingForm"; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.Text = "WintyCodeArea Settings"; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.ResumeLayout(false); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.PerformLayout(); </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #endregion </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private System.Windows.Forms.Button btnOK; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private System.Windows.Forms.CheckBox chkEscapeCode; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private System.Windows.Forms.Label labelFont; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private System.Windows.Forms.Label labelBack; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private System.Windows.Forms.TextBox txtFrontCode; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private System.Windows.Forms.TextBox textBackCode; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private System.Windows.Forms.Button btnRestoreDefault; <br />
&nbsp;&nbsp;&nbsp; } <br />
} </p>
</div>
<p>&nbsp;</p>
<h3>4、总结</h3>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 工程最终生成WintyCodeArea.dll，将其复制到"C:\Program Files\Windows Live\Writer\Plugins"目录，启动Windows Live Writer就可以使用这个插件了。或将其做成WintyCodeAreaWLWPluginSetup.msi(见附件)，点安装即可(msi制作方法参考[11])。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 此插件主要供自己使用，其他人可能不会想要我的这种效果，所以暂命名WintyCodeArea。但是除了添加&lt;div class="mycode"&gt;your code&lt;/div&gt;外，还可以进行代码转义设置，并且前后缀代码都可以自定义，根据需要自己添加前缀后缀代码就行了，所以，希望对别人有点用处。</p>
<p>&nbsp;</p>
<p>补充:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果插件需要访问剪贴板，可参考如下代码:</p>
<p>//System.Windows.Forms.Clipboard</p>
<p>IDataObject iData = Clipboard.GetDataObject(); <br />
if (iData.GetDataPresent(DataFormats.Text)) <br />
{ <br />
&nbsp;&nbsp;&nbsp; str = (String)iData.GetData(DataFormats.Text); <br />
&nbsp;&nbsp;&nbsp; ...... <br />
}</p>
<p>&nbsp;</p>
<p>[参考资料]: </p>
<p>[1]*《<a href="http://www.devx.com/codemag/Article/38214/1954">Developing Plugins for Windows Live Writer</a> 》 : <a title="http://www.devx.com/codemag/Article/38214/1954" href="http://www.devx.com/codemag/Article/38214/1954">http://www.devx.com/codemag/Article/38214/1954</a></p>
<p>[2]*《<a href="http://www.cnblogs.com/dflying/archive/2006/12/03/580602.html">为Windows Live Writer开发插件&#8212;&#8212;InsertSearchPageLink</a>》 : <a title="http://www.cnblogs.com/dflying/archive/2006/12/03/580602.html" href="http://www.cnblogs.com/dflying/archive/2006/12/03/580602.html">http://www.cnblogs.com/dflying/archive/2006/12/03/580602.html</a></p>
<p>[3]*《<a href="http://blog.boyet.com/blog/blog/writing-a-simple-windows-live-writer-plugin/">Writing a simple Windows Live Writer plugin</a>》 : <a title="http://blog.boyet.com/blog/blog/writing-a-simple-windows-live-writer-plugin/" href="http://blog.boyet.com/blog/blog/writing-a-simple-windows-live-writer-plugin/">http://blog.boyet.com/blog/blog/writing-a-simple-windows-live-writer-plugin/</a></p>
<p>[4] 《<a href="http://www.liveside.net/developer/archive/2008/06/03/the-new-live-writer-sdk.aspx">The New Live Writer SDK</a>》: <a title="http://www.liveside.net/developer/archive/2008/06/03/the-new-live-writer-sdk.aspx" href="http://www.liveside.net/developer/archive/2008/06/03/the-new-live-writer-sdk.aspx">http://www.liveside.net/developer/archive/2008/06/03/the-new-live-writer-sdk.aspx</a></p>
<p>[5] 《<a href="http://www.liveside.net/developer/archive/2006/10/19/Writing-Plugins-For-Windows-Live-Writer-_2D00_-Working-With-Forms.aspx">Writing Plugins For Windows Live Writer - Working With Forms</a>》&nbsp; : <a title="http://www.liveside.net/developer/archive/2006/10/19/Writing-Plugins-For-Windows-Live-Writer-_2D00_-Working-With-Forms.aspx" href="http://www.liveside.net/developer/archive/2006/10/19/Writing-Plugins-For-Windows-Live-Writer-_2D00_-Working-With-Forms.aspx">http://www.liveside.net/developer/archive/2006/10/19/Writing-Plugins-For-Windows-Live-Writer-_2D00_-Working-With-Forms.aspx</a></p>
<p>[6] 《<a href="http://www.liveside.net/developer/archive/2007/10/20/writing-plugins-for-windows-live-writer-using-pluginhttprequest-instead-of-httpwebrequest.aspx">Writing Plugins For Windows Live Writer - Using PluginHttpRequest Instead of HttpWebRequest</a>》 : <a title="http://www.liveside.net/developer/archive/2007/10/20/writing-plugins-for-windows-live-writer-using-pluginhttprequest-instead-of-httpwebrequest.aspx" href="http://www.liveside.net/developer/archive/2007/10/20/writing-plugins-for-windows-live-writer-using-pluginhttprequest-instead-of-httpwebrequest.aspx">http://www.liveside.net/developer/archive/2007/10/20/writing-plugins-for-windows-live-writer-using-pluginhttprequest-instead-of-httpwebrequest.aspx</a></p>
<p>[7] 《<a href="http://blog.benhall.me.uk/2007/09/windows-live-writer-plugin-properties.html">Windows Live Writer Plugin - Properties Panel</a>》 : <a title="http://blog.benhall.me.uk/2007/09/windows-live-writer-plugin-properties.html" href="http://blog.benhall.me.uk/2007/09/windows-live-writer-plugin-properties.html">http://blog.benhall.me.uk/2007/09/windows-live-writer-plugin-properties.html</a></p>
<p>[8] 《<a href="http://blog.benhall.me.uk/2007/09/windows-live-writer-plugin-display-form.html">Windows Live Writer Plugin - Display a form / OpenFileDialog</a>》 :&nbsp; <a title="http://blog.benhall.me.uk/2007/09/windows-live-writer-plugin-display-form.html" href="http://blog.benhall.me.uk/2007/09/windows-live-writer-plugin-display-form.html">http://blog.benhall.me.uk/2007/09/windows-live-writer-plugin-display-form.html</a></p>
<p>[9] LiveSide Source Code : <a title="http://cid-fabdddc5cad93494.skydrive.live.com/self.aspx/LiveSide%20-%20Public/SourceCode/MyNewPlugin%20-%20Adding%20An%20Icon.zip?wa=wsignin1.0&amp;sa=732043521" href="http://cid-fabdddc5cad93494.skydrive.live.com/self.aspx/LiveSide%20-%20Public/SourceCode/MyNewPlugin%20-%20Adding%20An%20Icon.zip?wa=wsignin1.0&amp;sa=732043521">http://cid-fabdddc5cad93494.skydrive.live.com/self.aspx/LiveSide%20-%20Public/SourceCode/MyNewPlugin%20-%20Adding%20An%20Icon.zip?wa=wsignin1.0&amp;sa=732043521</a></p>
<p>[10] 《<a href="http://blog.benhall.me.uk/2007/09/windows-live-writer-plugin-hello-world.html">Windows Live Writer Plugin - Hello World!</a>》 : <a title="http://blog.benhall.me.uk/2007/09/windows-live-writer-plugin-hello-world.html" href="http://blog.benhall.me.uk/2007/09/windows-live-writer-plugin-hello-world.html">http://blog.benhall.me.uk/2007/09/windows-live-writer-plugin-hello-world.html</a></p>
<p>[11]*《<a href="http://blog.benhall.me.uk/2007/10/windows-live-writer-plugin-installation.html">Windows Live Writer Plugin - Installation</a>》 : <a title="http://blog.benhall.me.uk/2007/10/windows-live-writer-plugin-installation.html" href="http://blog.benhall.me.uk/2007/10/windows-live-writer-plugin-installation.html">http://blog.benhall.me.uk/2007/10/windows-live-writer-plugin-installation.html</a></p>
<p>[12] MSDN Windows Live Writer SDK : <a title="http://msdn.microsoft.com/en-us/library/aa738906.aspx" href="http://msdn.microsoft.com/en-us/library/aa738906.aspx">http://msdn.microsoft.com/en-us/library/aa738906.aspx</a></p>
<p>[13] Windows Live Writer Blog : <a title="http://www.live-writer.net/" href="http://www.live-writer.net/">http://www.live-writer.net/</a></p>
<p>[14] Windows Live Gallery : <a title="http://gallery.live.com/results.aspx?bt=9&amp;pl=8" href="http://gallery.live.com/results.aspx?bt=9&amp;pl=8">http://gallery.live.com/results.aspx?bt=9&amp;pl=8</a></p>
<p><br />
[附件]:</p>
<p>[1] WintyCodeAreaProject.zip(Visual Studio工程) : <a href="/Files/wintys/WintyCodeAreaProject.zip">WintyCodeAreaProject.zip</a></p>
<p>[2] WintyCodeAreaWLWPluginSetup.zip(WintyCodeArea插件安装程序,msi格式) : <a href="/Files/wintys/WintyCodeAreaWLWPluginSetup.zip">http://www.blogjava.net/Files/wintys/WintyCodeAreaWLWPluginSetup.zip</a></p>
<div id="mycopyright" style="border-width: 1px 0pt 0pt; border-top: 1px solid red; padding: 5px; margin-top: 5px;">
<span style="color: #ff0000;">原创作品，转载请注明出处。<br />
作者:Winty (wintys@gmail.com)<br />
博客:http://www.blogjava.net/wintys</span>
</div>
<p>&nbsp;</p><img src ="http://www.blogjava.net/wintys/aggbug/297273.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2009-10-05 19:26 <a href="http://www.blogjava.net/wintys/archive/2009/10/05/dotNET_WindowLiveWriter_WintyCodeArea.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原]将Puppy Linux安装到U盘</title><link>http://www.blogjava.net/wintys/archive/2009/09/21/linux_puppy_install.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Sun, 20 Sep 2009 16:12:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2009/09/21/linux_puppy_install.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/295785.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2009/09/21/linux_puppy_install.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/295785.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/295785.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 使用UNetbootin安装Puppy Linux到U盘，Puppy Linux中文支持。 &nbsp;&nbsp;<a href='http://www.blogjava.net/wintys/archive/2009/09/21/linux_puppy_install.html'>阅读全文</a><img src ="http://www.blogjava.net/wintys/aggbug/295785.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2009-09-21 00:12 <a href="http://www.blogjava.net/wintys/archive/2009/09/21/linux_puppy_install.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原]Struts2-整合JFreeChart</title><link>http://www.blogjava.net/wintys/archive/2009/09/03/struts_helloworld_jfreechart.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Thu, 03 Sep 2009 09:10:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2009/09/03/struts_helloworld_jfreechart.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/293762.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2009/09/03/struts_helloworld_jfreechart.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/293762.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/293762.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: JFreeChart&nbsp;&nbsp;<a href='http://www.blogjava.net/wintys/archive/2009/09/03/struts_helloworld_jfreechart.html'>阅读全文</a><img src ="http://www.blogjava.net/wintys/aggbug/293762.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2009-09-03 17:10 <a href="http://www.blogjava.net/wintys/archive/2009/09/03/struts_helloworld_jfreechart.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原]Struts2-深入探索</title><link>http://www.blogjava.net/wintys/archive/2009/08/29/struts_helloworld_miscellaneous.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Sat, 29 Aug 2009 12:32:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2009/08/29/struts_helloworld_miscellaneous.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/293116.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2009/08/29/struts_helloworld_miscellaneous.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/293116.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/293116.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Struts2中一些零碎的知识点:struts.xml详解、模型驱动、Preparable接口、防止表单重复提交、ActionContext、动态方法调用、异常。&nbsp;&nbsp;<a href='http://www.blogjava.net/wintys/archive/2009/08/29/struts_helloworld_miscellaneous.html'>阅读全文</a><img src ="http://www.blogjava.net/wintys/aggbug/293116.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2009-08-29 20:32 <a href="http://www.blogjava.net/wintys/archive/2009/08/29/struts_helloworld_miscellaneous.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原]Struts2-国际化</title><link>http://www.blogjava.net/wintys/archive/2009/08/10/struts_helloworld_i18n.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Mon, 10 Aug 2009 10:13:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2009/08/10/struts_helloworld_i18n.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/290575.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2009/08/10/struts_helloworld_i18n.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/290575.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/290575.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Struts2 internationalization&nbsp;&nbsp;<a href='http://www.blogjava.net/wintys/archive/2009/08/10/struts_helloworld_i18n.html'>阅读全文</a><img src ="http://www.blogjava.net/wintys/aggbug/290575.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2009-08-10 18:13 <a href="http://www.blogjava.net/wintys/archive/2009/08/10/struts_helloworld_i18n.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原]Struts2-文件上传与下载</title><link>http://www.blogjava.net/wintys/archive/2009/08/08/struts_fileupload_download.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Sat, 08 Aug 2009 00:48:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2009/08/08/struts_fileupload_download.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/290308.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2009/08/08/struts_fileupload_download.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/290308.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/290308.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Struts FileUpload & Download&nbsp;&nbsp;<a href='http://www.blogjava.net/wintys/archive/2009/08/08/struts_fileupload_download.html'>阅读全文</a><img src ="http://www.blogjava.net/wintys/aggbug/290308.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2009-08-08 08:48 <a href="http://www.blogjava.net/wintys/archive/2009/08/08/struts_fileupload_download.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原]Struts2-拦截器</title><link>http://www.blogjava.net/wintys/archive/2009/08/01/struts_interceptor.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Fri, 31 Jul 2009 16:21:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2009/08/01/struts_interceptor.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/289333.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2009/08/01/struts_interceptor.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/289333.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/289333.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Struts Interceptor&nbsp;&nbsp;<a href='http://www.blogjava.net/wintys/archive/2009/08/01/struts_interceptor.html'>阅读全文</a><img src ="http://www.blogjava.net/wintys/aggbug/289333.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2009-08-01 00:21 <a href="http://www.blogjava.net/wintys/archive/2009/08/01/struts_interceptor.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原]Struts2校验框架</title><link>http://www.blogjava.net/wintys/archive/2009/07/27/struts_validation_framework.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Mon, 27 Jul 2009 15:54:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2009/07/27/struts_validation_framework.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/288656.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2009/07/27/struts_validation_framework.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/288656.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/288656.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 校验框架配置、客户端校验&nbsp;&nbsp;<a href='http://www.blogjava.net/wintys/archive/2009/07/27/struts_validation_framework.html'>阅读全文</a><img src ="http://www.blogjava.net/wintys/aggbug/288656.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2009-07-27 23:54 <a href="http://www.blogjava.net/wintys/archive/2009/07/27/struts_validation_framework.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原]Exception starting filter MyStruts2</title><link>http://www.blogjava.net/wintys/archive/2009/07/27/error_Exception_starting_filter_Struts2.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Mon, 27 Jul 2009 11:41:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2009/07/27/error_Exception_starting_filter_Struts2.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/288622.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2009/07/27/error_Exception_starting_filter_Struts2.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/288622.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/288622.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter&nbsp;&nbsp;<a href='http://www.blogjava.net/wintys/archive/2009/07/27/error_Exception_starting_filter_Struts2.html'>阅读全文</a><img src ="http://www.blogjava.net/wintys/aggbug/288622.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2009-07-27 19:41 <a href="http://www.blogjava.net/wintys/archive/2009/07/27/error_Exception_starting_filter_Struts2.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原]MyEclipse location already exists</title><link>http://www.blogjava.net/wintys/archive/2009/07/27/error_MyEclipse_location_already_exists.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Sun, 26 Jul 2009 16:37:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2009/07/27/error_MyEclipse_location_already_exists.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/288494.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2009/07/27/error_MyEclipse_location_already_exists.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/288494.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/288494.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: location already exists , specify a different location&nbsp;&nbsp;<a href='http://www.blogjava.net/wintys/archive/2009/07/27/error_MyEclipse_location_already_exists.html'>阅读全文</a><img src ="http://www.blogjava.net/wintys/aggbug/288494.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2009-07-27 00:37 <a href="http://www.blogjava.net/wintys/archive/2009/07/27/error_MyEclipse_location_already_exists.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原]Struts2输入校验</title><link>http://www.blogjava.net/wintys/archive/2009/07/27/struts_validation.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Sun, 26 Jul 2009 16:23:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2009/07/27/struts_validation.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/288493.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2009/07/27/struts_validation.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/288493.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/288493.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 替换struts默认的类型转换错误信息、给Struts标签指定主题、使用自定义业务方法和验证方法。&nbsp;&nbsp;<a href='http://www.blogjava.net/wintys/archive/2009/07/27/struts_validation.html'>阅读全文</a><img src ="http://www.blogjava.net/wintys/aggbug/288493.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2009-07-27 00:23 <a href="http://www.blogjava.net/wintys/archive/2009/07/27/struts_validation.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原]使用Oracle Instant Client - SQLPlus</title><link>http://www.blogjava.net/wintys/archive/2009/07/21/database_oracle_instant_client_sqlplus.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Mon, 20 Jul 2009 16:30:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2009/07/21/database_oracle_instant_client_sqlplus.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/287556.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2009/07/21/database_oracle_instant_client_sqlplus.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/287556.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/287556.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 使用Oracle Instant Client - SQL*Plus从客户端连接Oracle服务器。&nbsp;&nbsp;<a href='http://www.blogjava.net/wintys/archive/2009/07/21/database_oracle_instant_client_sqlplus.html'>阅读全文</a><img src ="http://www.blogjava.net/wintys/aggbug/287556.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2009-07-21 00:30 <a href="http://www.blogjava.net/wintys/archive/2009/07/21/database_oracle_instant_client_sqlplus.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原]双系统启动修复</title><link>http://www.blogjava.net/wintys/archive/2009/07/20/tech_windows_server_2003_boot.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Mon, 20 Jul 2009 06:55:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2009/07/20/tech_windows_server_2003_boot.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/287474.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2009/07/20/tech_windows_server_2003_boot.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/287474.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/287474.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Windows XP 与 Windows Server 2003双系统，当Windows XP系统用Ghost恢复后，Windows Server 2003不能正确启动。&nbsp;&nbsp;<a href='http://www.blogjava.net/wintys/archive/2009/07/20/tech_windows_server_2003_boot.html'>阅读全文</a><img src ="http://www.blogjava.net/wintys/aggbug/287474.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2009-07-20 14:55 <a href="http://www.blogjava.net/wintys/archive/2009/07/20/tech_windows_server_2003_boot.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原]Struts2类型转换</title><link>http://www.blogjava.net/wintys/archive/2009/07/15/struts_typeconverter.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Wed, 15 Jul 2009 08:51:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2009/07/15/struts_typeconverter.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/286902.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2009/07/15/struts_typeconverter.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/286902.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/286902.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Struts2类型转换、全局类型转换、集合类型转换&nbsp;&nbsp;<a href='http://www.blogjava.net/wintys/archive/2009/07/15/struts_typeconverter.html'>阅读全文</a><img src ="http://www.blogjava.net/wintys/aggbug/286902.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2009-07-15 16:51 <a href="http://www.blogjava.net/wintys/archive/2009/07/15/struts_typeconverter.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原]Struts2-入门与配置</title><link>http://www.blogjava.net/wintys/archive/2009/07/13/struts_getstart_helloworld.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Mon, 13 Jul 2009 14:16:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2009/07/13/struts_getstart_helloworld.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/286621.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2009/07/13/struts_getstart_helloworld.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/286621.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/286621.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Struts2学习之入门与配置&nbsp;&nbsp;<a href='http://www.blogjava.net/wintys/archive/2009/07/13/struts_getstart_helloworld.html'>阅读全文</a><img src ="http://www.blogjava.net/wintys/aggbug/286621.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2009-07-13 22:16 <a href="http://www.blogjava.net/wintys/archive/2009/07/13/struts_getstart_helloworld.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原]深入JUnit4.x</title><link>http://www.blogjava.net/wintys/archive/2009/07/08/test_junit_junit4.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Wed, 08 Jul 2009 02:28:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2009/07/08/test_junit_junit4.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/285909.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2009/07/08/test_junit_junit4.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/285909.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/285909.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: JUnit4.x参数化测试、私有方法测试、测试套件&nbsp;&nbsp;<a href='http://www.blogjava.net/wintys/archive/2009/07/08/test_junit_junit4.html'>阅读全文</a><img src ="http://www.blogjava.net/wintys/aggbug/285909.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2009-07-08 10:28 <a href="http://www.blogjava.net/wintys/archive/2009/07/08/test_junit_junit4.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]JUnit4.5 QuickTutorial</title><link>http://www.blogjava.net/wintys/archive/2009/07/07/test_junit_quick_Tutorial.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Tue, 07 Jul 2009 15:49:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2009/07/07/test_junit_quick_Tutorial.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/285880.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2009/07/07/test_junit_quick_Tutorial.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/285880.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/285880.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: JUnit官方例子QuickTutorial&nbsp;&nbsp;<a href='http://www.blogjava.net/wintys/archive/2009/07/07/test_junit_quick_Tutorial.html'>阅读全文</a><img src ="http://www.blogjava.net/wintys/aggbug/285880.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2009-07-07 23:49 <a href="http://www.blogjava.net/wintys/archive/2009/07/07/test_junit_quick_Tutorial.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]Struts2.1.6 - Unable to load configuration</title><link>http://www.blogjava.net/wintys/archive/2009/07/07/struts_Unable_to_load_configuration.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Tue, 07 Jul 2009 15:16:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2009/07/07/struts_Unable_to_load_configuration.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/285875.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2009/07/07/struts_Unable_to_load_configuration.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/285875.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/285875.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Unable to load configuration. - bean - jar:file:/F:/Web/homesite/jsp/struts/WEB-INF/lib/struts2-convention-plugin-2.1.6.jar!/struts-plugin.xml:30:119&nbsp;&nbsp;<a href='http://www.blogjava.net/wintys/archive/2009/07/07/struts_Unable_to_load_configuration.html'>阅读全文</a><img src ="http://www.blogjava.net/wintys/aggbug/285875.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2009-07-07 23:16 <a href="http://www.blogjava.net/wintys/archive/2009/07/07/struts_Unable_to_load_configuration.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原]Hibernate集合映射</title><link>http://www.blogjava.net/wintys/archive/2009/07/03/hibernate_collection.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Fri, 03 Jul 2009 15:50:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2009/07/03/hibernate_collection.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/285421.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2009/07/03/hibernate_collection.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/285421.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/285421.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Hibernate中Set、List、Map、Array等集合的映射。&nbsp;&nbsp;<a href='http://www.blogjava.net/wintys/archive/2009/07/03/hibernate_collection.html'>阅读全文</a><img src ="http://www.blogjava.net/wintys/aggbug/285421.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2009-07-03 23:50 <a href="http://www.blogjava.net/wintys/archive/2009/07/03/hibernate_collection.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原]享元模式-咖啡屋</title><link>http://www.blogjava.net/wintys/archive/2009/06/29/pattern_flyweight_coffee_shop.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Mon, 29 Jun 2009 15:08:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2009/06/29/pattern_flyweight_coffee_shop.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/284686.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2009/06/29/pattern_flyweight_coffee_shop.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/284686.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/284686.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Flyweight Pattern,一个有外蕴状态的单纯享元例子:咖啡屋(Coffee Shop)&nbsp;&nbsp;<a href='http://www.blogjava.net/wintys/archive/2009/06/29/pattern_flyweight_coffee_shop.html'>阅读全文</a><img src ="http://www.blogjava.net/wintys/aggbug/284686.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2009-06-29 23:08 <a href="http://www.blogjava.net/wintys/archive/2009/06/29/pattern_flyweight_coffee_shop.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原]享元模式-咖啡摊</title><link>http://www.blogjava.net/wintys/archive/2009/06/29/pattern_flyweight_coffee_stall.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Mon, 29 Jun 2009 15:02:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2009/06/29/pattern_flyweight_coffee_stall.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/284685.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2009/06/29/pattern_flyweight_coffee_stall.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/284685.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/284685.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Flyweight Pattern,一个单纯享元的例子:咖啡摊(Coffee Stall)&nbsp;&nbsp;<a href='http://www.blogjava.net/wintys/archive/2009/06/29/pattern_flyweight_coffee_stall.html'>阅读全文</a><img src ="http://www.blogjava.net/wintys/aggbug/284685.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2009-06-29 23:02 <a href="http://www.blogjava.net/wintys/archive/2009/06/29/pattern_flyweight_coffee_stall.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原]享元模式-复合享元</title><link>http://www.blogjava.net/wintys/archive/2009/06/29/pattern_flyweight_unsharable.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Mon, 29 Jun 2009 14:58:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2009/06/29/pattern_flyweight_unsharable.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/284684.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2009/06/29/pattern_flyweight_unsharable.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/284684.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/284684.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Flyweight Pattern&nbsp;&nbsp;<a href='http://www.blogjava.net/wintys/archive/2009/06/29/pattern_flyweight_unsharable.html'>阅读全文</a><img src ="http://www.blogjava.net/wintys/aggbug/284684.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2009-06-29 22:58 <a href="http://www.blogjava.net/wintys/archive/2009/06/29/pattern_flyweight_unsharable.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原]享元模式-单纯享元</title><link>http://www.blogjava.net/wintys/archive/2009/06/29/pattern_flyweight_simple.html</link><dc:creator>天堂露珠</dc:creator><author>天堂露珠</author><pubDate>Mon, 29 Jun 2009 14:52:00 GMT</pubDate><guid>http://www.blogjava.net/wintys/archive/2009/06/29/pattern_flyweight_simple.html</guid><wfw:comment>http://www.blogjava.net/wintys/comments/284682.html</wfw:comment><comments>http://www.blogjava.net/wintys/archive/2009/06/29/pattern_flyweight_simple.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wintys/comments/commentRss/284682.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wintys/services/trackbacks/284682.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Flyweight Pattern&nbsp;&nbsp;<a href='http://www.blogjava.net/wintys/archive/2009/06/29/pattern_flyweight_simple.html'>阅读全文</a><img src ="http://www.blogjava.net/wintys/aggbug/284682.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wintys/" target="_blank">天堂露珠</a> 2009-06-29 22:52 <a href="http://www.blogjava.net/wintys/archive/2009/06/29/pattern_flyweight_simple.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>