<?xml version="1.0" encoding="gb2312"?>
<rss version="2.0">
<channel>
<title><![CDATA[蒋月强百度空间]]></title>
        <image>
        <title>http://hi.baidu.com</title>
        <link>http://hi.baidu.com</link>
        <url>http://img.baidu.com/img/logo-hi.gif</url>
        </image>
<description><![CDATA[]]></description>
<link>http://hi.baidu.com/yueqiangsh</link>
<language>zh-cn</language>
<generator>www.baidu.com</generator>
<ttl>5</ttl>


<item>
        <title><![CDATA[专业版孔雀鱼繁殖公式]]></title>
        <link><![CDATA[http://hi.baidu.com/yueqiangsh/blog/item/0cb7593387cc0649ad4b5f10.html]]></link>
        <description><![CDATA[
		
		<p>
<table class="FCK__ShowTableBorders">
    <tbody>
        <tr>
            <td valign="top">
            <p><font class="article_body_font"><font class="headline2">前言：<br>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  虽然孔雀鱼在台湾水族已经跃升为主角，并且引起贸易进口商极度的兴趣，无视于孔雀鱼的品质优劣与否，大量引入欧洲、日本孔雀爱好家或俱乐部的孔雀鱼，但是台湾孔雀鱼爱好者，甚至是进口商和贩卖者却对孔雀鱼的基本知识及观念的认识非常贫乏，因此常常发生把观赏用的孔雀鱼当作经过系统维持或品种稳定的孔雀鱼来贩售，因而误导刚入门的孔雀鱼爱好者的观念。基因衰败或基因不明的观赏孔雀鱼，和经过长时间的筛选、作系统维持的孔雀鱼其价值和目的本来就是绝然不同的，唯一相同的可能只有名字(都是叫作孔雀鱼),这个月特别公开ＡＦ　ＪＡＰＡＮ作孔雀鱼的公式，其最终目的是，希望让台湾孔雀鱼爱好者能正确清楚地了解纯系孔雀鱼。<br>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  现在台湾国内除了「AF-JAPAN」100多种孔雀鱼之外，其它系统的*系孔雀，东南亚及德国的孔雀都陆续被引进台湾，AF JAPAN的孔雀鱼几乎都是利用基本品系（带限性遗传基因，显性遗传基因的品种）和衍生种所作出，这个月我们就如何用基本品种创作出洐生种来进行解说。<br>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  要做出孔雀鱼的衍生种，并不是[A+B=AB]或[AB-A=B]如此单纯，必须先了解用于交配的孔雀鱼是带何种类型的基因，否则即使作出外型出众的鱼也是无法固定下来。以下列出目前在台湾市场贩售，且循正统方式作出，属于固定品种的遗传基因类型。</font></font></p>
            </td>
        </tr>
    </tbody>
</table>
基本品种A-I---(带限性遗传基因的品种)---能影响身体色泽的表现<br>
&nbsp;&nbsp;&nbsp;  蛇王（蕾丝蛇王） [XYC][XLYC] (C:COBRA)(L:LACE)<br>
&nbsp;&nbsp;&nbsp;  古老品系 [XY(OF)] (OF:OLD FASHION) <br>
&nbsp;&nbsp;&nbsp;  维也纳绿宝石 [XY(VE)] (VE:VIENNA EMERALD)<br>
&nbsp;&nbsp;&nbsp;  白金（黄白金、红白金＝珊瑚） [XYP][XY(CO)](P:PLATINUM)(C0:CORAL)<br>
&nbsp;&nbsp;&nbsp;  金属(全金属) [XYM] (M:METAL)<br>
&nbsp;&nbsp;&nbsp;  日本蓝 [XYJ] (J:JAPAN BLUE)<br>
<br>
&nbsp;&nbsp;&nbsp;  基本品种A-Ⅱ---(带限性遗传基因的品种)---能影响身体色泽的表现<br>
&nbsp;&nbsp;&nbsp;  美社莎异数体 [XLYPYC]<br>
&nbsp;&nbsp;&nbsp;  美社莎正常体 [XYPC]<br>
&nbsp;&nbsp;&nbsp;  珊瑚美社莎正常体 [XY(CO)C]<br>
&nbsp;&nbsp;&nbsp;  银河 异数体 [XCYPYC]<br>
&nbsp;&nbsp;&nbsp;  银河 正常体 [XCYPC]<br>
&nbsp;&nbsp;&nbsp;  白金日本蓝异数体 [XYPYJ]<br>
&nbsp;&nbsp;&nbsp;  圣塔玛莉亚蛇王 正常体 [XY(SM)C] (SM:SANTA MARIA)<br>
&nbsp;&nbsp;&nbsp;  金属蛇王正常体 [XYMC]<br>
<br>
&nbsp;&nbsp;&nbsp;  基本品种B-Ⅰ---（带显性基因的品种）----特别对尾鳍的表现有影响<br>
&nbsp;&nbsp;&nbsp;  马赛克<br>
&nbsp;&nbsp;&nbsp;  草尾<br>
&nbsp;&nbsp;&nbsp;  德系黄尾礼服（黄白尾）<br>
&nbsp;&nbsp;&nbsp;  素色尾<br>
<br>
&nbsp;&nbsp;&nbsp;  伴性遗传基因C-I<br>
&nbsp;&nbsp;&nbsp;&nbsp; 礼服[XT](T:TUXDEO)<br>
&nbsp;&nbsp;&nbsp;  素色尾[XS](S:SOLID)<br>
&nbsp;&nbsp;&nbsp;  蕾丝[XL]<br>
<br>
&nbsp;&nbsp;&nbsp;  体染色体隐性遗传基因D-I----（体色以外的遗传基因）<br>
&nbsp;&nbsp;&nbsp;  马特利=[mm](m:material)<br>
<br>
&nbsp;&nbsp;&nbsp;  体染色体隐性遗传基因E-I---（体色遗体基因）<br>
&nbsp;&nbsp;&nbsp;  白子 [aa] (a:albino)<br>
&nbsp;&nbsp;&nbsp;  真红眼 [rr] (r:real red eye)<br>
&nbsp;&nbsp;&nbsp;  黄化种 [gg] (g:golden)<br>
&nbsp;&nbsp;&nbsp;  蓝化种 [bb] (b:blue)<br>
&nbsp;&nbsp;&nbsp;  粉红 [pp] (p:pink)<br>
&nbsp;&nbsp;&nbsp;  虎斑 [tt] (t:tiger)<br>
&nbsp;&nbsp;&nbsp;  白化种 [ggbb]<br>
&nbsp;&nbsp;&nbsp;  虎斑白化种双重隐性同质接合体 [bbtt]<br>
&nbsp;&nbsp;&nbsp;  虎斑粉红双重隐性同质接合体 [pptt]<br>
&nbsp;&nbsp;&nbsp;  白子粉红双重隐性同质接合体 [aapp]<br>
&nbsp;&nbsp;&nbsp;  白子超白双重隐性同质接合体 [aabb]<br>
&nbsp;&nbsp;&nbsp;  白子超白三重隐性同质接合体 [aabbgg]<br>
&nbsp;&nbsp;&nbsp;  真红眼白子超白 双重隐性同质接合体 [bbrr]<br>
&nbsp;&nbsp;&nbsp;  真红眼白子超白 三重隐性同质接合体 [bbggrr]</p>
<p>孔雀鱼的品种及衍生种是根据上述６种遗传基因的组合所做出，如果再加上长鳍型，则可以做出上千种基因组合的孔雀鱼。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  1.限性遗传基因×显性遗传基因＝[A]×[B]　如：美社莎马赛克等<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  2.限性遗传基因×伴性遗传基因＝[A]×[C]　如：白金德系黄尾礼服等<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  3.隐性遗传基因×限性遗传基因×显性遗传基因＝[E]×[A]×[B]如：白子美社莎草尾等<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  4.隐性遗传基因×限性遗传基因×伴性遗传基因＝[E]×[A]×[C]如：真红眼*本蓝红尾礼服等<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  5.1、2、3、4的组合再加上体色以外的隐性遗传基因[D]如：白子马特利蛇王黄尾<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  要做出孔雀鱼的衍生种，一般的方式都是利用公鱼的限性遗传基因再配合母鱼的隐性、显性、伴性遗传基因，所以若能明确了解用于做出衍生种的公母鱼个体带的限性、伴性、隐性、显性遗传基因到底位于体染色体或性染色体的XY那一方，如此才能在最短的时间内固定衍生种。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  若要作出系统固定的衍生种孔雀鱼，必须以带限性或显性遗传基因的公鱼为基准重复交配，若要更进一步让作出的衍生种孔雀鱼品种安定（体态优美）及固定，就必须重复淘汰同胎母鱼３～４次，并且要重复用与亲代母鱼同一品种的母鱼来当种鱼。<br>
&nbsp;&nbsp;&nbsp;  P A(公)×B(母)=F1 F1(公)×B(母)=F1<br>
&nbsp;&nbsp;&nbsp;  ↓ ↑ ↓<br>
&nbsp;&nbsp;&nbsp;  F1(公)×B(母)=F1 F1(公)×B(母)=F<br>
&nbsp;&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  因目标品种及种亲的不同，交配次数也有差异。以下是笔者为了让作出品种的表现形及固定率稳定，在AF JAPAN GP-FM 采行的交配法。<br>
<table cellspacing="1" cellpadding="2" width="80%" align="center" border="1">
    <tbody>
        <tr>
            <td><font class="headline2">公鱼品种(A)</font></td>
            <td><font class="headline2">母鱼品种(B)</font></td>
            <td><font class="headline2">交配次数</font></td>
            <td><font class="headline2">作出品种(C)</font></td>
        </tr>
        <tr>
            <td><font class="headline2">霓红礼服(伴隐)</font></td>
            <td><font class="headline2">德系黄尾礼服(显伴) </font></td>
            <td><font class="headline2">1次</font></td>
            <td><font class="headline2">天空蓝礼服</font></td>
        </tr>
        <tr>
            <td><font class="headline2">蓝草尾(显性) </font></td>
            <td><font class="headline2">德系黄尾礼服(显伴)</font></td>
            <td><font class="headline2">2次</font></td>
            <td><font class="headline2">天空蓝礼服</font></td>
        </tr>
        <tr>
            <td><font class="headline2">蛇王(限性)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></td>
            <td><font class="headline2">马赛克(显性)</font></td>
            <td><font class="headline2">2次</font></td>
            <td><font class="headline2">马赛克蛇王</font></td>
        </tr>
        <tr>
            <td><font class="headline2">蛇王(限性)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></td>
            <td><font class="headline2">白子红尾(显伴)</font></td>
            <td><font class="headline2">3次</font></td>
            <td><font class="headline2">白子红尾蛇王</font></td>
        </tr>
        <tr>
            <td><font class="headline2">古老品系扇尾(限性)</font></td>
            <td><font class="headline2">马赛克(显性)</font></td>
            <td><font class="headline2">2次</font></td>
            <td><font class="headline2">古老品系马赛克</font></td>
        </tr>
        <tr>
            <td><font class="headline2">珊瑚双剑(限性) </font></td>
            <td><font class="headline2">马赛克(显性)</font></td>
            <td><font class="headline2">3次</font></td>
            <td><font class="headline2"> 珊瑚马赛克</font></td>
        </tr>
        <tr>
            <td><font class="headline2">珊瑚双剑(限性) </font></td>
            <td><font class="headline2">白子红尾(显伴)</font></td>
            <td><font class="headline2">2次</font></td>
            <td><font class="headline2">白子珊瑚红尾</font></td>
        </tr>
        <tr>
            <td><font class="headline2">日本蓝芦圣德(限性)</font></td>
            <td><font class="headline2">马赛克(显性)</font></td>
            <td><font class="headline2">3次</font></td>
            <td><font class="headline2">日本蓝马赛克</font></td>
        </tr>
        <tr>
            <td><font class="headline2">日本蓝芦圣德(限性)</font></td>
            <td><font class="headline2">蓝草尾(显性)</font></td>
            <td><font class="headline2">4次</font></td>
            <td><font class="headline2">日本蓝蓝草尾</font></td>
        </tr>
        <tr>
            <td><font class="headline2">白金双剑(限性)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></td>
            <td><font class="headline2">马赛克(显性)</font></td>
            <td><font class="headline2">3次</font></td>
            <td><font class="headline2">白金马赛克</font></td>
        </tr>
        <tr>
            <td><font class="headline2">白金双剑(限性)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></td>
            <td><font class="headline2">德系黄尾礼服(显伴)</font></td>
            <td><font class="headline2"> 4次</font></td>
            <td><font class="headline2">白金德系黄尾礼服</font></td>
        </tr>
        <tr>
            <td><font class="headline2">金属蛇王(限性)</font></td>
            <td><font class="headline2">马赛克(显性)</font></td>
            <td><font class="headline2">2次</font></td>
            <td><font class="headline2">金属莫斯科</font></td>
        </tr>
        <tr>
            <td><font class="headline2">全金属马赛克(限性)</font></td>
            <td><font class="headline2">蓝草尾(显性)</font></td>
            <td><font class="headline2">4次</font></td>
            <td><font class="headline2">全金属蓝草尾</font></td>
        </tr>
    </tbody>
</table>
<br>
<font class="headline2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  接下来就半蓝化种（不完全显性遗传基因＝[Bb]）的遗传基因及其品种做简单说明，不完全显性基因就是表现蓝草尾或蓝马赛克等蓝色系的基因。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  [BB]＝普通种，[Bb]＝普通种以蓝色表现。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  也就是说蓝化种的遗传基因变成异质接合体[Bb]时，就形成不完全显性基因，但白子[aa]或黄化体[gg]等若呈异质接合体[Aa]或[Gg]的基因型态，其个体的表现与普通种无异。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  [AA]＝[Aa]　[GG]＝[Gg]　其表现形不变<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  因此天空蓝礼服生出红尾礼服的个体或蓝草尾生出红色系的草尾是很正常的，因为这些[○○○蓝○○○]都是不完全显性基因的品种。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  再者，日本蓝的蓝色并不属于不完全显性遗传基因。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  日本蓝马赛克[BBXYJ]　(Japan blue)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  日本蓝蓝马赛克[BbXYJ]　(Japan blue)<br>
&nbsp;&nbsp;&nbsp;  笔者已确实蓝化种的遗传基因除了刚刚解说的「不完全显性遗传基因」还有一种是现今的野生种孔雀所带「隐性遗传基因」[Bb]，为无法表现出蓝色系的蓝化种孔雀鱼。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  在日本，日本国产孔雀的爱好家大约有一万人之多，而贩卖日本国产孔雀的水族馆大约有500～700家，其中可以称得上是专卖店的约有10家，这些爱好家乃至于专卖店的老板对本月号讲解的内容能100%了解的人，除了笔者及AF专业工作人员外，大概不到10人，因此笔者及几个饲养者也正在为解开孔雀的遗传之谜而努力。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  前阵子，新加坡某个渔场的负责人到笔者店里互相交换了很多意见，最令笔者惊讶的是新加坡的繁殖者一点遗传的知识都没有，还能产出那么大量的孔雀鱼，可见得孔雀鱼是生命力很强的热带鱼。在日本，也有些饲养者虽然不懂遗传学，偶而也能做出优良的孔雀鱼，但是却无法作出品质安定的孔雀鱼。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  笔者想传达给读者的是，只要了解基本概念对于孔雀鱼的遗传并不是想象那么难的事，希望各位孔雀鱼爱好者能理解遗传学，进而能做出体态优良安定的台湾孔雀鱼，也希望台湾能出现像笔者一样致力于了解孔雀遗传基因的人，笔者会很乐于与有志的爱好家，互相交换关于遗传及作出新品种的意见。</font></p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/yueqiangsh/blog/category/%C7%A7%D7%CB%CD%F2%CC%AC%BF%D7%C8%B8%D3%E3">千姿万态孔雀鱼</a>&nbsp;<a href="http://hi.baidu.com/yueqiangsh/blog/item/0cb7593387cc0649ad4b5f10.html#comment">查看评论</a>]]></description>
        <pubDate>2009-11-29  02:14</pubDate>
        <category><![CDATA[千姿万态孔雀鱼]]></category>
        <author><![CDATA[yueqiangsh]]></author>
		<guid>http://hi.baidu.com/yueqiangsh/blog/item/0cb7593387cc0649ad4b5f10.html</guid>
</item>

<item>
        <title><![CDATA[wininet.dll函数库：不会过期的cookie]]></title>
        <link><![CDATA[http://hi.baidu.com/yueqiangsh/blog/item/f7281b50656e4264853524a7.html]]></link>
        <description><![CDATA[
		
		<p>wininet.dll中包含很多win32下和网络有关的函数,包括internet,ftp等，下面演示一个IE下不过期的cookie。 比如csdn的登陆信息可以保存2个星期，你在登陆后把系统时间改为2周后，登陆信息就失效了,使用InternetSetCookie可以自己设置过期日期。 首先在IE中登陆，登陆时选择信息保存2周，然后运行如下代码，运行之后你可以把日期调整到2010年看效果：</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools"><a href="http://blog.csdn.net/jinjazz/archive/2008/07/11/2638952.aspx#">view plain</a><a href="http://blog.csdn.net/jinjazz/archive/2008/07/11/2638952.aspx#">copy to clipboard</a><a href="http://blog.csdn.net/jinjazz/archive/2008/07/11/2638952.aspx#">print</a><a href="http://blog.csdn.net/jinjazz/archive/2008/07/11/2638952.aspx#">?</a></div>
</div>
<ol class="dp-c">
    <li class="alt"><span><span class="keyword">using</span><span> System; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">using</span><span> System.Text; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">using</span><span> System.Runtime.InteropServices; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span class="keyword">namespace</span><span> ConsoleApplication1 &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>{ &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">class</span><span> Program &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/// &lt;summary&gt; </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/// 设置cookie </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/// &lt;/summary&gt; </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [DllImport(</span><span class="string">&quot;wininet.dll&quot;</span><span>, CharSet = CharSet.Auto, SetLastError = </span><span class="keyword">true</span><span>)] &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span> </span><span class="keyword">static</span><span> </span><span class="keyword">extern</span><span> </span><span class="keyword">bool</span><span> InternetSetCookie(</span><span class="keyword">string</span><span> lpszUrlName, </span><span class="keyword">string</span><span> lbszCookieName, </span><span class="keyword">string</span><span> lpszCookieData); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/// &lt;summary&gt; </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/// 获取cookie </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/// &lt;/summary&gt; </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [DllImport(</span><span class="string">&quot;wininet.dll&quot;</span><span>, CharSet = CharSet.Auto, SetLastError = </span><span class="keyword">true</span><span>)] &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span> </span><span class="keyword">static</span><span> </span><span class="keyword">extern</span><span> </span><span class="keyword">bool</span><span> InternetGetCookie( &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">string</span><span> url, </span><span class="keyword">string</span><span> name, StringBuilder data, </span><span class="keyword">ref</span><span> </span><span class="keyword">int</span><span> dataSize); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">static</span><span> </span><span class="keyword">void</span><span> Main(</span><span class="keyword">string</span><span>[] args) &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//获取旧的 </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StringBuilder cookie = </span><span class="keyword">new</span><span> StringBuilder(</span><span class="keyword">new</span><span> String(</span><span class="string">' '</span><span>,2048)); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">int</span><span> datasize = cookie.Length; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">bool</span><span> b= InternetGetCookie(</span><span class="string">&quot;http://community.csdn.net&quot;</span><span>, </span><span class="keyword">null</span><span>, cookie, </span><span class="keyword">ref</span><span> datasize); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//删除旧的 </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">foreach</span><span> (</span><span class="keyword">string</span><span> fileName </span><span class="keyword">in</span><span> System.IO.Directory.GetFiles(System.Environment.GetFolderPath(Environment.SpecialFolder.Cookies))) &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span> (fileName.ToLower().IndexOf(</span><span class="string">&quot;csdn&quot;</span><span>) &gt; 0) &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.IO.File.Delete(</span><span class="string">&quot;csdn&quot;</span><span>); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//生成新的 </span><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">foreach</span><span> (</span><span class="keyword">string</span><span> c </span><span class="keyword">in</span><span> cookie.ToString().Split(</span><span class="string">';'</span><span>)) &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">string</span><span>[] item = c.Split(</span><span class="string">'='</span><span>); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">string</span><span> name = item[0]; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">string</span><span> value = item[1] + </span><span class="string">&quot;;expires=Sun,22-Feb-2099 00:00:00 GMT&quot;</span><span>; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; InternetSetCookie(</span><span class="string">&quot;http://community.csdn.net&quot;</span><span>,name,value); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; InternetSetCookie(</span><span class="string">&quot;http://forum.csdn.net&quot;</span><span>, name, value); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; InternetSetCookie(</span><span class="string">&quot;http://webim.csdn.net&quot;</span><span>, name, value); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>}&nbsp;&nbsp;</span></li>
</ol>
</div> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/yueqiangsh/blog/category/c%23">c#</a>&nbsp;<a href="http://hi.baidu.com/yueqiangsh/blog/item/f7281b50656e4264853524a7.html#comment">查看评论</a>]]></description>
        <pubDate>2008-09-11  17:56</pubDate>
        <category><![CDATA[c#]]></category>
        <author><![CDATA[yueqiangsh]]></author>
		<guid>http://hi.baidu.com/yueqiangsh/blog/item/f7281b50656e4264853524a7.html</guid>
</item>

<item>
        <title><![CDATA[复杂背景的验证码识别破解，以Discuz的动画验证码为例]]></title>
        <link><![CDATA[http://hi.baidu.com/yueqiangsh/blog/item/4223074419a38f4a510ffe17.html]]></link>
        <description><![CDATA[
		
		<div class="entry">
<p>对于比较复杂的验证码，比如DZ论坛最新的验证码，处理起来相对麻烦一些，但是原理还是和普通的识别一样的，无非多了个背景处理的方案，看如下对DZ论坛的验证码的识别的思路</p>
<p>//power by www.crazycoder.cn</p>
<p><img class="alignnone size-full wp-image-36" title="test1" height="60" src="http://www.crazycoder.cn/WebFiles/20088/9bb25c6a-d23d-4d7e-8c80-40208d21d6b6.png" width="150"></p>
<p>首先我们要去除它的背景，对于这样稍微复杂的背景，用过去的方法很难做到，上图的例子还不是很明显，我发现很多图片背景色和字母色近似，而且字母颜色是不断变化的，背景也是不断变化的</p>
<p><img class="alignnone size-medium wp-image-37" title="87ew-1771021430" height="60" src="http://www.crazycoder.cn/WebFiles/20088/52392d77-0772-4507-9d54-280190ee1d5b.png" width="150"><img class="alignnone size-medium wp-image-38" title="3tft-1071601132" height="60" src="http://www.crazycoder.cn/WebFiles/20088/7c18a910-987f-446d-a7fe-285045a5fe01.png" width="150"><img class="alignnone size-medium wp-image-39" title="7hbg-1528746287" height="60" src="http://www.crazycoder.cn/WebFiles/20088/8b3fa0d7-b75e-4530-8151-f63b36291a66.png" width="150"><img class="alignnone size-medium wp-image-40" title="8p3f-2085326489" height="60" src="http://www.crazycoder.cn/WebFiles/20088/be306654-5f8a-4b65-8b59-8c53c3c25c87.png" width="150"><img class="alignnone size-medium wp-image-41" title="9x4x-1309785358" height="60" src="http://www.crazycoder.cn/WebFiles/20088/7ee38c1d-2a6e-46e8-90a7-6aa530d82a3f.png" width="150"></p>
<p>那我初始的想法是找到图片中使用颜色最多的方法，于是我们用HSL表示各点颜色，接着进行统计，得到最大的几个峰值，这里便是图片中几个最丰富的颜色的L值得累加值</p>
<p><img class="alignnone size-medium wp-image-42" title="四个峰值分别代表4个突出的颜色" height="148" src="http://www.crazycoder.cn/WebFiles/20088/d1d93e62-de55-4c94-adaf-874f78486c64.png" width="253"></p>
<p>其余的都可以认为是噪音，我们对每个峰值进行分割，得到如下图片</p>
<p><img class="alignnone size-medium wp-image-43" title="颜色分割后的图片" height="260" src="http://www.crazycoder.cn/WebFiles/20088/cadcb921-13d2-4c73-bebb-984fa2285e27.png" width="160"></p>
<p>你看这样就把单个颜色图片分割出来了，接下来就是找到图片中除去黑色和白色后的图片</p>
<p><img class="alignnone size-medium wp-image-44" title="hsl2" height="258" src="http://www.crazycoder.cn/WebFiles/20088/dca4e442-5484-4ecd-8459-005cbbf95515.png" width="157"></p>
<p>然后进行灰化处理，阀值处理，降噪，得到</p>
<p><img class="alignnone size-medium wp-image-45" title="hsl3" height="251" src="http://www.crazycoder.cn/WebFiles/20088/55741060-4f54-4d72-88ad-a1ddbd67f2e7.png" width="150"></p>
<p>接着根据边界检测出来的最左侧x位置，来排序字母顺序</p>
<p><img class="alignnone size-medium wp-image-46" title="hsl4" height="123" src="http://www.crazycoder.cn/WebFiles/20088/0c648cf3-3a64-45b4-818e-5df514090cbd.png" width="33"></p>
<p>接下来的事情就轻车熟路了，把图片转成标准模板，通过少量学习就达到了95%以上的识别率</p>
<p>c:15 j:8 8:7 t:9 9:4 x:7 4:6 2:4 h:7 f:8 e:18 b:5 y:3 k:4 w:3 g:5 3:5 7:6 r:2 m:3 q:4 v:2 p:3 6:2<br>
以上数据表示 c学习15次 j学习8次…</p>
<p><img class="alignnone size-full wp-image-47" title="hsl5" height="670" src="http://www.crazycoder.cn/WebFiles/20088/ad664f1c-186f-4f0f-8d96-9ca45efb02b8.png" width="365"></p>
<p>只要字符不粘连，大部分验证码干扰技术都是可以有办法，所以为什么google验证码看起来很简单，但是没有人能够很好的破解它得原因。</p>
<p>补充，<br>
rise在留言中发现有一些字符加入杂点的问题，由于这种验证码不是很普遍，稍微做了研究<br>
<img class="alignnone size-full wp-image-66" title="有杂点的字符" height="60" src="http://www.crazycoder.cn/WebFiles/20088/989b0a98-db70-4641-87fd-414ac096fc42.png" width="150"></p>
<p>CY3E 这个图片3字中有杂点，其他没有，按照文章中介绍的办法，怎么知道这个3不是像其他颜色杂点一样的图片呢？<br>
<img class="alignnone size-full wp-image-65" title="字符中杂点1" height="112" src="http://www.crazycoder.cn/WebFiles/20088/476e611a-2105-4f7b-b167-8f38eb7f368f.png" width="499"><br>
我觉得需要加入一个步骤，就是对每次过滤颜色生成出来的图片，进行填充<br>
找到3的杂点原图：<br>
<img class="alignnone size-full wp-image-67" title="3的杂点提出了" height="60" src="http://www.crazycoder.cn/WebFiles/20088/0fdcf868-dda9-4ea6-b460-cff6e66f680a.png" width="150"><br>
然后我们进行算法填充<br>
<img class="alignnone size-full wp-image-68" title="填充之后的3" src="http://www.crazycoder.cn/WebFiles/20088/b640af2d-cc7a-4de0-b6c0-d048a384f94f.bmp"></p>
<p>这个图片与其他全部是杂点的图片之间的差别进行过滤，我考虑可以通过以下方法：<br>
1、连贯点的宽度<br>
2、连贯点的个数<br>
这样剩下的就只剩下CY3E的过滤后的图片</p>
<p>至于字符倾斜的问题，我觉得完全可以在机器学习过程中，我们自己旋转正在学习的图片一定角度，例如从-10到+10度，只不过这样的学习库会大一些，但是就10个数字的验证码来说，这点性能损失应该可以忽略不计。</p>
</div> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/yueqiangsh/blog/category/c%23">c#</a>&nbsp;<a href="http://hi.baidu.com/yueqiangsh/blog/item/4223074419a38f4a510ffe17.html#comment">查看评论</a>]]></description>
        <pubDate>2008-09-10  15:40</pubDate>
        <category><![CDATA[c#]]></category>
        <author><![CDATA[yueqiangsh]]></author>
		<guid>http://hi.baidu.com/yueqiangsh/blog/item/4223074419a38f4a510ffe17.html</guid>
</item>

<item>
        <title><![CDATA[验证码识别，最新Discuz验证码和PhpWind验证码的识别]]></title>
        <link><![CDATA[http://hi.baidu.com/yueqiangsh/blog/item/e508172b5c5fa0fce6cd400b.html]]></link>
        <description><![CDATA[
		
		<p>需验证码识别，对常用论坛的验证码识别的时候大家用来做群发是最合适不过了。一个非常有意义的参考</p>
<p>注：非crazycoder原装，文章是转载的，原文出处不祥了，很多地方都有，找不到原出处了</p>
<p>验证码(captcha)是伴随自动提交程序(spam)的出现而出现的。现在各种论坛、博客、投票等程序都带有验证码功能。大部分验证码都比较容 易识别，只需要简单对照一下特征码就可以得到百分之百准确的结果。也有稍微复杂一点的，比如phpwind和discuz的验证码。</p>
<p>前段时间做了phpwind和discuz的验证码识别，phpwind6.0以前的验证码和discuz最新的验证码如果在不改变后台验证码配置的情况下，识别正确率几乎可以达到100%，现在跟大家分享一下识别方法。</p>
<p>验证码识别一般分为以下几个步骤：</p>
<ol>
    <li>取出字模</li>
    <li>二值化</li>
    <li>计算特征</li>
    <li>对照样本</li>
</ol>
<p>各种验证码在具体的步骤上操作会有所不同。</p>
<p>我的程序是用VC++写的，这里不贴详细代码了，只讲识别方法。</p>
<p><img src="http://www.crazycoder.cn/WebFiles/20088/1db6919b-18fb-4ac3-a0ea-c3e569c3c280.jpg"></p>
<p>先说phpwind验证码的识别方法：</p>
<p>具体分为这几步：</p>
<ol>
    <li>把图片横向等宽分为4块</li>
    <li>找出每块图片中分布最多的一种颜色</li>
    <li>与已有样本比较得出结果</li>
</ol>
<p>因为这个验证码的字符分布几乎是等宽的，所以我们首先把图片切为4份，这样方便取出每一个字符。分成4块后，通过每一块中的颜色值对比可以很快得到 字符的特征。因为每一块中字符的颜色值比杂点颜色值要多很多，而且字符是纯色的，所以只要统计出最多的一种颜色，然后去除其它颜色就可以得到只有字符的干 净图片。然后对图片二值化（即构造一个二维数组对应图片上有颜色的点，把有颜色的点的数组值置为1，无颜色的置为0），与样本比对即可得到字符。当然首先 要得到样本。样本的制作与上面分析的步骤一致。经过测试，上面这种方法的识别率是100%的，不会有差错。</p>
<p><img src="http://www.crazycoder.cn/WebFiles/20088/a17aa90c-af6f-4d57-8a24-77cfbd7e2dbe.jpg"></p>
<p>discuz的验证码识别较之phpwind要稍难一点。因为图片带有不太容易去掉的背景。字符也不是单纯的字符，有阴影边框，而且不等宽，位置不确定。我们具体分为以下几步：</p>
<ol>
    <li>去除背景色</li>
    <li>分出每一个字符区域</li>
    <li>用轮廓法（berg）得到特征码</li>
    <li>与样本比较得出结果</li>
</ol>
<p>这个背景色是渐变的而字符的颜色是不变的。首先去除对角线上找不到相同颜色的点，然后统计出每一种颜色占用的区域的宽度和高度。去除占用区域高度小 于图片总高度1/5或大于图片总高度2/3的点，因为一个字符不可能达到这种尺寸。再去除密度（即颜色点数/颜色所占的区域宽高的积）小于15%的点。剩 下的就只有干净的字符的颜色点了。</p>
<p><img src="http://www.crazycoder.cn/WebFiles/20088/65f8a284-ed2a-4867-8272-65eb9ced807f.jpg"></p>
<p>把这些点分为4份。（分割的办法为从左到右用一条竖直的线扫描，扫描线经过的连续区域就是字符区域。）分成4个字符块后，我们就可以对每一个字符块进行轮廓特征取值。</p>
<p>什么是轮廓法？我是由berg（berg是网易社区的牛人，对我帮助不少）那里获知验证码识别中的轮廓法。即将一个字模点阵，以四条直线由上下左右 4个方向向字符中心扫描，遇到点即停下，把每一条线通过的路径长度记下。然后以比路径长度和其它一些相关的参数得到正确的字符。</p>
<p>我稍微变换了一下轮廓法。即把4个方向上的路径长度变为波的形式。波峰记为1，波谷记为0，最后得到一个由1和0组成的特征串，与样本串比较即可得 到匹配结果。有几个字符，如V和Y、H和M、4和6等，得到的特征串可能是一样的，这样需要通过其它的一些参数来辅助得到结果。</p>
<p><font face="Verdana">下面是我计算的特征串和字符的对照样本：</font><br>
<font face="Verdana">10-10-10-10- X <br>
1-1010-1-10101- W <br>
-1010--- W <br>
1--1-101- T <br>
-1-1010-10- R <br>
--10-10- R <br>
101-101-1010-1010- Q <br>
-1-101-1- P <br>
--1-1- P <br>
-10--1010- M <br>
-10-10-10- K <br>
10-10-1-1- J <br>
10-10--- J <br>
101-101-1010-10- G <br>
--101-1- F <br>
--1010-- E <br>
101-101-10101-101- C <br>
101-10-10-10- C <br>
-1-10101-1- B <br>
---- B <br>
10101-101-101-101- 9 <br>
1---10- 9 <br>
-101--- 8 <br>
10--1-101- 7 <br>
-1-10-- 6 <br>
1-101-10-101- 4 <br>
1010---- 3 <br>
1010-101-1010-- 2 <br>
10--10-- 2 <br>
//below is equivocal<br>
1-10-1-101- V  //Y<br>
10-10-10-- G  //Q<br>
-10--10- H  //M<br>
10101-101-10101-101- 3  //8<br>
101-101-101-101- 4  //6</font></p>
<p> </p>
<p>上面这种方法，对discuz的默认验证码，即如图所示的验证码识别正确率为100%</p>
<p> </p>
<p>上面对phpwind和discuz的验证码识别方法均没有用到高级的算法，更加没有用到人工智能的知识，不免有点遗憾，不过准确率相当高，也容易看懂。</p>
<p>在实际应用中可能遇到一些问题，比如discuz验证码可以在后台设为gif图片格式。如何把gif动画中那一个字符帧转为bmp图片呢？下面是VC里面的方法：</p>
<p><font face="Verdana">BOOL CCaptchaBreak::Gif2Bmp(CString &amp;sPath)<br>
{<br>
 ULONG_PTR&nbsp;&nbsp;  GdippToken;&nbsp;&nbsp;  <br>
 GdiplusStartupInput&nbsp;&nbsp;  GdippStart;&nbsp;&nbsp;  <br>
 GdiplusStartup(&amp;GdippToken,&amp;GdippStart,0);<br>
 BSTR bsTemp = sPath.AllocSysString();<br>
 Bitmap&nbsp;&nbsp;  bmp(bsTemp);<br>
 ::SysFreeString(bsTemp);</font></p>
<p><font face="Verdana"> int&nbsp;&nbsp;  FrameCount,FramePos,size,pause;&nbsp;&nbsp;  <br>
 PropertyItem*&nbsp;&nbsp;  pPropItem;&nbsp;&nbsp;  <br>
 GUID&nbsp;&nbsp;  pageGuid;&nbsp;&nbsp;  <br>
 GUID*&nbsp;&nbsp;  pDimID;&nbsp;&nbsp;  <br>
 UINT&nbsp;&nbsp;  count;&nbsp;&nbsp;  </font></p>
<p><font face="Verdana"> count=bmp.GetFrameDimensionsCount();&nbsp;&nbsp;  </font></p>
<p><font face="Verdana"> pDimID=new GUID[count];&nbsp;&nbsp;  </font></p>
<p><font face="Verdana"> bmp.GetFrameDimensionsList(pDimID,count);&nbsp;&nbsp;  <br>
 FrameCount=bmp.GetFrameCount(&amp;pDimID[0]);</font></p>
<p><font face="Verdana"> if (1==FrameCount) //if is bmp then exit<br>
 {<br>
&nbsp;&nbsp; delete[]pDimID;&nbsp;&nbsp;  <br>
&nbsp;&nbsp; return FALSE;<br>
 }</font></p>
<p><font face="Verdana"> size=bmp.GetPropertyItemSize(PropertyTagFrameDelay);&nbsp;&nbsp;  <br>
 pPropItem=(PropertyItem*)malloc(size);&nbsp;&nbsp;  </font></p>
<p><font face="Verdana"> bmp.GetPropertyItem(PropertyTagFrameDelay,size,pPropItem);&nbsp;&nbsp;  <br>
 delete[]pDimID;&nbsp;&nbsp;  </font></p>
<p><font face="Verdana"> pageGuid=FrameDimensionTime;&nbsp;&nbsp;  <br>
 FramePos=0; </font></p>
<p><font face="Verdana"> int iFontFramePos = 0;<br>
 int iMaxPause = 0;<br>
 while (FramePos</font></p>
<p><font face="Verdana"> return TRUE;<br>
}</font></p>
<p><font face="Verdana">BOOL CCaptchaBreak::GetEncoderClsid(const WCHAR* format, CLSID* pClsid)<br>
{<br>
 UINT  num = 0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  // number of image encoders<br>
 UINT  size = 0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  // size of the image encoder array in bytes</font></p>
<p><font face="Verdana"> ImageCodecInfo* pImageCodecInfo = NULL;</font></p>
<p><font face="Verdana"> GetImageEncodersSize(&amp;num, &amp;size);<br>
 if(size == 0)<br>
&nbsp;&nbsp; return FALSE;  </font></p>
<p><font face="Verdana"> pImageCodecInfo = (ImageCodecInfo*)(malloc(size));<br>
 if(pImageCodecInfo == NULL)<br>
&nbsp;&nbsp; return FALSE;  </font></p>
<p><font face="Verdana"> GetImageEncoders(num, size, pImageCodecInfo);</font></p>
<p><font face="Verdana"> for(UINT j = 0; j &lt; num; ++j)<br>
 {<br>
&nbsp;&nbsp; if( wcscmp(pImageCodecInfo[j].MimeType, format) == 0 )<br>
&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp; *pClsid = pImageCodecInfo[j].Clsid;<br>
&nbsp;&nbsp;&nbsp; free(pImageCodecInfo);<br>
&nbsp;&nbsp;&nbsp; return TRUE;  // Success<br>
&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;  <br>
 }</font></p>
<p><font face="Verdana"> free(pImageCodecInfo);<br>
 return FALSE;  <br>
}</font></p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/yueqiangsh/blog/category/c%23">c#</a>&nbsp;<a href="http://hi.baidu.com/yueqiangsh/blog/item/e508172b5c5fa0fce6cd400b.html#comment">查看评论</a>]]></description>
        <pubDate>2008-09-10  15:34</pubDate>
        <category><![CDATA[c#]]></category>
        <author><![CDATA[yueqiangsh]]></author>
		<guid>http://hi.baidu.com/yueqiangsh/blog/item/e508172b5c5fa0fce6cd400b.html</guid>
</item>

<item>
        <title><![CDATA[ajax验证用户名是否存在]]></title>
        <link><![CDATA[http://hi.baidu.com/yueqiangsh/blog/item/abcd67114fa291c3a7ef3f00.html]]></link>
        <description><![CDATA[
		
		<p>LoginValidate.aspx</p>
<p>&lt;%@ Page Language=&quot;C#&quot; AutoEventWireup=&quot;true&quot; CodeFile=&quot;LoginValidate.aspx.cs&quot; Inherits=&quot;Admin_LoginValidate&quot; %&gt;</p>
<p>&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><font color="#1d4944">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</font></a>&quot;&gt;<br>
&lt;html xmlns=&quot;<a href="http://www.w3.org/1999/xhtml"><font color="#1d4944">http://www.w3.org/1999/xhtml</font></a>&quot;&gt;<br>
&lt;head runat=&quot;server&quot;&gt;<br>
&nbsp;&nbsp;&nbsp;  &lt;title&gt;验证用户名是否存在&lt;/title&gt;</p>
<p>&nbsp;&nbsp;&nbsp;  &lt;script type=&quot;text/javascript&quot;&gt;<br>
var xmlHttp;<br>
function createXMLHttpRequest()<br>
{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  if(window.ActiveXObject)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  xmlHttp = new ActiveXObject(&quot;Microsoft.XMLHTTP&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  else if(window.XMLHttpRequest)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  xmlHttp = new XMLHttpRequest();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
}<br>
//处理方法<br>
function CheckUserName()<br>
{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  createXMLHttpRequest();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  var url= &quot;../ashx/LoginValidate.ashx?username=&quot;+document.getElementById(&quot;username&quot;).value;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  xmlHttp.open(&quot;GET&quot;,url,true);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  xmlHttp.onreadystatechange=ShowResult;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  xmlHttp.send(null);<br>
&nbsp;&nbsp;&nbsp;&nbsp;  // document.getElementById(&quot;Msg&quot;).innerHTML='';<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br>
}<br>
//回调方法<br>
function ShowResult()<br>
{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  if(xmlHttp.readyState==4) <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  if (xmlHttp.status == 200)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  alert(&quot;Server is done!&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  alert(xmlHttp.responseText);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  document.getElementById(&quot;Msg&quot;).innerHTML=xmlHttp.responseText;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  else if (xmlHttp.status == 404)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  alert(&quot;Request URL does not exist&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  else if (xmlHttp.status == 403) <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  alert(&quot;Access&nbsp;&nbsp;  or sql&nbsp;&nbsp;  denied.&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  else<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  alert(&quot;Error: status code is &quot; + xmlHttp.status);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;&nbsp;  <br>
}<br>
&nbsp;&nbsp;&nbsp;  &lt;/script&gt;</p>
<p>&lt;/head&gt;<br>
&lt;body&gt;<br>
&nbsp;&nbsp;&nbsp;  &lt;form id=&quot;form1&quot; runat=&quot;server&quot;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;div&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;h1 align=&quot;center&quot;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  验证用户名是否存在&lt;/h1&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;table align=&quot;center&quot; style=&quot;width: 487px&quot;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;tr&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;td style=&quot;width: 70px&quot;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  用户名：&lt;/td&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;td style=&quot;width: 231px&quot;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;input id=&quot;username&quot; onchange=&quot;CheckUserName();&quot; type=&quot;text&quot; /&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;input id=&quot;Button1&quot; type=&quot;button&quot; value=&quot;button&quot; onclick=&quot;CheckUserName();&quot; /&gt;&lt;/td&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;td id=&quot;Msg1&quot;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;asp:Label ID=&quot;Msg&quot; runat=&quot;server&quot; ForeColor=&quot;Blue&quot;&gt;&lt;/asp:Label&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;/td&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;/tr&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;tr&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;td style=&quot;width: 70px&quot;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;/td&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;td style=&quot;width: 231px&quot;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;/td&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;td&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;/td&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;/tr&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;/table&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &lt;/div&gt;<br>
&nbsp;&nbsp;&nbsp;  &lt;/form&gt;<br>
&lt;/body&gt;<br>
&lt;/html&gt;</p>
<p>LoginValidate.ashx</p>
<p>&lt;%@ WebHandler Language=&quot;C#&quot; Class=&quot;LoginValidate&quot; %&gt;</p>
<p>using System;<br>
using System.Web;<br>
using System.Data;<br>
using System.Data.SqlClient;<br>
using System.Configuration;</p>
<p>public class LoginValidate : IHttpHandler {<br>
&nbsp;&nbsp;&nbsp;  <br>
&nbsp;&nbsp;&nbsp;  public void ProcessRequest (HttpContext context) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //context.Response.ContentType = &quot;text/plain&quot;;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //context.Response.Write(&quot;Hello World&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  context.Response.ContentType = &quot;text/plain&quot;;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  string username = context.Request.QueryString[&quot;username&quot;].ToString();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  string strSQL = &quot;select username from users where username='&quot; + username + &quot;'&quot;;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  if (ReDataSet(strSQL).Tables[0].Rows.Count &gt; 0)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  context.Response.Write(&quot;该用户已经有人使用！&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  else<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  if (username.Trim().Length&gt;int.Parse(&quot;0&quot;))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  context.Response.Write(&quot;恭喜你！&quot; + username + &quot;可以使用！&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<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;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  context.Response.Write(&quot;请您输入用户名！&quot;);&nbsp;&nbsp;  <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  System.Threading.Thread.Sleep(1000);</p>
<p>&nbsp;&nbsp;&nbsp;  }</p>
<p>&nbsp;&nbsp;&nbsp;  //数据库连接字符串<br>
&nbsp;&nbsp;&nbsp;  public static string strCon = &quot;Data Source=.;database=test;uid=sa;pwd=;&quot;;</p>
<p>&nbsp;&nbsp;&nbsp;  /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;  /// 执行SQL语句，返回DataSet<br>
&nbsp;&nbsp;&nbsp;  /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;  /// &lt;param name=&quot;strSQL&quot;&gt;&lt;/param&gt;<br>
&nbsp;&nbsp;&nbsp;  /// &lt;returns&gt;&lt;/returns&gt;<br>
&nbsp;&nbsp;&nbsp;  public DataSet ReDataSet(string strSQL)<br>
&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  // SqlConnection con = new SqlConnection(strCon);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  using (SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings[&quot;ConnectionString&quot;]))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  try<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  con.Open();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  SqlDataAdapter da = new SqlDataAdapter(strSQL, con);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  DataSet ds = new DataSet();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  da.Fill(ds);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  return ds;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  catch (Exception ex)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  throw new Exception(ex.Message);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  finally<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  con.Close();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;&nbsp;  }</p>
<p>&nbsp;&nbsp;&nbsp;  /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;  /// 不重复调用<br>
&nbsp;&nbsp;&nbsp;  /// &lt;/summary&gt;<br>
<br>
&nbsp;&nbsp;&nbsp;  public bool IsReusable {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  get {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  return false;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;&nbsp;  }</p>
<p>}</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/yueqiangsh/blog/category/Ajax">Ajax</a>&nbsp;<a href="http://hi.baidu.com/yueqiangsh/blog/item/abcd67114fa291c3a7ef3f00.html#comment">查看评论</a>]]></description>
        <pubDate>2008-07-06  16:36</pubDate>
        <category><![CDATA[Ajax]]></category>
        <author><![CDATA[yueqiangsh]]></author>
		<guid>http://hi.baidu.com/yueqiangsh/blog/item/abcd67114fa291c3a7ef3f00.html</guid>
</item>

<item>
        <title><![CDATA[ASP.net防SQL注入]]></title>
        <link><![CDATA[http://hi.baidu.com/yueqiangsh/blog/item/786a5ab42ecbc9768bd4b259.html]]></link>
        <description><![CDATA[
		
		<p>一，验证方法</p>
<p> /**//// &lt;summary&gt;<br>
  ///SQL注入过滤<br>
  /// &lt;/summary&gt;<br>
  /// &lt;param name=&quot;InText&quot;&gt;要过滤的字符串&lt;/param&gt;<br>
  /// &lt;returns&gt;如果参数存在不安全字符，则返回true&lt;/returns&gt;<br>
  public static bool SqlFilter2(string InText)<br>
  {<br>
&nbsp;&nbsp;  string word=&quot;and|exec|insert|select|delete|update|chr|mid|master|or|truncate|char|declare|join&quot;;<br>
&nbsp;&nbsp;  if(InText==null)<br>
&nbsp;&nbsp;&nbsp;  return false;<br>
&nbsp;&nbsp;  foreach(string i in word.Split('|'))<br>
&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;  if((InText.ToLower().IndexOf(i+&quot; &quot;)&gt;-1)||(InText.ToLower().IndexOf(&quot; &quot;+i)&gt;-1))<br>
&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;  return true;<br>
&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;  return false;<br>
  }</p>
<p>二，Global.asax 事件</p>
<p>  /**//// &lt;summary&gt;<br>
  /// 当有数据时交时，触发事件<br>
  /// &lt;/summary&gt;<br>
  /// &lt;param name=&quot;sender&quot;&gt;&lt;/param&gt;<br>
  /// &lt;param name=&quot;e&quot;&gt;&lt;/param&gt;<br>
  protected void Application_BeginRequest(Object sender, EventArgs e)<br>
  {<br>
&nbsp;&nbsp;  //遍历Post参数，隐藏域除外<br>
&nbsp;&nbsp;  foreach(string i in this.Request.Form)<br>
&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;  if(i==&quot;__VIEWSTATE&quot;)continue;<br>
&nbsp;&nbsp;&nbsp;  this.goErr(this.Request.Form[i].ToString());&nbsp;&nbsp;&nbsp;  <br>
&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;  //遍历Get参数。<br>
&nbsp;&nbsp;  foreach(string i in this.Request.QueryString)<br>
&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;  this.goErr(this.Request.QueryString[i].ToString());&nbsp;&nbsp;&nbsp;  <br>
&nbsp;&nbsp;  }<br>
  }</p>
<p>三，Global中的一个方法</p>
<p>  /**//// &lt;summary&gt;<br>
  /// 校验参数是否存在SQL字符<br>
  /// &lt;/summary&gt;<br>
  /// &lt;param name=&quot;tm&quot;&gt;&lt;/param&gt;<br>
  private void goErr(string tm)<br>
  {<br>
&nbsp;&nbsp;  if(WLCW.Extend.CValidity.SqlFilter2(tm))<br>
&nbsp;&nbsp;&nbsp;  this.Response.Redirect(&quot;/error.html&quot;);<br>
  }</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/yueqiangsh/blog/category/Sqlserver">Sqlserver</a>&nbsp;<a href="http://hi.baidu.com/yueqiangsh/blog/item/786a5ab42ecbc9768bd4b259.html#comment">查看评论</a>]]></description>
        <pubDate>2008-07-06  15:35</pubDate>
        <category><![CDATA[Sqlserver]]></category>
        <author><![CDATA[yueqiangsh]]></author>
		<guid>http://hi.baidu.com/yueqiangsh/blog/item/786a5ab42ecbc9768bd4b259.html</guid>
</item>

<item>
        <title><![CDATA[阿里旺旺群发器v1.03(免费版)]]></title>
        <link><![CDATA[http://hi.baidu.com/yueqiangsh/blog/item/a90110ef7c211aeace1b3e99.html]]></link>
        <description><![CDATA[
		
		<p>此群发器是本人采用C#2.0开发的，希望对各位商家在业务宣传上有些帮助</p>
<p><font color="#ff0000">此软件需要微软的net framework 2.0运行库支持<br>
</font>framework 2.0可以从以下地址下载：<br>
(微软官方)<a href="http://www.microsoft.com/downloads/details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&amp;displaylang=zh-cn" target="_blank">http://www.microsoft.com/downloads/details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&amp;displaylang=zh-cn</a><br>
(天空软件)<a href="http://www.skycn.com/soft/39946.html" target="_blank">http://www.skycn.com/soft/39946.html</a><br>
(华军软件)<a href="http://www.newhua.com/soft/38669.htm" target="_blank">http://www.newhua.com/soft/38669.htm</a><br>
<br>
群发器下载地址：<a href="http://huliduo.com/download/WangWangSend_v1.03.rar" target="_blank"><font color="#7a9f0e">http://huliduo.com/download/WangWangSend_v1.03.rar</font></a></p>
<p>使用帮助：<a href="http://bbs.huliduo.com/showtopic-19.aspx">http://bbs.huliduo.com/showtopic-19.aspx</a></p>
<p> </p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/yueqiangsh/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/yueqiangsh/blog/item/a90110ef7c211aeace1b3e99.html#comment">查看评论</a>]]></description>
        <pubDate>2008-06-20  23:42</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[yueqiangsh]]></author>
		<guid>http://hi.baidu.com/yueqiangsh/blog/item/a90110ef7c211aeace1b3e99.html</guid>
</item>

<item>
        <title><![CDATA[捕获asp.net下的未处理异常]]></title>
        <link><![CDATA[http://hi.baidu.com/yueqiangsh/blog/item/60630bd422c13a04a18bb790.html]]></link>
        <description><![CDATA[
		
		Apache与Tomcat的区别 
<p>ihttpModule vs ihttpHandler <br>
内部机制：<br>
1.ihttpModule（粘合剂，侦听application事件或用户自定义事件。）<br>
2.ihttpHandler（可以自定义对特定资源进行处理）<br>
2.ihttpHandlerFactory(可以用来进行在自定义ihttpmodule或标准的ihttpModule之间进行选择)</p>
<p>ihttpHandler拦截httpRequest.<br>
ihttpModule是事件侦听器（其作用跟glob.aspx有些相同）</p>
<p>捕获asp.net下的未处理异常 <br>
对软件开发，有个基本的要求，就是要屏蔽掉未处理的异常，在系统出错的时候显示一个友好的界面给用户，同时，保存错误信息到日志中。在asp.net下，未处理的异常会引发HttpApplication.Error 事件，因此，我们可以很简单地实现这个feature。<br>
1、写一个类实现IHttpModule接口，挂接该事件，在事件处理中执行log的功能；<br>
2、在web.config中的customErrors配置节，指定defaultRedirect，并置mode的值为On。</p>
<p> </p>
<p><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;customErrors mode=&quot;RemoteOnly&quot; defaultRedirect=&quot;GenericErrorPage.htm&quot;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;error statusCode=&quot;403&quot; redirect=&quot;NoAccess.htm&quot; /&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;error statusCode=&quot;404&quot; redirect=&quot;FileNotFound.htm&quot; /&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/customErrors&gt;</p>
<p>asp.net中当服务器出错时显示指定的错误页面同时把错误信息写入系统日志文件的探讨</p>
<p><br>
一，在Web.config中填写出错时显示的页面，可以根据不同的statusCode显示不同的出错页面。<br>
&nbsp;&nbsp;&nbsp; &lt;customErrors mode=&quot;On&quot;&nbsp;&nbsp; //如果设置为Off则出错只返回错误信息，不会跳到自己的指定页面defaultRedirect=&quot;/error/customerrorpage.aspx&quot;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; &lt;error statusCode=&quot;404&quot; redirect=&quot;/error/404Page.aspx&quot;/&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; &lt;error statusCode=&quot;403&quot; redirect=&quot;/error/403page.aspx&quot;/&gt;<br>
&nbsp;&nbsp; &lt;/customErrors&gt; </p>
<p>二,在Global.asax文件中添加应用出错代码，写入系统日志文件<br>
protected void Application_Error(Object sender, EventArgs e)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exception LastError = Server.GetLastError();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String ErrMessage = LastError.ToString();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String LogName&nbsp;&nbsp; = &quot;MyLog&quot;;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String Message = &quot;Url &quot; + Request.Path + &quot; Error: &quot; + ErrMessage;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Create Event Log if It Doesn't Exist<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!EventLog.SourceExists(LogName))<br>
&nbsp;&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;&nbsp; EventLog.CreateEventSource(LogName, LogName);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EventLog Log = new EventLog();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Log.Source&nbsp;&nbsp; = LogName;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //These are the five options that will display a different icon.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Log.WriteEntry(Message, EventLogEntryType.Information, 1);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Log.WriteEntry(Message, EventLogEntryType.Error, 2);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Log.WriteEntry(Message, EventLogEntryType.Warning, 3);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Log.WriteEntry(Message, EventLogEntryType.SuccessAudit, 4);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Log.WriteEntry(Message, EventLogEntryType.FailureAudit, 5);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
三，现在你可以进行测试了。<br>
我在Default.aspx.cs中产生一个错误，果然跳到默认的错误页面！<br>
private void Page_Load(object sender, System.EventArgs e)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Put user code to initialize the page here<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try<br>
&nbsp;&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;&nbsp; int y=0;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int x=1/y;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (Exception Err)<br>
&nbsp;&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;&nbsp; throw new Exception(&quot;404&quot;);//我想产生不同的错误，对应web.config中的statusCode,该如何实现？<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Err.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p><br>
9.获取错误信息并到指定页面</p>
<p>　　不要使用Response.Redirect,而应该使用Server.Transfer </p>
<p>　　e.g </p>
<p>// in global.asax <br>
protected void Application_Error(Object sender, EventArgs e) { <br>
if (Server.GetLastError() is HttpUnhandledException) <br>
Server.Transfer(&quot;MyErrorPage.aspx&quot;); </p>
<p>//其余的非HttpUnhandledException异常交给ASP.NET自己处理就okay了 :) <br>
} <br>
　　Redirect会导致post－back的产生从而丢失了错误信息，所以页面导向应该直接在服务器端执行，这样就可以在错误处理页面得到出错信息并进行相应的处理 </p>
<p><br>
11.自定义异常处理</p>
<p>//自定义异常处理类 <br>
using System; <br>
using System.Diagnostics; </p>
<p>namespace MyAppException <br>
{ <br>
　/// ＜summary＞ <br>
　/// 从系统异常类ApplicationException继承的应用程序异常处理类。 <br>
　/// 自动将异常内容记录到Windows NT/2000的应用程序日志 <br>
　/// ＜/summary＞ <br>
　public class AppException:System.ApplicationException <br>
　{ <br>
　　public AppException() <br>
　　{ <br>
　　　if (ApplicationConfiguration.EventLogEnabled)LogEvent(&quot;出现一个未知错误。&quot;); <br>
　　} </p>
<p>　public AppException(string message) <br>
　{ <br>
　　LogEvent(message); <br>
　} </p>
<p>　public AppException(string message,Exception innerException) <br>
　{ <br>
　　LogEvent(message); <br>
　　if (innerException != null) <br>
　　{ <br>
　　　LogEvent(innerException.Message); <br>
　　} <br>
　} </p>
<p>　//日志记录类 <br>
　using System; <br>
　using System.Configuration; <br>
　using System.Diagnostics; <br>
　using System.IO; <br>
　using System.Text; <br>
　using System.Threading; </p>
<p>　namespace MyEventLog <br>
　{ <br>
　　/// ＜summary＞ <br>
　　/// 事件日志记录类，提供事件日志记录支持 <br>
　　/// ＜remarks＞ <br>
　　/// 定义了4个日志记录方法 (error, warning, info, trace) <br>
　　/// ＜/remarks＞ <br>
　　/// ＜/summary＞ <br>
　　public class ApplicationLog <br>
　　{ <br>
　　　/// ＜summary＞ <br>
　　　/// 将错误信息记录到Win2000/NT事件日志中 <br>
　　　/// ＜param name=&quot;message&quot;＞需要记录的文本信息＜/param＞ <br>
　　　/// ＜/summary＞ <br>
　　　public static void WriteError(String message) <br>
　　　{ <br>
　　　　WriteLog(TraceLevel.Error, message); <br>
　　　} </p>
<p>　　　/// ＜summary＞ <br>
　　　/// 将警告信息记录到Win2000/NT事件日志中 <br>
　　　/// ＜param name=&quot;message&quot;＞需要记录的文本信息＜/param＞ <br>
　　　/// ＜/summary＞ <br>
　　　public static void WriteWarning(String message) <br>
　　　{ <br>
　　　　WriteLog(TraceLevel.Warning, message);　　 <br>
　　　} </p>
<p>　　　/// ＜summary＞ <br>
　　　/// 将提示信息记录到Win2000/NT事件日志中 <br>
　　　/// ＜param name=&quot;message&quot;＞需要记录的文本信息＜/param＞ <br>
　　　/// ＜/summary＞ <br>
　　　public static void WriteInfo(String message) <br>
　　　{ <br>
　　　　WriteLog(TraceLevel.Info, message); <br>
　　　} <br>
　　　/// ＜summary＞ <br>
　　　/// 将跟踪信息记录到Win2000/NT事件日志中 <br>
　　　/// ＜param name=&quot;message&quot;＞需要记录的文本信息＜/param＞ <br>
　　　/// ＜/summary＞ <br>
　　　public static void WriteTrace(String message) <br>
　　　{ <br>
　　　　WriteLog(TraceLevel.Verbose, message); <br>
　　　} </p>
<p>　　　/// ＜summary＞ <br>
　　　/// 格式化记录到事件日志的文本信息格式 <br>
　　　/// ＜param name=&quot;ex&quot;＞需要格式化的异常对象＜/param＞ <br>
　　　/// ＜param name=&quot;catchInfo&quot;＞异常信息标题字符串.＜/param＞ <br>
　　　/// ＜retvalue＞ <br>
　　　/// ＜para＞格式后的异常信息字符串，包括异常内容和跟踪堆栈.＜/para＞ <br>
　　　/// ＜/retvalue＞ <br>
　　　/// ＜/summary＞ <br>
　　　public static String FormatException(Exception ex, String catchInfo) <br>
　　　{ <br>
　　　　StringBuilder strBuilder = new StringBuilder(); <br>
　　　　if (catchInfo != String.Empty) <br>
　　　　{ <br>
　　　　　strBuilder.Append(catchInfo).Append(&quot;\r\n&quot;); <br>
　　　　} <br>
　　　　strBuilder.Append(ex.Message).Append(&quot;\r\n&quot;).Append(ex.StackTrace); <br>
　　　　return strBuilder.ToString(); <br>
　　　} </p>
<p>　　　/// ＜summary＞ <br>
　　　/// 实际事件日志写入方法 <br>
　　　/// ＜param name=&quot;level&quot;＞要记录信息的级别（error,warning,info,trace).＜/param＞ <br>
　　　/// ＜param name=&quot;messageText&quot;＞要记录的文本.＜/param＞ <br>
　　　/// ＜/summary＞ <br>
　　　private static void WriteLog(TraceLevel level, String messageText) <br>
　　　{ <br>
　　　　try <br>
　　　　{ <br>
　　　　　EventLogEntryType LogEntryType; <br>
　　　　　switch (level) <br>
　　　　　{ <br>
　　　　　　case TraceLevel.Error: <br>
　　　　　　　LogEntryType = EventLogEntryType.Error; <br>
　　　　　　　break; <br>
　　　　　　case TraceLevel.Warning: <br>
　　　　　　　LogEntryType = EventLogEntryType.Warning; <br>
　　　　　　　break; <br>
　　　　　　case TraceLevel.Info: <br>
　　　　　　　LogEntryType = EventLogEntryType.Information; <br>
　　　　　　　break; <br>
　　　　　　case TraceLevel.Verbose: <br>
　　　　　　　LogEntryType = EventLogEntryType.SuccessAudit; <br>
　　　　　　　break; <br>
　　　　　　default: <br>
　　　　　　　LogEntryType = EventLogEntryType.SuccessAudit; <br>
　　　　　　　break; <br>
　　　　　} </p>
<p>　　　　　EventLog eventLog = new EventLog(&quot;Application&quot;, ApplicationConfiguration.EventLogMachineName, ApplicationConfiguration.EventLogSourceName ); <br>
　　　　　//写入事件日志 <br>
　　　　　eventLog.WriteEntry(messageText, LogEntryType); </p>
<p>　　　　} <br>
　　　catch {} //忽略任何异常 <br>
　　} <br>
　} //class ApplicationLog <br>
} </p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/yueqiangsh/blog/category/asp%2Enet">asp.net</a>&nbsp;<a href="http://hi.baidu.com/yueqiangsh/blog/item/60630bd422c13a04a18bb790.html#comment">查看评论</a>]]></description>
        <pubDate>2008-06-20  23:26</pubDate>
        <category><![CDATA[asp.net]]></category>
        <author><![CDATA[yueqiangsh]]></author>
		<guid>http://hi.baidu.com/yueqiangsh/blog/item/60630bd422c13a04a18bb790.html</guid>
</item>

<item>
        <title><![CDATA[如何在子线程中操作窗体上的控件]]></title>
        <link><![CDATA[http://hi.baidu.com/yueqiangsh/blog/item/eefc88fae796919259ee90a6.html]]></link>
        <description><![CDATA[
		
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt"><font size="3"><span style=" mso-ascii- mso-hansi-">一般来说，直接在子线程中对窗体上的控件操作是会出现异常，这是由于子线程和运行窗体的线程是不同的空间，因此想要在子线程来操作窗体上的控件，是不可能简单的通过控件对象名来操作，但不是说不能进行操作，微软提供了</span><span><font face="Times New Roman">Invoke</font></span><span style=" mso-ascii- mso-hansi-">的方法，其作用就是让子线程告诉窗体线程来完成相应的控件操作。</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span><font face="Times New Roman" size="3"> </font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span style=" mso-ascii- mso-hansi-"><font size="3">现在用一个用线程控制的进程条来说明，大致的步骤如下：</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 39pt; text-indent: -18pt; mso-list: l0 level1 lfo1; "><span style="mso-fareast-"><span style="mso-list: Ignore"><font face="Times New Roman"><font size="3">1．</font><span style="font: 7pt  Times New Roman ">  </span></font></span></span><font size="3"><span style=" mso-ascii- mso-hansi-">创建</span><span><font face="Times New Roman">Invoke</font></span><span style=" mso-ascii- mso-hansi-">函数，大致如下：</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"><span style="font-size: 10pt;  mso-hansi- mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span><span style="color: gray">///</span><span style="color: green"> </span><span style="color: gray">&lt;summary&gt;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"><span style="font-size: 10pt;  mso-hansi- mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span><span style="color: gray">///</span><span style="color: green"> Delegate function to be invoked by main thread</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"><span style="font-size: 10pt;  mso-hansi- mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span><span style="color: gray">///</span><span style="color: green"> </span><span style="color: gray">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"><span style="font-size: 10pt;  mso-hansi- mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span><span style="color: blue">private</span> <span style="color: blue">void</span> InvokeFun()</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"><span style="font-size: 10pt;  mso-hansi- mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>{</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"><span style="font-size: 10pt;  mso-hansi- mso-font-kerning: 0pt"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span><span style="color: blue">if</span>( prgBar.Value &lt; 100 )</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"><span style="font-size: 10pt;  mso-hansi- mso-font-kerning: 0pt"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>prgBar.Value = prgBar.Value + 1;</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"><span style="font-size: 10pt;  mso-hansi- mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>}</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman" size="3"> </font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 39pt; text-indent: -18pt; mso-list: l0 level1 lfo1; "><span style="mso-fareast-"><span style="mso-list: Ignore"><font face="Times New Roman"><font size="3">2．</font><span style="font: 7pt  Times New Roman ">  </span></font></span></span><span style=" mso-ascii- mso-hansi-"><font size="3">子线程入口函数：</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"><span style="font-size: 10pt;  mso-hansi- mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span><span style="color: gray">///</span><span style="color: green"> </span><span style="color: gray">&lt;summary&gt;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"><span style="font-size: 10pt;  mso-hansi- mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span><span style="color: gray">///</span><span style="color: green"> Thread function interface</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"><span style="font-size: 10pt;  mso-hansi- mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span><span style="color: gray">///</span><span style="color: green"> </span><span style="color: gray">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"><span style="font-size: 10pt;  mso-hansi- mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span><span style="color: blue">private</span> <span style="color: blue">void</span> ThreadFun()</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"><span style="font-size: 10pt;  mso-hansi- mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>{</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"><span style="font-size: 10pt;  mso-hansi- mso-font-kerning: 0pt"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span><span style="color: green">//Create invoke method by specific function</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"><span style="font-size: 10pt;  mso-hansi- mso-font-kerning: 0pt"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>MethodInvoker mi = <span style="color: blue">new</span> MethodInvoker( <span style="color: blue">this</span>.InvokeFun );</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"><span style="font-size: 10pt;  mso-hansi- mso-font-kerning: 0pt"> </span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"><span style="font-size: 10pt;  mso-hansi- mso-font-kerning: 0pt"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span><span style="color: blue">for</span>( <span style="color: blue">int</span> i = 0; i &lt; 100; i++ )</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"><span style="font-size: 10pt;  mso-hansi- mso-font-kerning: 0pt"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>{</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"><span style="font-size: 10pt;  mso-hansi- mso-font-kerning: 0pt"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span><span style="color: blue">this</span>.BeginInvoke( mi );</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"><span style="font-size: 10pt;  mso-hansi- mso-font-kerning: 0pt"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>Thread.Sleep( 100 );</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"><span style="font-size: 10pt;  mso-hansi- mso-font-kerning: 0pt"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>}</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"><span style="font-size: 10pt;  mso-hansi- mso-font-kerning: 0pt"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>}</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman" size="3"> </font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 39pt; text-indent: -18pt; mso-list: l0 level1 lfo1; "><span style="mso-fareast-"><span style="mso-list: Ignore"><font face="Times New Roman"><font size="3">3．</font><span style="font: 7pt  Times New Roman ">  </span></font></span></span><span style=" mso-ascii- mso-hansi-"><font size="3">创建子线程：</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"><span style="font-size: 10pt;  mso-hansi- mso-font-kerning: 0pt"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>Thread thdProcess = <span style="color: blue">new</span> Thread( <span style="color: blue">new</span> ThreadStart( ThreadFun ) );</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"><span style="font-size: 10pt;  mso-hansi- mso-font-kerning: 0pt"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span>thdProcess.Start();</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><font face="Times New Roman" size="3"> </font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><font size="3"><span><span style="mso-tab-count: 1"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </font></span></span><span style=" mso-ascii- mso-hansi-">备注：</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left"><span><span style="mso-tab-count: 2"><font face="Times New Roman" size="3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </font></span></span><span style="font-size: 10pt; color: blue;  mso-hansi- mso-font-kerning: 0pt">using</span><span style="font-size: 10pt;  mso-hansi- mso-font-kerning: 0pt"> System.Threading;</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><span style="mso-tab-count: 2"><font face="Times New Roman" size="3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </font></span></span><span style="font-size: 10pt; color: blue;  mso-hansi- mso-font-kerning: 0pt">private</span><span style="font-size: 10pt;  mso-hansi- mso-font-kerning: 0pt"> System.Windows.Forms.ProgressBar prgBar;</span></p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/yueqiangsh/blog/category/c%23">c#</a>&nbsp;<a href="http://hi.baidu.com/yueqiangsh/blog/item/eefc88fae796919259ee90a6.html#comment">查看评论</a>]]></description>
        <pubDate>2008-06-18  18:18</pubDate>
        <category><![CDATA[c#]]></category>
        <author><![CDATA[yueqiangsh]]></author>
		<guid>http://hi.baidu.com/yueqiangsh/blog/item/eefc88fae796919259ee90a6.html</guid>
</item>

<item>
        <title><![CDATA[最新搜索引擎收录地址大全]]></title>
        <link><![CDATA[http://hi.baidu.com/yueqiangsh/blog/item/ead2fd1eb50da6f11bd57648.html]]></link>
        <description><![CDATA[
		
		以下是中文搜索网站收录地址<br>
百度搜索网站登录口：<a href="http://www.baidu.com/search/url_submit.html" target="_blank">http://www.baidu.com/search/url_submit.html</a><br>
Google网站登录口：<a href="http://www.google.com/intl/zh-CN/add_url.html" target="_blank">http://www.google.com/intl/zh-CN/add_url.html</a><br>
孙悟空网站登录口：<a href="http://www.sunwukong.cn/add.php" target="_blank">http://www.sunwukong.cn/add.php</a><br>
天网搜索网站登录口：<a href="http://home.tianwang.com/denglu.htm" target="_blank">http://home.tianwang.com/denglu.htm</a><br>
奇摩网站登录口：<a href="http://tw.dir.yahoo.com/step/generally.html" target="_blank">http://tw.dir.yahoo.com/step/generally.html</a><br>
窝窝网web2.0登录口：<a href="http://www.mywowo.com/web2.asp" target="_blank">http://www.mywowo.com/web2.asp</a><br>
麦布搜索网站登录：<a href="http://www.mybu.net/submit.asp" target="_blank">http://www.mybu.net/submit.asp</a><br>
Live Search网站登录口：<a href="http://beta.search.msn.com/docs/submit.aspx" target="_blank">http://beta.search.msn.com/docs/submit.aspx</a><br>
千度搜索网站登录口：<a href="http://www.qiandu.com/protocol.asp" target="_blank">http://www.qiandu.com/protocol.asp</a><br>
中国目录网站登录口：<a href="http://www.china-dir.org/addsite.htm" target="_blank">http://www.china-dir.org/addsite.htm</a><br>
巴辣香港搜寻器登录口：<a href="http://www.balaa.com/cgi-bin/search/add.cgi" target="_blank">http://www.balaa.com/cgi-bin/search/add.cgi</a><br>
北极星搜索登录口：<a href="http://www.beijixing.com.cn/cgi-bin/add.cgi" target="_blank">http://www.beijixing.com.cn/cgi-bin/add.cgi</a><br>
百晓搜索网站登录口：<a href="http://www.baixiao.cn/all/free_add.asp" target="_blank">http://www.baixiao.cn/all/free_add.asp</a><br>
凯希搜索网站登录口：<a href="http://www2d.biglobe.ne.jp/~kinryou/cgi/url.html" target="_blank">http://www2d.biglobe.ne.jp/~kinryou/cgi/url.html</a><br>
爱问搜索网站登录口：<a href="http://iask.com/guest/add_url.php" target="_blank">http://iask.com/guest/add_url.php</a><br>
赛迪免费登录口：<a href="http://itsearch.ccidnet.com/appl/appl_xz.htm" target="_blank">http://itsearch.ccidnet.com/appl/appl_xz.htm</a> <br>
网易免费登录口：<a href="http://odp.163.com/site/auditSiteList.m" target="_blank">http://odp.163.com/site/auditSiteList.m</a> <br>
雅虎免费登录口：<a href="http://cn.yahoo.com/docs/info/suggest.html" target="_blank">http://cn.yahoo.com/docs/info/suggest.html</a> <br>
中华网登录口：<a href="http://202.84.11.68:66/web/frontward/free/free_search.asp" target="_blank">http://202.84.11.68:66/web/frontward/free/free_search.asp</a> <br>
搜豹免费登录口：<a href="http://search.sobao.com/Computers_and_Internet/Personal" target="_blank">http://search.sobao.com/Computers_and_Internet/Personal</a><br>
alltheweb登录口：<a href="http://www.alltheweb.com/add_url.php" target="_blank">http://www.alltheweb.com/add_url.php</a> <br>
国信登录口：<a href="http://search.gxchina.com/login/Login.htm" target="_blank">http://search.gxchina.com/login/Login.htm</a> <br>
晨曦免费登录口：<a href="http://www.mingbu.com/cxsearch/add.asp" target="_blank">http://www.mingbu.com/cxsearch/add.asp</a> <br>
协通免费登录口：<a href="http://www.net2asp.com.cn/search/regform.htm" target="_blank">http://www.net2asp.com.cn/search/regform.htm</a> <br>
朝鲜迷免费登录口：<a href="http://www.168world.com/cgi-bin/link2000/link.cgi?id=dprk" target="_blank">http://www.168world.com/cgi-bin/link2000/link.cgi?id=dprk</a>&amp;a_method=write <br>
法律网免费登录口：<a href="http://www.law-lib.com/lawseek/wzdl.asp" target="_blank">http://www.law-lib.com/lawseek/wzdl.asp</a> <br>
银河免费登录口：<a href="http://search.inhe.net/navigate.asp" target="_blank">http://search.inhe.net/navigate.asp</a> <br>
酷亿免费登录口：<a href="http://www.ku68.com/home/webreg.asp" target="_blank">http://www.ku68.com/home/webreg.asp</a> <br>
星星免费登录口：<a href="http://www.xxsl.net/regsta1.asp?sortid=153" target="_blank">http://www.xxsl.net/regsta1.asp?sortid=153</a> <br>
y4免费登录口：<a href="http://drckness.jahee.com/free/kulink.asp" target="_blank">http://drckness.jahee.com/free/kulink.asp</a> <br>
天下免费登录口：<a href="http://www.8eee.com/wzdl_sy.asp" target="_blank">http://www.8eee.com/wzdl_sy.asp</a> <br>
维华免费登录口：<a href="http://211.99.40.148/html/gsjj_wzdl.htm" target="_blank">http://211.99.40.148/html/gsjj_wzdl.htm</a> <br>
搜鼠免费登录口：<a href="http://sosoo.cnool.net/intro.asp" target="_blank">http://sosoo.cnool.net/intro.asp</a> <br>
尤里卡免费登录口：<a href="http://www.ulika.com/linkaddr/welcome.asp" target="_blank">http://www.ulika.com/linkaddr/welcome.asp</a> <br>
阳光免费登录口：<a href="http://www.jc.gov.cn/userlink/useraddlink.htm" target="_blank">http://www.jc.gov.cn/userlink/useraddlink.htm</a> <br>
1608搜网登录口：<a href="http://search.1608.com/addu.cgi" target="_blank">http://search.1608.com/addu.cgi</a> <br>
中国168登录口：<a href="http://www.china168.com/chaoshi/it/regsta1.asp?sortid=242" target="_blank">http://www.china168.com/chaoshi/it/regsta1.asp?sortid=242</a> <br>
绿界免费登录口：<a href="http://ep.sunup.net/add.php" target="_blank">http://ep.sunup.net/add.php</a> <br>
商情168搜索登陆录口：<a href="http://search.168yx.com/add.php" target="_blank">http://search.168yx.com/add.php</a> <br>
中国搜索同盟登录口：<a href="http://service.chinasearch.com.cn/web/frontward/free/free_protocol.htm" target="_blank">http://service.chinasearch.com.cn/web/frontward/free/free_protocol.htm</a> <br>
TOM搜索登录口：<a href="http://search.tom.com/tools/weblog/log.php" target="_blank">http://search.tom.com/tools/weblog/log.php</a><br>
<br>
-----------------------------------<br>
以下是英文搜索网站收录地址 <br>
<br>
HotBot登录口：<a href="http://www.hotbot.com/prefs_filters.asp?prov=Inktomifilter=web" target="_blank">http://www.hotbot.com/prefs_filters.asp?prov=Inktomifilter=web</a> <br>
netscape登录口：<a href="http://about.netscape.com/" target="_blank">http://about.netscape.com/</a> <br>
intelseek登录口：<a href="http://intelseek.com/add_url_form.asp" target="_blank">http://intelseek.com/add_url_form.asp</a> <br>
NetSearch登录口：<a href="http://www.netsearch.org/promo/submit.htm" target="_blank">http://www.netsearch.org/promo/submit.htm</a> <br>
AddMe登录口：<a href="http://www.addme.com/s0new.htm" target="_blank">http://www.addme.com/s0new.htm</a> <br>
Link it All登录口：<a href="http://www.that-special-gift.com/ffa/links.html" target="_blank">http://www.that-special-gift.com/ffa/links.html</a> <br>
Voyager登录口：<a href="http://www.voyagersearch.com/cgi-bin/q/search.cgi?NAVG=AddURL" target="_blank">http://www.voyagersearch.com/cgi-bin/q/search.cgi?NAVG=AddURL</a> <br>
Gigablast登录口：<a href="http://www.gigablast.com/addurl" target="_blank">http://www.gigablast.com/addurl</a> <br>
Aeiwei登录口：<a href="http://www.aeiwi.com/submit.html" target="_blank">http://www.aeiwi.com/submit.html</a> <br>
Infotiger登录口：<a href="http://www.infotiger.com/addurl.html" target="_blank">http://www.infotiger.com/addurl.html</a> <br>
Nationaldirectory登录口：<a href="http://www.nationaldirectory.com/addurl/" target="_blank">http://www.nationaldirectory.com/addurl/</a> <br>
WhatUseek登录口：<a href="http://www.whatuseek.com/addurl-secondary.shtml" target="_blank">http://www.whatuseek.com/addurl-secondary.shtml</a> <br>
Exactseek登录口：<a href="http://www.exactseek.com/add.html" target="_blank">http://www.exactseek.com/add.html</a> <br>
Walhello登录口：<a href="http://www.walhello.com/addlinkgl.html" target="_blank">http://www.walhello.com/addlinkgl.html</a> <br>
Scrubtheweb登录口：<a href="http://www.scrubtheweb.com/addurl.html" target="_blank">http://www.scrubtheweb.com/addurl.html</a><br>
dmoz的登陆地址: <a href="http://dmoz.org/World/Chinese_Simplified" target="_blank">http://dmoz.org/World/Chinese_Simplified</a> <br> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/yueqiangsh/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/yueqiangsh/blog/item/ead2fd1eb50da6f11bd57648.html#comment">查看评论</a>]]></description>
        <pubDate>2008-06-12  21:16</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[yueqiangsh]]></author>
		<guid>http://hi.baidu.com/yueqiangsh/blog/item/ead2fd1eb50da6f11bd57648.html</guid>
</item>


</channel>
</rss>