登录注册
社区应用 最新帖子 精华区 社区服务 会员列表 统计排行
主题 : [ZT]我和电脑亲密接触的心路历程
伍胥之 离线
级别: 军区司令员

显示用户信息 
楼主  发表于: 2010-03-19   

[ZT]我和电脑亲密接触的心路历程

管理提醒: 本帖被 卡拉 设置为精华(2010-06-13)
原题:[ZT]The Progamming career of a non-programmer rd_!'pG  
(卡拉注:可以译为“一个非程序员的编程生涯”)
[ 此帖被伍胥之在01-20-2011 21:41重新编辑 ]
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
杺栫杣杊椌柮栬,䒴蓉艿芖。
伍胥之 离线
级别: 军区司令员

显示用户信息 
100楼  发表于: 2021-07-18   
Dim bContinue As Boolean .P:mY C  
{t%Jc~p{  
Dim regEX As New RegExp <rn26Gfr  
Dim paraCounter As Long  '全局段落计数,仅在主程序中可读写,其它过程函数应为只读 x{_3/4  
VN/v]  
Dim LastTitle0String As String, LastTitle0No As Long EEJ OJ<  
Dim LastTitle1String As String, LastTitle1No As Long Y=5}u&\   
Dim LastTitle2String As String, LastTitle2No As Long wZnv*t_  
Dim LastTitle3String As String, LastTitle3No As Long Ze.\<^-t  
Dim LastTitle4String As String, LastTitle4No As Long k.n-JS  
Dim LastTitle5String As String, LastTitle5No As Long )`z{T  
Dim LastTabelString As String, LastTableNo As Long z)_h"y?H{%  
Dim LastFigureString As String, LastFigureNo As Long 4\Q pS  
}7HR<%< 7  
Dim strSeperator As String # ? _8 *?  
AZH= r S`  
Sub ConvertWidth(fTEXT As String, rText As String) ^[g7B"`K5  
        Selection.Find.ClearFormatting umuE5MKY<  
        Selection.Find.Replacement.ClearFormatting w D}g\{P  
        Selection.Find.Wrap = wdFindContinue dX;Q\  ]"  
        Me.txtStatus.Text = "转换全角数字字母" & fTEXT & "形式为半角" & rText %AJTU3=0  
        DoEvents *Dhy a g  
        Selection.Find.Execute findtext:=fTEXT, replacewith:=rText, Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchCase:=True BG9.h!  
End Sub &;2@*#,  
Hx?OCGj=S*  
Sub ClearDomain() JwNB)e D  
        With Selection.Find 5Tg[-tl  
            .ClearFormatting ^q}cy1"j"  
            .Replacement.ClearFormatting y# iQ   
            .Wrap = wdFindContinue ($T"m-e  
            Me.txtStatus.Text = "清除所有域代码" 9Hm>@dBhM  
            DoEvents vuoD~=z  
            .Execute findtext:="^d", replacewith:="", Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue, MatchWildcards:=False _&R lR  
        End With b haYbiX?  
End Sub "8l& m6`U-  
1yd}F`{8UF  
Private Sub cmdCheck_Click() =\FV_4)  
    bContinue = True j3Ps<<eA  
    Dim NoSeries1(1 To 16) As String ym*oCfu=  
    Dim NoSeries2(1 To 16) As String +:ih`q][b  
    Dim NoSeries5(1 To 16) As String igO,Ge8}  
    Dim NoSeriesRM(1 To 16) As String V`& O`  
    Dim paraTotal As Long, ParaText As String ^ rh{  
    Dim ttString As String, ttNo As String 1m4Xl%KS>  
     e-EY]%JO  
    Dim ShapeCounter As Long, ShapeHeight As Long, ShapeWidth As Long D!WyT`T  
;r3Xh)k;  
    Me.txtStatus.Visible = True p:Hg>Z  
    Me.lbParaType.Visible = True a,ZmDkzuv  
    Me.cmdCheck.Enabled = False U][\|8i  
     #V-0-n,`  
     Hs`j6yuc9  
     !v\ _<8  
     9g~"Y[ ]  
    Dim ParaType As String, rText As String n6C]JWG\/U  
     :406Oa  
    Selection.WholeStory  }!9KxwC(  
    Selection.NoProofing = True EQ%,IK/  
     /v-:ca)7mI  
    tm1 = Now lS96sjJp@  
     ZW@%>_JR]  
        ActiveWindow.View.Type = wdNormalView |kc#=b@l  
     a+=.(g  
    NoSeries1(1) = "一" iOrpr,@  
    NoSeries1(2) = "二" FQe82tfV+  
    NoSeries1(3) = "三" YwaWhBCIF  
    NoSeries1(4) = "四" ] ^ s,  
    NoSeries1(5) = "五" ~cH3RFV  
    NoSeries1(6) = "六" PBOZ^%k  
    NoSeries1(7) = "七" Q:^.Qs"IK  
    NoSeries1(8) = "八" U-ADdO h"q  
    NoSeries1(9) = "九" M" vd /F V  
    NoSeries1(10) = "十" TfnBPO  
    NoSeries1(11) = "十一" vE{L`,\ q  
    NoSeries1(12) = "十二" $2/v8  
    NoSeries1(13) = "十三" _eZ *_H,\  
    NoSeries1(14) = "十四" $mu*iW\{  
    NoSeries1(15) = "十五" 4apaUP=Jp  
    NoSeries1(16) = "十六" Ba#wW E  
     BI|YaZa+p  
    NoSeries2(1) = "㈠" ,)35V i;.  
    NoSeries2(2) = "㈡" k];NTALOG  
    NoSeries2(3) = "㈢" $I|6v  
    NoSeries2(4) = "㈣" VdOcKP.  
    NoSeries2(5) = "㈤" sLze/D_M*  
    NoSeries2(6) = "㈥" =-%10lOI  
    NoSeries2(7) = "㈦" r WULv  
    NoSeries2(8) = "㈧" ?F" mZu  
    NoSeries2(9) = "㈨" | IB4-p  
    NoSeries2(10) = "㈩" x2h5,.K  
     [Ol~}@gV  
    NoSeries5(1) = "①" cnraNq1  
    NoSeries5(1) = "②" 'Da*MGu9  
    NoSeries5(3) = "③" /Bs42uJ3  
    NoSeries5(4) = "④" nm#,oX2C  
    NoSeries5(5) = "⑤" 2>*b.$g  
    NoSeries5(6) = "⑥" G7N Rpr  
    NoSeries5(7) = "⑦" V.|#2gC]t  
    NoSeries5(8) = "⑧" M37GQvo   
    NoSeries5(9) = "⑨" .C\##   
    NoSeries5(10) = "⑩" R AU"  
     /8Ru O  
     vhd+A  
    NoSeriesRM(1) = "I" x%RG>),U  
    NoSeriesRM(2) = "II" HY2*5 #T  
    NoSeriesRM(3) = "III" {,+MaH  
    NoSeriesRM(4) = "IV" d}^G790  
    NoSeriesRM(5) = "V" NbPNcjPL  
    NoSeriesRM(6) = "VI" "?v{?,@  
    NoSeriesRM(7) = "VII" W,f XHYst  
    NoSeriesRM(8) = "VIII" e1/{bX5  
    NoSeriesRM(9) = "IX" Z/G?w D|B  
    NoSeriesRM(10) = "X" TGH"OXV*@  
    NoSeriesRM(11) = "XI" t.pn07$  
    NoSeriesRM(12) = "XII" !]C=5~B BI  
    NoSeriesRM(13) = "XIII" 2+=:pc^  
    NoSeriesRM(14) = "XIV" T)o>U &KNP  
    NoSeriesRM(15) = "XV" gT{WH67u  
    NoSeriesRM(16) = "XVI" .K`EflN  
     ~A@HW!*Z@  
    i = MsgBox("为了你的数据安全,请使用单独保存的文件副本进行本操作。" & vbCrLf & "确定继续进行吗?", vbYesNo) k9m9IE"9=$  
     wfQ^3HL  
    If i = vbNo Then m <'&`B;  
        Exit Sub "I,=L;p  
    End If Bdr'd? u<A  
     qAW?\*n5N  
    If Me.chkSuper.Value Then f!Mx +ky  
        Me.txtStatus.Text = "检查修改所有的上标格式" 5 >\~jf  
     EECuJ+T  
        CheckSuperScript S!8gy,7<J  
         1n!xsesSc  
    End If `e4gneQY  
     czg9tG8  
    If Me.chkStyle.Value Then Fk#$@^c@  
        Me.txtStatus.Text = "设置样式,请稍候...." $5\+Q W  
        DoEvents KdXqW0nm  
        CeateOrModifyStyle bPA >xAH  
    End If 9Q>85IiT  
     2bu>j1h  
     2y5d  
     8/s?Gz  
    ClearDomain s8.SEk|pB  
         O)$Pvll  
      `6xr:s  
     4l'`q+^-  
    If Me.chkLIST.Value Then @hw e  
        Me.txtStatus.Text = "将所有自动列表标题转化为人工标题形式" "[dfb#0z`  
     7m4*dBTr  
        ConvertListToOrdinary 6~^ M<E  
    End If 'YvRkWf:KC  
     :5[1Iepdn  
     *CCh\+S7m  
    Dim pType As String, trimpTEXT As String /Ref54  
    If Me.chkNum.Value = True Then v3b +Ddp  
        Me.txtStatus.Text = "转换全角数字形式为半角" H b?0?^#  
        ConvertWidth "1", "1" ?/q\S  
        DoEvents <O0.q.  
        ConvertWidth "2", "2" :Z&<5  
        DoEvents jSMxba]  
        ConvertWidth "3", "3" =/Ph ]f9  
        DoEvents > JV$EY,  
        ConvertWidth "4", "4" @!Rklhb  
        DoEvents (v}4,'dS  
        ConvertWidth "5", "5"  P0 9f  
        DoEvents 8Z!Mad  
        ConvertWidth "6", "6" _=_<cg y1u  
        DoEvents  &4{!5r  
        ConvertWidth "7", "7" 26ae|2?  
        DoEvents *f o>  
        ConvertWidth "8", "8" Sjp ]TWj  
        DoEvents B}+li1k  
        ConvertWidth "9", "9" 722:2 {  
        DoEvents 7yQw$zG,Iz  
        ConvertWidth "0", "0" LYO2L1u)  
        DoEvents Hu$y8_Udw  
        ConvertWidth "a", "a" L*FQ`:lZ  
        DoEvents $X,dQ]M  
        ConvertWidth "b", "b" +Z e;BKZ3  
        DoEvents 8 /k"A-m  
        ConvertWidth "c", "c" +~$pkxD"  
        DoEvents Z(I=K BI  
        ConvertWidth "d", "d" 6d(D >a  
        DoEvents Mp?L9  
        ConvertWidth "e", "e" [H@71+_Q  
        DoEvents ^Lv )){t  
        ConvertWidth "f", "f" fS$;~@p  
        DoEvents ] @:x<>  
        ConvertWidth "g", "g" L;-V Yo#  
        DoEvents 0.[t EnLZ  
        ConvertWidth "h", "h" C}qHvwFm  
        DoEvents <q&4Y+b  
        ConvertWidth "i", "i" VWK%6Ye0  
        DoEvents #%g>^i={ky  
        ConvertWidth "j", "j" ^[6el_mj  
        DoEvents "0 $UnR  
        ConvertWidth "k", "k" UM<!bNz`  
        DoEvents ^^B~v<uK  
        ConvertWidth "l", "l" nJ}@9v F/  
        DoEvents &B\ sG=  
        ConvertWidth "m", "m" 8.:WMH`  
        DoEvents :-Ml?:0_X  
        ConvertWidth "n", "n" a"&cm'\lL  
        ConvertWidth "o", "o" &grqRt  
        ConvertWidth "p", "p" {fJCj152.  
        ConvertWidth "q", "q" ZeqsXz  
        ConvertWidth "r", "r" H128T8?r[  
        ConvertWidth "s", "s" qTSe_Re  
        ConvertWidth "t", "t" u|cP&^S  
        ConvertWidth "u", "u" E>iN>  
        ConvertWidth "v", "v" [\qclW;L  
        ConvertWidth "w", "w" saTS8p z  
        ConvertWidth "x", "x" NfWL3"&X  
        ConvertWidth "y", "y" ERy=lP~gV  
        ConvertWidth "z", "z" [ 2PPa9F  
        ConvertWidth "A", "A" F*T$n"^  
        ConvertWidth "B", "B" JwQ/A[b  
        ConvertWidth "C", "C" hp`ZmLq/[  
        ConvertWidth "D", "D" 2ZEDyQM  
        ConvertWidth "E", "E" WbwwI)1  
        ConvertWidth "F", "F" &z#`Qa3NI  
        ConvertWidth "G", "G" @'<=E AXe  
        ConvertWidth "H", "H" SBI *[  
        ConvertWidth "I", "I" uUb`Fy9  
        ConvertWidth "J", "J" H?rCIS0  
        ConvertWidth "K", "K" ey6ujV7!  
        ConvertWidth "L", "L" EbG&[v  
        ConvertWidth "M", "M" us E%eF]  
        ConvertWidth "N", "N" ~jzjJ&O&  
        ConvertWidth "O", "O" On|b-  
        ConvertWidth "P", "P" V8#NXU g<!  
        ConvertWidth "Q", "Q" 4]#$YehM5  
        ConvertWidth "R", "R" {1gT{2/~@  
        ConvertWidth "S", "S" U!(es0rX  
        ConvertWidth "T", "T" wYr*('uT  
        ConvertWidth "U", "U"  C TKeY  
        ConvertWidth "V", "V" U C_$5~8p  
        ConvertWidth "W", "W" {&J~P&,k  
        ConvertWidth "X", "X" Z~].v._YV)  
        ConvertWidth "Y", "Y" \CX6~  
        ConvertWidth "Z", "Z" Sm{> 8e}UE  
        ConvertWidth "^l", "^p" XZ@ |(_Z  
        ConvertWidth "(", "(" _F5*\tQ  
        ConvertWidth ")", ")" R.cR:fA  
     /;kSa}"Q  
    End If 0xY</S  
K^ ALE  
    With ActiveDocument b ct8~dY  
        Dim tbl As Table KP&xk1 3)  
        For Each tbl In .Tables JvK]EwR ;  
            tbl.Rows.Alignment = wdAlignRowCenter hd]ts.   
            tbl.Range.Font.NameFarEast = "楷体" L5'?.9]  
            tbl.Range.Font.NameAscii = "Times New Roman" 1m5*MY  
            tbl.Range.Font.Size = 10.5 p|?FA@ 3  
        Next Q' Tg0,,S  
        Set tbl = Nothing n(`|:h"  
    End With a`R_}nus*  
     ,q;?zcC7  
     "8R &c}  
    With ActiveDocument 7pou(U  
         A"z9t#dv@  
        For i = 1 To .TablesOfContents.Count fW[ .Q0  
            .TablesOfContents(i).Delete A$i^/hJs  
        Next +D2I~hC0'  
         FA+"t^q  
         LmytO$?2(  
         _M+7)[xj=  
        paraTotal = .Paragraphs.Count ac\([F-  
        paraCounter = 1 #qFY`fVf1  
         [r!f&R  
        LastTitle0No = 0 53 -O wjpx  
        LastTitle1No = 0 S9{A}+"K  
        LastTitle2No = 0 7MGvw-Tpb7  
        LastTitle3No = 0 "8"aYD_  
        LastTitle4No = 0 PW82 Vp.  
        LastTableNo = 0 AvPPsN0  
        LastFigureNo = 0 A'.=SA2.Y  
         !6x7^E;c  
        Dim Sec As Long )xiu \rC  
         '/)qI.  
        Sec = InputBox("正文从第一节开始?", "节设置", 6) 9VanR ::XX  
        If Sec = 0 Then d&\3}uH  
            Exit Sub f !{@{\  
        End If 2$ &B@\WY  
         h-kmZ<p|^  
        k = 0 " :f]egq -  
        Do While (paraCounter < paraTotal) And bContinue C T\@>!'f  
            k = k + 1 \Hdsy="Dnh  
            If .Paragraphs(paraCounter).Range.Information(wdActiveEndSectionNumber) >= Sec Then {xH?b0>  
                Exit Do 91]sO%3  
            End If AVm+ 1  
            paraCounter = paraCounter + 1 +H28F_ #  
            If k Mod 20 = 0 Then >ZW|wpO  
                Me.lbCounter.Caption = paraCounter a{@}vZx>3  
                DoEvents 5 5m\, UG7  
            End If T];dFv-GT  
        Loop tHAe  
         )XHn.>]nc  
         qXhdU/ =  
        Do While (paraCounter < paraTotal) And bContinue ({Pjz;xM  
             YRo,wsj  
            ParaText = Trim(.Paragraphs(paraCounter).Range.Text) ^,,}2dsb>  
            ShapeHeight = 0 6oKdw|(Q#  
            ShapeWidth = 0 Vn_~ |-Wt  
           rOz1tY)l0d  
            CheckPara .Paragraphs(paraCounter).Range, ParaType, rText, ttString, ttNo, ShapeCounter, ShapeHeight, ShapeWidth VZq~ -$  
             i(_A;TT6  
            Select Case ParaType lj UdsUw  
                Case "【】表格内容" -i1 f ]Bd  
                    .Paragraphs(paraCounter).Style = "QLNU表格内容" uovv">Uw  
                Case "章" NSBcYObX  
                    LastTitle0No = LastTitle0No + 1 h[&"KA  
                    '新一章开始,复位其下属标题编号 6]4#8tR1_  
                    LastTitle1No = 0  dOa9D  
                    LastTitle2No = 0 Ij$C@hH  
                    LastTitle3No = 0 +VNk#Z i  
                    LastTitle4No = 0 \ H~zN]3^  
                     *AYq :n6  
                    k = Val(ttNo) zg H(/@P  
                    If k = 0 Then '非数字编号章节 O=;jDWE  
                        If ttNo <> NoSeries1(LastTitle0No) Then o+B)  
                            rText = "第" & NoSeries1(LastTitle0No) & ttString ZPyzx\6\  
                            Me.ErrMsg.AddItem "章节编号错误:" & ParaText X^Z!!KTH  
                        End If L7d1)mV  
                    Else ?^M,Mt  
                        If Val(ttNo) <> LastTitle0No Then ,uAp;"YJeV  
                            rText = "第" & LastTitle0No & ttString X6",Xr! {  
                            Me.ErrMsg.AddItem "章节编号错误:" & ParaText TL)*onA9  
                        End If R|v'+bv  
                         JXM]tV   
                    End If Dz Q  
                     yIrJaS-  
                    '章段落设置 DY 9]$h*y  
                    '字体大小:三号16磅小三号15磅四号14磅小四号12磅五号10.5磅小五号9磅 &w#!   
                    .Paragraphs(paraCounter).Style = "QLNU章节" 'E+"N'M|  
                    .Paragraphs(paraCounter).Range.Select t&:L?K)j  
                    Selection.EndKey unit:=wdLine iaCV8`&q%  
                    tc = Replace(rText, vbCr, "") "VZXi_P  
                    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC  """ & tc & """ \l 1 ", PreserveFormatting:=False a&V;^ /  
                Case "一级标题" b>Y{,`E3  
                    LastTitle1No = LastTitle1No + 1 Dnl<w<}ZU:  
                    '新一级标题开始,复位其下属标题编号 B6Eu."T  
                    LastTitle2No = 0 15,JD  
                    LastTitle3No = 0 jj1\oyQ8  
                    LastTitle4No = 0 :aK?DtZ  
                     nYFrp)DLK  
                    If ttNo <> NoSeries1(LastTitle1No) Then ,zltNbu\.(  
                            rText = NoSeries1(LastTitle1No) & "、" & ttString .w;kB}$YC  
                            Me.ErrMsg.AddItem "一级标题编号错误:" & ParaText pF4Z4?W  
                    End If ZZ7qSyBs?  
                   : n QlS  
                     __2<v?\  
                    '一级标题段落设置  格式:一、标题内容 i'7+ ?YL  
                    .Paragraphs(paraCounter).Range.Text = rText h%krA<G9  
                    .Paragraphs(paraCounter).Style = "QLNU一级标题" 2o zh!8aL  
                    .Paragraphs(paraCounter).Range.Select IHYLM;@L  
                    Selection.EndKey unit:=wdLine Rd&DH_<+^  
                    tc = Replace(rText, vbCr, "") 6,a H[ >W  
                    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC  """ & tc & """ \l 1 ", PreserveFormatting:=False An$2='=/  
                Case "二级标题" Jjm#ofv  
                    LastTitle2No = LastTitle2No + 1 xH xTL>,?  
                    '新二级标题开始,复位其下属标题编号 gf1+yJ^d!  
                    LastTitle3No = 0 Vv45w#w;  
                    LastTitle4No = 0 'gvR ?[!t  
                     KWZhCS?[(  
                    If ttNo <> NoSeries1(LastTitle2No) Then l6y}>]  
                            rText = "(" & NoSeries1(LastTitle2No) & ")" & ttString ocFk#FW  
                            ErrMsg.AddItem "二级标题编号错误:" & ParaText )@X0'X<  
                    End If C+ll A  
                     ;Mup@)!j  
                    '二级标题段落设置 格式:(一)、标题内容 |Ha#2pt{bc  
                    .Paragraphs(paraCounter).Range.Text = rText D%abBE1  
                    .Paragraphs(paraCounter).Style = "QLNU二级标题" ^J5{quV  
                     u0c}[BAF  
                    .Paragraphs(paraCounter).Range.Select j/z=<jA  
                    Selection.EndKey unit:=wdLine qyv=ot0"~F  
                    tc = Replace(rText, vbCr, "") oojl"j4  
                    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC  """ & tc & """ \l 2 ", PreserveFormatting:=False ca{MJz'  
                 V`1,s~"q  
                Case "三级标题" $ [A\i<#  
                    LastTitle3No = LastTitle3No + 1 ;~EQS.Qp  
                    '新三级标题开始,复位其下属标题编号 TK fN`6  
                    LastTitle4No = 0 NS~;{d \  
                     Aj)Q#Fd[  
                    If Val(ttNo) <> LastTitle3No Then I5_HaC >  
                            rText = LastTitle3No & ". " & ttString Ic9L@2m  
                            Me.ErrMsg.AddItem "三级标题编号错误:" & ParaText nUOi~cs  
                         O=A2QykV(  
                    End If F5Z,Jmi^M  
                    '三级标题段落设置 格式:1. 标题内容 ?B1Zfu0  
                    .Paragraphs(paraCounter).Range.Text = rText 4P&2Z0  
                    .Paragraphs(paraCounter).Style = "QLNU三级标题" \3$!)z  
                    .Paragraphs(paraCounter).Range.Select >%k6k1CZ  
                    Selection.EndKey unit:=wdLine eHuJFM  
                    tc = Replace(rText, vbCr, "") R qtBz3v  
                    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC  """ & tc & """ \l 3 ", PreserveFormatting:=False MQQm3VaKS  
                Case "四级标题" ]7O<|8n!d  
                    LastTitle4No = LastTitle4No + 1 mK[Z#obc=  
                     D&" D[|@  
                    If Val(ttNo) <> LastTitle4No Then r<ucHRO#  
                            rText = "(" & LastTitle4No & "). " & ttString yGdX >h  
                            ErrMsg.AddItem "四级标题编号错误:" & ParaText #cu{AdK  
                     = /!lK&  
                    End If =FrB{Eu  
                    '四级标题段落设置 格式:(1). 标题内容 @"-\e|[N  
                    .Paragraphs(paraCounter).Range.Text = rText G{3 |d/;Bt  
                    .Paragraphs(paraCounter).Style = "QLNU四级标题" wQSye*ec  
                    .Paragraphs(paraCounter).Range.Select V0=%$tH  
                    Selection.EndKey unit:=wdLine G aV&y  
                    tc = Replace(rText, vbCr, "") Q$c6l[(g  
                    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="TC  """ & tc & """ \l 4 ", PreserveFormatting:=False gvA}s/   
                 N2v/<  
                Case "表格标题" e @Lxduq  
                    LastTableNo = LastTableNo + 1 -GA F>  
                     5e /YEDP  
                    If ttNo <> CStr(LastTableNo) Then z#^fS |  
                            rText = "表" & LastTableNo & ". " & ttString q(6.VU@  
                            ErrMsg.AddItem "表格编号错误:" & ParaText 1)56ec<c  
                   TI4Hu,rc  
                    End If 5 wrRtzf  
                     U X@%1W!8  
                    '表格名称段落设置 格式:表1. 表格名称 ,Uz8_r  
                    .Paragraphs(paraCounter).Style = "QLNU表格标题" OT%E|) 6'  
                    xe = Replace(rText, vbCr, "") #$I@V4O;#  
                    .Paragraphs(paraCounter).Range.Select LE\=Y;%  
                    Selection.MoveEnd wdCharacter, -1   '选择范围包括行尾的换行符。 j#1G?MF  
                    Selection.Range.Text = xe Uj):}xgi'  
                    Selection.EndKey Yv5H41o"  
                    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="XE  " & """" & xe & """", PreserveFormatting:=False N/bOl~!y  
                 "`$,qvNN  
                Case "表格首行" mdWA5p(  
                    .Paragraphs(paraCounter).Style = "QLNU表格首行" RpQeQM=  
                Case "图片标题" rm8Ys61\=  
                    LastFigureNo = LastFigureNo + 1 .eR1\IAm  
                     QQM:[1;RT  
                    If ttNo <> CStr(LastFigureNo) Then @-'a{hBR  
                            rText = "图" & LastFigureNo & ". " & ttString K*SgEkb'l  
                            ErrMsg.AddItem "表格编号错误:" & ParaText "lI-/ G  
                   FH+X<  
                    End If 1f`De`zXzr  
                    '图片名称段落设置 格式:图1. 图名称 Io1j%T#ZT  
                    .Paragraphs(paraCounter).Range.Text = rText  Y~WdN<g  
                    .Paragraphs(paraCounter).Style = "QLNU图片标题" m2c'r3UEu  
                    .Paragraphs(paraCounter).Range.Select 5#,H&ui\  
                    Selection.EndKey unit:=wdLine ~5f&<,p!  
                    xe = Replace(rText, vbCr, "") qq/>E*~  
                    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="XE  " & """" & xe & """", PreserveFormatting:=False ]YgR  
                Case "正文" >>y`ap2%V  
                     '正文名称段落设置 <+_XGOt0<  
                    .Paragraphs(paraCounter).Style = "QLNU正文" jk9f{Iu  
               Case "文献条目" Y%XF64)6  
                    With .Paragraphs(paraCounter) j uA@"SG  
                        '.Range.Select {^WK#$]  
                        'Selection.ClearFormatting ~U0%}Bbh  
                        '.Range.Find.Execute findtext:=rText, replacewith:=strSeperator   'Replacetext 传回了编号及分隔符部分, 而StrSeperator传回了正确的格式与分隔符如“[15] ” c ZYy+  
                        .Style = "QLNU参考文献" j_~KD}  
                    End With |ia5Mr"t  
               Case "图表注解" hOY@vm&  
                    With .Paragraphs(paraCounter) a!9'yc  
                        .Range.Font.NameFarEast = "楷体" @C)s4{V  
                        .Range.Font.NameAscii = "Times New Roman" xB *b7-a  
                        .Range.Font.Size = 9 '小5号字 mn7I# ~  
                         VJ~D.ec  
                        .Alignment = wdAlignParagraphCenter BNfj0e5b  
                        .LeftIndent = 0  ]n!V  
                        .RightIndent = 0 m,k 0 h%  
                        .FirstLineIndent = 0 HwUaaK   
                        .LineSpacing = 12 T/_u;My;  
                        .LineSpacingRule = wdLineSpaceExactly ipu!{kJ  
                        .LineUnitAfter = 0 7q ?ZieR  
                        .LineUnitBefore = 0 E#$Jg|e  
                        .OutlineLevel = wdOutlineLevelBodyText .a.H aBBV  
                        .PageBreakBefore = False ^dI;B27 E*  
                        .RightIndent = 0 Q$E.G63Wl  
                        .WordWrap = True YThVG0I =  
                        .LineUnitAfter = 0.5 *;fTiL  
                         VeGSr  
                    End With x+X@&S  
                Case Else 2dD" ^z{  
                    '不作处理 q)?%END  
            End Select ~#r>@C  
             r&{8/ 5 "  
            '含有inlineshape的段落处理 A2|Bbqd  
            If ShapeHeight > 30 Then FDMQ Lxf  
                .Paragraphs(paraCounter).LineSpacingRule = wdLineSpaceSingle  '对有图片的段落设置为单倍行距 @d WA1tM  
            End If V<QpC5  
             Uwc%'=@  
            If (ShapeWidth + ShapeHeight) > 150 Then :_8K8Sa  
                .Paragraphs(paraCounter).Style = "QLNU图片段落" )|~& (+Q?]  
            End If &C9IR,&  
             iWs6 !s!  
            '段落计数器递 C/k#gLF`  
            paraCounter = paraCounter + 1 j& 8YE7  
            Me.lbCounter.Caption = "当前检测段落:" & paraCounter O[ma% E*0  
            Me.txtStatus.Text = ParaText #a e@VedM  
            DoEvents I-]G{  
        Loop 5pCicwea#  
    End With hX.cdt_?  
     -9b=-K.y  
    msg = "" uY]';Ot G  
     _3`G ZeGV  
    For i = 0 To Me.ErrMsg.ListCount - 1 \p4*Q}t  
        msg = msg & vbCrLf & vbCrLf & Me.ErrMsg.List(i) &}"kF\  
    Next ~H}Z;n ]H  
     y%TqH\RKv  
     9@*pC@I)  
     C4mkt2Eb0a  
    Me.txtStatus.Text = "格式化完成!" & vbCrLf & "开始时间:" & tm1 & vbCrLf & "结束时间:" & Now & vbCrLf & msg f 2WVg;Z  
    Me.cmdCheck.Enabled = True C-YYG   
    Me.txtStatus.Visible = True [V'c  
    Me.lbParaType.Visible = False C'JI%HnQ  
     s41%A2Enh  
    bContinue = False Tn7Mt7h  
End Sub =XfvPBA  
suN6(p(.  
Sub CheckPara(ByRef ChKRange As Range, ParaType As String, ReplaceTEXT As String, TitleString As String, TitleNo As String, shpCounter As Long, MaxShpHeight As Long, TotalShpWidth As Long) {7:1F)Pj  
    Dim pTEXT As String \.i7( J]  
     e>Mt DJ5  
    pTEXT = ChKRange.Text b~gq8,Fatb  
     Hn /t'D3  
    ParaType = "其它" uw+nll*W%  
    TitleString = pTEXT j1_>>xB  
    TitleNo = "N/A" :'[?/<iTg  
     #{6VdWZ  
    shpCounter = ChKRange.InlineShapes.Count REh"/d  
    If shpCounter <> 0 Then O*u   
        MaxShpHeight = 0: TotalShpWidth = 0 ~c EN=(Z~r  
        For i = 1 To shpCounter Et0gPX-  
            k = ChKRange.InlineShapes(i).Height 2*cNd}qr  
            l = ChKRange.InlineShapes(i).Width S5).\1m h[  
            If k > MaxShpHeight Then 3f`Uoh+  
                MaxShpHeight = k q[U pP`Z%  
            End If iJ{axa &  
            TotalShpWidth = TotalShpWidth + l G4|C227EO  
        Next PaTOlHr  
        If MaxShpHeight > 60 Or TotalShpWidth > 150 Then b] 5dBZ(  
            Exit Sub  0~nX7  
        End If -'&l!23a~  
    End If Zu x L2W  
     {!I`EN]  
    '空行 7P$*qj~Vh  
    If Len(pTEXT) <= 2 Then $bE" 3/uf  
        Exit Sub o,i_py  
    End If .x=abA$!9  
     F'uqL+jVO  
         f7&ni#^Ztj  
    '是否为表格中的文字 6()Jx%  
    If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdWithInTable) Then 4@{;z4*`  
        ParaType = "表格内容" (Y~/9a4X  
        k = ActiveDocument.Paragraphs(paraCounter).Range.Information(wdEndOfRangeRowNumber) G#7*O`  
        If k = 1 Then b 8@}Jv  
            ParaType = "表格首行" h4n~V:nNm  
        End If #un'?]tZF  
        Exit Sub ,a5q62)q  
    End If C. .|O  
     >!fTWdD^  
    '例外情况:脚注 K_M Ed1l  
    If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInFootnote) Then ie1~QQ  
        ParaType = "脚注" W? G4>zA  
        Exit Sub (Yy#:r ;U  
    End If WL+EpNKSf  
     T e+ #  
    '例外情况:尾注 dp W`e>o  
    If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInEndnote) Then Id?-Og2i V  
        ParaType = "尾注" 3~sV-  
        Exit Sub Y1 Ql_  
    End If > )4~,-;k  
     ) 8xbc&M  
    If ActiveDocument.Paragraphs(paraCounter).Range.Information(wdInHeaderFooter) Then r*{.|>me  
        ParaType = "页眉页脚" jZ~girA  
        Exit Sub [r2V+b.C  
    End If k)+{Y v*  
     g3ukx$Q{>  
     8(? &=>@  
    With regEX g0 Q,]\~  
        .Global = True  l7t  
         `Am|9LOT  
        .Pattern = "^第([1-9]|1|2|3|4|5|6|7|8|一|二|三|四|五|六|七|八|九|十)章(、|\.|\s|。|.)+(.{1,30})$" rO}1E<g (  
        If regEX.Test(pTEXT) Then -c>3|bo  
            ReplaceTEXT = regEX.Replace(pTEXT, "第$1章 $3")  nS]e  
            TitleString = regEX.Replace(pTEXT, "$3") 4zs0+d +  
            TitleNo = regEX.Replace(pTEXT, "$1") BsA4/Bf  
            ParaType = "章"  KcT(/!  
            Exit Sub u&*[   
        End If ;1~n |IY  
         R*6TS"aL  
        .Pattern = "^(十一|十二|十三|十四|十五|十六|一|二|三|四|五|六|七|八|九|十)(、|\.|\s|。|.)+(.{1,40})$" }oD^tU IK  
        If regEX.Test(pTEXT) Then "/R?XCBZsb  
            ParaType = "一级标题" =sW K;`  
            regEX.Execute (pTEXT) (\qf>l+*  
            ReplaceTEXT = regEX.Replace(pTEXT, "$1、$3") m+M^we*R  
            TitleString = regEX.Replace(pTEXT, "$3") Ktk?(49  
            TitleNo = regEX.Replace(pTEXT, "$1") |21V OPBS  
            Exit Sub <8(q .  
        End If +P))*0(c_  
         X}GX6qAdt  
        '全角或半角括号中的数字 remc_}`w  
        .Pattern = "(^\(|()(十一|十二|十三|十四|十五|十六|一|二|三|四|五|六|七|八|九|十)(\)|))(、|\.|\s|。|.)*(.{1,40})$" 4l0>['K&{  
        If regEX.Test(pTEXT) Then Eq_@ xT0>  
            ParaType = "二级标题" e\}@w1  
            regEX.Execute (pTEXT) -']Idn6  
            ReplaceTEXT = regEX.Replace(pTEXT, "($2)$5") kiF}+,z"  
            TitleString = regEX.Replace(pTEXT, "$5") OsOfo({I_  
            TitleNo = regEX.Replace(pTEXT, "$2") O C;~ H{  
            Exit Sub W2<'b05  
        End If OTYkJEC8\N  
         (%6fZ  
        '阿拉伯数字  1. 2. oyiG04H&  
        .Pattern = "^([1-9]|1|2|3|4|5|6|7|8|9|0){1,2}(、|\.|\s|。|.)+(.{1,80})$" D{t_65c-  
        If regEX.Test(pTEXT) Then 6EY\  
            ParaType = "三级标题" /K2[`+-  
            regEX.Execute (pTEXT) :"y2u   
            ReplaceTEXT = regEX.Replace(pTEXT, "$1. $3") '未进行全半角转换,如需要可分成两步分别检测 d\-*Fmp(S  
            TitleString = regEX.Replace(pTEXT, "$3") >JNdtP8s/1  
            TitleNo = regEX.Replace(pTEXT, "$1") -[*y{K@dh  
            Exit Sub J[}j8x?r  
        End If $\m:}\%p  
         &t UX(  
        '全角或半角括号中的阿拉伯数字 5Y;&L!T  
        .Pattern = "^(^\(|()([0-9]|0|1|2|3|4|5|6|7|8|9){1,2}(\)|))(、|\.|\s|。|.)*(.{1,80})$" ]HWeVhG  
        If regEX.Test(pTEXT) Then W /v &V#  
            ParaType = "四级标题" 7oC8I D  
            regEX.Execute (pTEXT) ea{zL  
            ReplaceTEXT = regEX.Replace(pTEXT, "($2) $5") $JOtUB{  
            TitleString = regEX.Replace(pTEXT, "$5") PC5$TJnj3  
            TitleNo = regEX.Replace(pTEXT, "$2") {JdXn  
            Exit Sub =Fe4-B?I  
        End If $$$[Vn_H<  
         iklZ[G%A0  
        '表格名称 dOaOWMrfdf  
        .Pattern = "^表(\d{1,2}-{0,1}\d{0,1})([、|\.|。|.|\s]{1,9})(.{1,120})$" hc W>R  
        If regEX.Test(pTEXT) Then ~;b}_?%o  
            ParaType = "表格标题" e>_a (  
            regEX.Execute (pTEXT) /pRv i>_(:  
            ReplaceTEXT = Trim(regEX.Replace(pTEXT, "表$1. $3")) _o w7E\70  
            TitleString = Trim(regEX.Replace(pTEXT, "$3")) #+<YFm\i  
            TitleNo = Trim(regEX.Replace(pTEXT, "$1")) zn/>t-Bc  
            strSeperator = Trim(regEX.Replace(pTEXT, "$2")) '不知道为什么,但是发现传回的replacetext在修改Paragraph对象的Range.Text后,表格标题就会落入第一个单元格中,所以,只能用Paragraph.Range.Find.Execute方法替换 n:a~=^IV  
            Exit Sub (e;/Smol  
        End If _k}Qe ;  
         a,fcKe&B  
        '图片名称 _rSwQ<38>  
        .Pattern = "^图(\d{1,2}-{0,1}\d{0,1})(、|\.|\s|。|.)+(.{1,120})$" J<0sT=/2$  
        If regEX.Test(pTEXT) Then xm=Gt$>.o  
            ParaType = "图片标题" d v4~CW%Td  
            regEX.Execute (pTEXT) 7Tp +]"bL  
            ReplaceTEXT = regEX.Replace(pTEXT, "图$1. $3") D<70 rBf2  
            TitleString = regEX.Replace(pTEXT, "$3") 44 8%yP  
            TitleNo = regEX.Replace(pTEXT, "$1") }S*]#jr&  
            Exit Sub ~|<'@B! 6  
        End If uju'Bs7   
         &CQ28WG X  
        '参考文献 ;pL!cG@  
        .Pattern = "^([\[|[])(\d+)([]|\]])([、|\.|\s|。|.]{0,1})"  '[数字]、 InL_JobE8r  
        If regEX.Test(pTEXT) Then #HP-ne; #  
            ParaType = "文献条目"  "O# V/(  
            'ReplaceTEXT = regEX.Replace(pTEXT, "$1$2$3$4") IPTFx )]G  
            'TitleNo = regEX.Replace(pTEXT, "[$2] ") Ca5LLG  
            Exit Sub X#by Dg  
        End If jBEW("4R  
         ]?V:+>t=  
        prfx = Left(pTEXT, 2) 8@doKOA~T  
        If prfx = "注:" Or prfx = "注:" Then Z6b]EcP)#  
            ParaType = "图表注解" S5gBVGh  
            Exit Sub jp "Q[gR##  
        End If g'!"klS93  
         7`7M4  
         ,+d8   
        ParaType = "正文" Ze /\IBd  
         %$Fe[#1  
    End With F7<u1R x]  
End Sub <^$ppwk $  
P@bPdw!JA  
Sub ConvertListToOrdinary() Z molL0y  
    Dim st As Paragraph oumbJ7X=L  
    With ActiveDocument K20Hh7cVJ  
        For i = .Paragraphs.Count To 1 Step -1 X   
            Set st = .Paragraphs(i) l d"rL6  
            lst = st.Range.ListFormat.ListString -F(luRBS(W  
            If lst <> "" Then 60n>FQ<  
                st.Range.ListFormat.RemoveNumbers 7'At_oG  
                st.Range.InsertBefore lst & " " *oLDy1<  
            End If /)RH-_63  
        Next AcJrJS)~  
    End With -k:x e:$  
    Set st = Nothing Sz|kXk6&9  
End Sub r=37Q14v  
rosD)]I7  
Private Sub UserForm_Activate() .p Mwa  
    Me.lbTotal.Caption = "当前文章段落总数:" & ActiveDocument.Paragraphs.Count & " 共" & ActiveDocument.Sections.Count & "节" %* K zP{  
    Me.lbTotal.Font.Bold = True #Mk3cp^Yl  
    Me.txtStatus.Visible = False w)&4i$Lk6  
    Me.cmdCheck.Enabled = True o; 6^:  
Z0M,YSnz  
End Sub Aua}.Fl,  
P B-x_D  
fVZ9 2Xw B  
Sub CheckSuperScript() CL`+\ .  
    Selection.Find.ClearFormatting ?x 0gI   
    Selection.Find.Replacement.ClearFormatting v2r|) c,h  
    With Selection.Find r# oJch=  
        .Text = "[【\[[〖](*)[】\]〗]]" 48S NI  
        .Replacement.Text = "[\1]" h=6D=6c  
        .Replacement.Font.Superscript = True o[RwK  
        '.Replacement.Font.Color = wdColorBlue ePq(.o  
        .Forward = True ?v:F GO  
        .Wrap = wdFindContinue @+nCNXK  
        .FORMAT = True }l}_'FmQ  
        .MatchCase = False )n<p_vz  
        .MatchWholeWord = False gB%"JDn8  
        .MatchByte = False y5KeUMcu  
        .MatchAllWordForms = False ;,uATd|  
        .MatchSoundsLike = False W!"QtEJ,  
        .MatchWildcards = True GJ`._ju  
    End With <5Ll<0  
    Selection.Find.Execute Replace:=wdReplaceAll NB44GP1-@  
End Sub I5QtPqB>  
`gC J[  
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) T#6g5Jnsp  
    bContinue = False 2z$!}  
    Set regEX = Nothing E`xpZ>$mPx  
End Sub CY.92I@S  
}(DH_0  
Sub CeateOrModifyStyle() 4o ";p}[b  
' EUh_`R  
' LPs5L E[Pm  
Dim stl As Style U8gj \G\`  
     ;"#yHP`  
    Options.Pagination = False K } T=j+  
     #Muh|P]%\  
    On Error Resume Next db_}][;.c  
    For Each stl In ActiveDocument.Styles R -<8j`[0  
        stl.Delete J"S(GL  
    Next ? [5>!   
    On Error GoTo 0 G{,DoCM5WL  
     " 1XTgCu\  
    Set stl = Nothing B#`'h~(7  
     ~xDu2 -5  
    DoEvents XM"Qs.E  
    On Error Resume Next _E8Cvaob  
     9Nna-}e?W  
    ActiveDocument.Styles.Add Name:="BaseStyle", Type:=wdStyleTypeParagraph }/\`'LQ  
     Gj%q:[r  
    ActiveDocument.Styles.Add Name:="QLNU论文题目", Type:=wdStyleTypeParagraph C[jX;//Jiu  
    ActiveDocument.Styles.Add Name:="QLNU中文摘要", Type:=wdStyleTypeParagraph [n&ES \o#(  
     h {zb)'R  
    ActiveDocument.Styles.Add Name:="QLNU英文标题", Type:=wdStyleTypeParagraph )FG/   
    ActiveDocument.Styles.Add Name:="QLNU英文摘要", Type:=wdStyleTypeParagraph \M|:EG%  
     @vib54G  
    ActiveDocument.Styles.Add Name:="QLNU目录项", Type:=wdStyleTypeParagraph Tb;,t=;u  
    ActiveDocument.Styles.Add Name:="QLNU章节标题", Type:=wdStyleTypeParagraph T*8 S7l  
    ActiveDocument.Styles.Add Name:="QLNU一级标题", Type:=wdStyleTypeParagraph `'5vkO>  
    ActiveDocument.Styles.Add Name:="QLNU二级标题", Type:=wdStyleTypeParagraph av5a2r0W1  
    ActiveDocument.Styles.Add Name:="QLNU三级标题", Type:=wdStyleTypeParagraph HCkfw+gaV  
    ActiveDocument.Styles.Add Name:="QLNU四级标题", Type:=wdStyleTypeParagraph a[z$ae7  
    ActiveDocument.Styles.Add Name:="QLNU正文", Type:=wdStyleTypeParagraph !%t2Z QJq  
     3b#L*-  
    ActiveDocument.Styles.Add Name:="QLNU表格标题", Type:=wdStyleTypeParagraph 9@IL547V  
    ActiveDocument.Styles.Add Name:="QLNU表格首行", Type:=wdStyleTypeParagraph j+dQI_']x  
    ActiveDocument.Styles.Add Name:="QLNU表格内容", Type:=wdStyleTypeParagraph %CnNu  
    ActiveDocument.Styles.Add Name:="QLNU图片标题", Type:=wdStyleTypeParagraph 2"shB(:z>  
    ActiveDocument.Styles.Add Name:="QLNU图片段落", Type:=wdStyleTypeParagraph z Fj|E  
     &tf(vU;,'  
    ActiveDocument.Styles.Add Name:="QLNU参考文献", Type:=wdStyleTypeParagraph V?0IMc  
    On Error GoTo 0 \et2aX !  
    DoEvents m]}U!XT  
     5}_=q;sZ  
    'BaseStyle RL\?i~'KH  
    ActiveDocument.Styles("BaseStyle").AutomaticallyUpdate = False j+3rS  
    With ActiveDocument.Styles("BaseStyle").Font T%FW|jKw  
        .NameFarEast = "宋体" L<iRqayn  
        .NameAscii = "Times New Roman" :x5O1Zn/t  
        .NameOther = "宋体" 79}jK"Gc  
        .Size = 10.5 G9am}qr  
        .Bold = wdUndefined dHg[r|xC  
        .Italic = wdUndefined bWlY Q  
        .Subscript = wdUndefined ypGt6t(;  
        .Subscript = wdUndefined [MKG5=kaE  
         =-r); d   
        .Underline = wdUnderlineNone <]DUJuF-M  
        .UnderlineColor = wdColorAutomatic  /d!  
        .StrikeThrough = False |*b-m k  
        .DoubleStrikeThrough = False fE)o-q6Z  
         $`%Om WW{  
        .Outline = False XpkOCo02  
        .Emboss = False 3O Ks?i3A  
        .Shadow = False ~b X~_\  
        .Hidden = False .}Xf<G&  
        .SmallCaps = False k?L2LIB<  
        .AllCaps = False -&]!ig5v  
        .Color = wdColorAutomatic Nmt~1.J  
        .Engrave = False Jd v;+HN[  
        .Scaling = 100 XR[=W(m}  
        .Kerning = 1 \/\w|j  
        .Animation = wdAnimationNone %I!2dXNFRF  
        .DisableCharacterSpaceGrid = False /J!:_Nq  
        .EmphasisMark = wdEmphasisMarkNone Wb cm1I)  
    End With #639N9a~  
    With ActiveDocument.Styles("BaseStyle").ParagraphFormat QS\wtTXj  
        .LeftIndent = 0 7hu7rWY`E  
        .RightIndent = 0 }(XKy!G6  
        .SpaceBefore = 0 FIVC~LDd  
        .SpaceBeforeAuto = False kw#-\RR_c  
        .SpaceAfter = 0 :?y Ma$  
        .SpaceAfterAuto = False RP+)sCh  
         |6^%_kO!|  
        .LineSpacingRule = wdLineSpaceSingle H[OgnnM  
        .Alignment = wdAlignParagraphJustify cPAR.h,b?  
         F&7|`o3  
        .WidowControl = False <-N2<s l  
        .KeepWithNext = False u^JsKG+,:  
        .KeepTogether = False u3,O)[qV  
        .PageBreakBefore = False :/E s%z D  
        .NoLineNumber = False goF87^M  
         gJ9"$fIPc  
        .FirstLineIndent = CentimetersToPoints(0) v2:i'j6  
        .OutlineLevel = wdOutlineLevelBodyText v4'kV:;&  
        .CharacterUnitLeftIndent = 0 Ok\X%avq  
        .CharacterUnitRightIndent = 0 u PYH3<  
        .CharacterUnitFirstLineIndent = 0 1iLU{m9  
        .LineUnitBefore = 0 -/Wf iE  
        .LineUnitAfter = 0 f{[0;qDJ  
        .AutoAdjustRightIndent = True 1kvs2  
        .DisableLineHeightGrid = True `]@=Hx(  
         R?9x!@BV  
        .FarEastLineBreakControl = True ( C).Vj~  
        .WordWrap = True 9 6#]P  
        .Hyphenation = False Gky^S#  
         5F ^VvzNn  
        .HangingPunctuation = True FY^Nn  
        .HalfWidthPunctuationOnTopOfLine = True $)8,dS  
        .AddSpaceBetweenFarEastAndAlpha = True /Yg&:@L  
        .AddSpaceBetweenFarEastAndDigit = True <Q- m &  
        .BaseLineAlignment = wdBaselineAlignBaseline R1w5,Zt  
    End With Yc_(g0NK  
    ActiveDocument.Styles("BaseStyle").NoSpaceBetweenParagraphsOfSameStyle = False yf8kBT:&S  
    ActiveDocument.Styles("BaseStyle").ParagraphFormat.TabStops.ClearAll kcg\f@d$  
    ActiveDocument.Styles("BaseStyle").LanguageID = wdSimplifiedChinese ]b sabS?  
    ActiveDocument.Styles("BaseStyle").NoProofing = False v*dw'i  
     d}ycC.h4k  
    '一级标题题样式 b8YdONdy  
    ActiveDocument.Styles("QLNU一级标题").BaseStyle = ActiveDocument.Styles("BaseStyle") y@LiUe5  
    ActiveDocument.Styles("QLNU一级标题").NextParagraphStyle = "BaseStyle" ~7*2 Jp'  
    ActiveDocument.Styles("QLNU一级标题").AutomaticallyUpdate = False G-RDQ  
    With ActiveDocument.Styles("QLNU一级标题").Font SZ$WC8AX  
        .NameFarEast = "黑体" NW 2`)e'  
        .NameAscii = "Arial Black" Qr7v^H~E4.  
        .NameOther = "黑体" 10c.#9$  
        .Name = "黑体" ^[Ka+E^Q  
        .Size = 16              '三号 vDi Opd  
        .Bold = True =8<~pr-NO  
        .Italic = wdUndefined $6D* G-*8  
        .Subscript = wdUndefined ^->S7[N?  
        .Superscript = wdUndefined R)\^*tkz7  
    End With %8xRT@Q  
    With ActiveDocument.Styles("QLNU一级标题").ParagraphFormat #)]t4wa_W  
         woP j>M  
        .LeftIndent = CentimetersToPoints(0) MpZ\ j  
        .RightIndent = CentimetersToPoints(0) NIbK3`1  
        .FirstLineIndent = CentimetersToPoints(0) NT5'U  
         J,u-)9yBA<  
        .LineSpacingRule = wdLineSpaceSingle 02*qf:kTnA  
        .Alignment = wdAlignParagraphCenter ~gMt U  
         w=rD8 @  
        .WidowControl = True gOW8 !\V  
        .KeepWithNext = True gM=:80  
        .KeepTogether = True EEL3~H{(  
        .OutlineLevel = wdOutlineLevelBodyText -]D/8,|s  
         YC56] Zp  
        .LineUnitBefore = 0.5 \#B<'J9.`  
        .LineUnitAfter = 0.5 6W=V8  
    End With LfFXYX^  
    ActiveDocument.Styles("QLNU一级标题").NoSpaceBetweenParagraphsOfSameStyle = False zUv#%Q8vw  
    ActiveDocument.Styles("QLNU一级标题").ParagraphFormat.TabStops.ClearAll fbbbTZy  
    ActiveDocument.Styles("QLNU一级标题").LanguageID = wdSimplifiedChinese xY!ud)  
    ActiveDocument.Styles("QLNU一级标题").NoProofing = True n;N79`mZC  
    DoEvents |Rhqi  
     s<k2vbh I  
    '二级 P#XV_2  
    ActiveDocument.Styles("QLNU二级标题").BaseStyle = ActiveDocument.Styles("BaseStyle") Bi :!"Nw[X  
    ActiveDocument.Styles("QLNU二级标题").NextParagraphStyle = "BaseStyle" x(eX.>o\  
    ActiveDocument.Styles("QLNU二级标题").AutomaticallyUpdate = False i-5,* 0e6m  
    With ActiveDocument.Styles("QLNU二级标题").Font c-Yd> 4+ 1  
        .NameFarEast = "黑体" e3:L]4t  
        .NameAscii = "Arial Narrow" Rq[d\BN0.d  
        .NameOther = "黑体" { $yju_[  
        .Name = "黑体" ~eoM 2XlW  
        .Size = 15        '小三号 *0eU_*A^zO  
        .Bold = False {)!>e  
        .Outline = False u{\'/c7G  
        .Italic = wdUndefined P}A!C9Frh  
        .Subscript = wdUndefined ,#&7+e!]>P  
        .Superscript = wdUndefined zhFm2   
    End With P+|L6w*|[  
    With ActiveDocument.Styles("QLNU二级标题").ParagraphFormat T>L?\-  
        .LeftIndent = CentimetersToPoints(0) 25{_x3t^  
        .RightIndent = CentimetersToPoints(0) h3 XS t  
        .FirstLineIndent = CentimetersToPoints(0) SZHgXl3:  
         Z f\~Cl  
        .LineSpacingRule = wdLineSpaceSingle b"N!#&O]  
        .Alignment = wdAlignParagraphLeft *`Vmncv3  
         S**eI<QFSk  
        .WidowControl = True /9I/^i~  
        .KeepWithNext = True =D Q :0w  
        .KeepTogether = True \i%mokfbc  
        .PageBreakBefore = False urjf3h[%  
        .OutlineLevel = wdOutlineLevelBodyText {A:uy  
         $#u'XyA  
        .LineUnitBefore = 0.5 X|eZpIA45  
        .LineUnitAfter = 0.5 qa )BbK^i  
         5h6o}  
    End With _(kaaWJ  
    ActiveDocument.Styles("QLNU二级标题").NoSpaceBetweenParagraphsOfSameStyle = False 4m1r@ $  
    ActiveDocument.Styles("QLNU二级标题").ParagraphFormat.TabStops.ClearAll DHw)]WB M  
    ActiveDocument.Styles("QLNU二级标题").LanguageID = wdSimplifiedChinese W [K.|8ho  
    ActiveDocument.Styles("QLNU二级标题").NoProofing = True bSX/)')j U  
    DoEvents +?m.uY(  
     @&WHX#  
    '三级标题样式 OVe0{} j  
    ActiveDocument.Styles("QLNU三级标题").BaseStyle = ActiveDocument.Styles("BaseStyle") g""GQeR  
    ActiveDocument.Styles("QLNU三级标题").NextParagraphStyle = "BaseStyle" F!0iM)1o  
    ActiveDocument.Styles("QLNU三级标题").AutomaticallyUpdate = False B#SVN Lv  
    With ActiveDocument.Styles("QLNU三级标题").Font K SO D(  
        .NameFarEast = "宋体" ';/J-l/SE  
        .NameAscii = "Times New Roman" T:Klr=&V  
        .NameOther = "黑体" <]LljTm`i  
        .Name = "黑体" /YF:WKr2  
        .Size = 14               '四号 c:9n8skE7  
        .Bold = False fTvm2+.nX  
        .Outline = False FC, =g`Q!  
        .Italic = wdUndefined l$/lbwi%  
        .Subscript = wdUndefined ^9q#,6  
        .Superscript = wdUndefined kv3Dn&<rJ  
    End With :\His{%  
    With ActiveDocument.Styles("QLNU三级标题").ParagraphFormat _J W|3q  
        .LeftIndent = CentimetersToPoints(0) Op ?"G  
        .RightIndent = CentimetersToPoints(0) I_u/  
        .FirstLineIndent = CentimetersToPoints(0) Xzf,S;XV~  
         "W (Ae="60  
        .LineSpacingRule = wdLineSpaceSingle .)!QsBU  
        .Alignment = wdAlignParagraphLeft @&O4a2+  
         <TRhnz  
        .WidowControl = True Wx{E\ l  
        .KeepWithNext = True Hn(1_I%zF  
        .KeepTogether = True NBc^(F "  
        .PageBreakBefore = False }>0>OqvF  
        .OutlineLevel = wdOutlineLevelBodyText o5F:U4sG  
         &gY) x{  
        .CharacterUnitLeftIndent = 0 %(lO>4>|  
        .CharacterUnitRightIndent = 0 |9c~kTjK  
        .CharacterUnitFirstLineIndent = 2 }a6t<m`V  
         $%cc[[/U  
        .LineUnitBefore = 0.5 PKSfu++Z  
        .LineUnitAfter = 0 ^Q$OzsEk  
    End With 4#03x:/<\  
    ActiveDocument.Styles("QLNU三级标题").NoSpaceBetweenParagraphsOfSameStyle = False TI< x;p  
    ActiveDocument.Styles("QLNU三级标题").ParagraphFormat.TabStops.ClearAll "Nj/{BU  
    ActiveDocument.Styles("QLNU三级标题").LanguageID = wdSimplifiedChinese #[lhem]IC  
    ActiveDocument.Styles("QLNU三级标题").NoProofing = True gaY&2  
    DoEvents x2#JD|0  
     Kx] SiejJ  
    '四级标题样式 Ms(xQ[#+  
    ActiveDocument.Styles("QLNU四级标题").BaseStyle = ActiveDocument.Styles("BaseStyle") }:ZA)  
    ActiveDocument.Styles("QLNU四级标题").NextParagraphStyle = "BaseStyle" r%ES#\L6+|  
    ActiveDocument.Styles("QLNU四级标题").AutomaticallyUpdate = False tZ9i/=S  
    With ActiveDocument.Styles("QLNU四级标题").Font iT4*~(p 3  
        .NameFarEast = "宋体" &9#m] Mz  
        .NameAscii = "Times New Roman" Ytlzn%  
        .NameOther = "宋体" U-u?oU-.'  
        .Name = "宋体" _f^KP@^j  
        .Size = 12               '小四号 e;6K xvX~  
        .Bold = True IFX$\+-  
        .Outline = False JL= cIH8  
        .Italic = wdUndefined 4F~^RR"  
        .Subscript = wdUndefined d-UeItyW*  
        .Superscript = wdUndefined ob{'Z]-V  
    End With w#9Kt W,tt  
    With ActiveDocument.Styles("QLNU四级标题").ParagraphFormat $El-pMq  
         x^ f)I|t  
        .LeftIndent = CentimetersToPoints(0) PFh ^Z L  
        .RightIndent = CentimetersToPoints(0) .w.:o2L  
        .FirstLineIndent = CentimetersToPoints(0) ZLv/otf:|"  
         f`uRC-B/  
        .LineSpacingRule = wdLineSpaceSingle = (F   
        .Alignment = wdAlignParagraphLeft .="X vVdkp  
         E s5: S#  
        .WidowControl = True :BF? r  
        .KeepWithNext = True xZ9:9/Vg  
        .KeepTogether = True L EgP-s W  
        .PageBreakBefore = False *n? 1C"l  
        .OutlineLevel = wdOutlineLevelBodyText FoyYWj?,R  
         yS\&2"o  
        .CharacterUnitLeftIndent = 0 & oS$<  
        .CharacterUnitRightIndent = 0 XZM3zlg*  
        .CharacterUnitFirstLineIndent = 2 NFs5XpZ~  
         FI$:R  
        .LineUnitBefore = 0 sV  
        .LineUnitAfter = 0 x.?5-3|d$  
         )O~[4xV~  
    End With pD732L@q  
    ActiveDocument.Styles("QLNU四级标题").NoSpaceBetweenParagraphsOfSameStyle = False RU:Rt'  
    ActiveDocument.Styles("QLNU四级标题").ParagraphFormat.TabStops.ClearAll s 3Vb2C*  
    ActiveDocument.Styles("QLNU四级标题").LanguageID = wdSimplifiedChinese (G>[A}-  
    ActiveDocument.Styles("QLNU四级标题").NoProofing = True %x$U( I}  
    DoEvents Iv6 q(c  
     S }`sp[6  
    '正文校式 `um,S  
    ActiveDocument.Styles("QLNU正文").BaseStyle = ActiveDocument.Styles("BaseStyle") EMW6'  
    ActiveDocument.Styles("QLNU正文").NextParagraphStyle = "BaseStyle" a[O6xA%  
    ActiveDocument.Styles("QLNU正文").AutomaticallyUpdate = False 2nd n8_l  
    With ActiveDocument.Styles("QLNU正文").Font YZBh }l6t  
         Nujnm$!,Q  
        .NameFarEast = "宋体" 37/n"\4  
        .NameAscii = "Times New Roman" 3`HK^((o  
        .NameOther = "宋体" -Ks>s  
        .Name = "宋体" +tqErh?Al  
         } p'ZMj&  
        .Size = 12               '小四号 m.e]tTe  
         /9w>:i81  
        .Bold = wdUndefined H,!xTy"Wh  
        .Italic = wdUndefined $ E\|\g  
        .Subscript = wdUndefined o|(5Sr&H  
        .Superscript = wdUndefined q!5:M\  
         7Gc{&hp*  
        .Outline = False 3yZmW$E.  
        .Emboss = False +J X;T(T  
        .Shadow = False dw bR,K  
        .Hidden = False M<fhQJ  
         V0\[|E;F  
        .DisableCharacterSpaceGrid = True ^"/^)Lb!@M  
    End With FM@iIlY"  
    With ActiveDocument.Styles("QLNU正文").ParagraphFormat >M,oyM" s  
         Iry$z^  
        .LeftIndent = CentimetersToPoints(0) &r5q,l&@n  
        .RightIndent = CentimetersToPoints(0) *glZb;_  
        .FirstLineIndent = CentimetersToPoints(0) 2d ! '9mA  
         `C+<! )2  
        .LineSpacingRule = wdLineSpaceExactly O<gfZ>  
        .LineSpacing = 20 Pd*[i7zhC  
        .Alignment = wdAlignParagraphLeft T pkSY`T  
         jhNFaBrS  
        .WidowControl = False )u )=@@k21  
        .KeepWithNext = False >1~ /:DJ  
        .KeepTogether = False %fqR  
        .PageBreakBefore = False e `D}[G#  
        .Hyphenation = False i6`"e[aT[o  
         hArY$T&MB  
        .OutlineLevel = wdOutlineLevelBodyText 1sQIfX#2f  
         %iN>4;T8  
       9t"Rw ns  
        .CharacterUnitLeftIndent = 0 W7i|uTM  
        .CharacterUnitRightIndent = 0 V8?}I)#(7  
        .CharacterUnitFirstLineIndent = 2 .V?:&_}_I6  
         Wy}I"q[~So  
        .LineUnitBefore = 0 %z><)7  
        .LineUnitAfter = 0 |^pev2g  
        .SpaceBefore = 0 =Ph8&l7~sp  
        .SpaceAfter = 0 yGZsNd {a&  
         Sjpx G@k  
        .DisableLineHeightGrid = True XIHN6aQ{X  
    End With E $@W~).!  
    ActiveDocument.Styles("QLNU正文").NoSpaceBetweenParagraphsOfSameStyle = False G'ykcB._  
    ActiveDocument.Styles("QLNU正文").ParagraphFormat.TabStops.ClearAll +2~k Hrv  
    ActiveDocument.Styles("QLNU正文").LanguageID = wdSimplifiedChinese :S+K\  
    ActiveDocument.Styles("QLNU正文").NoProofing = True ?{{w[U6NE  
    DoEvents #< im?  
     :]^e-p!z  
    '图片段落样式 o\IMYT  
    ActiveDocument.Styles("QLNU图片段落").BaseStyle = ActiveDocument.Styles("BaseStyle") X*8y"~X|vq  
    ActiveDocument.Styles("QLNU图片段落").NextParagraphStyle = "BaseStyle" x*Lt]]A  
    ActiveDocument.Styles("QLNU图片段落").AutomaticallyUpdate = False 0s#72}n  
    With ActiveDocument.Styles("QLNU图片段落").Font -u2i" I730  
        .Size = 12               '小四号 %@/^ UE:  
        .Italic = wdUndefined B`5<sW  
        .Subscript = wdUndefined xP9(J 0y  
        .Superscript = wdUndefined G6sK3K  
    End With "F<CGSo  
    With ActiveDocument.Styles("QLNU图片段落").ParagraphFormat `Lf'/q   
          T~TP  
        .LeftIndent = CentimetersToPoints(0) Aw o)a8e  
        .RightIndent = CentimetersToPoints(0) }h5i Tc  
        .FirstLineIndent = CentimetersToPoints(0) \hB BG8=&  
         K7+yU3  
        .LineSpacingRule = wdLineSpaceSingle #WpkL]g2+%  
        .Alignment = wdAlignParagraphCenter Hcq.Lq;2:  
        .KeepWithNext = True 6o 3 bq|  
        .OutlineLevel = wdOutlineLevelBodyText Ifj&S'():  
         La26"C"X  
        .CharacterUnitLeftIndent = 0 6OES'3Cy  
        .CharacterUnitRightIndent = 0 ~GaGDS\V  
        .CharacterUnitFirstLineIndent = 0 <B"sp r&1  
         ly [LF1t   
        .LineUnitBefore = 0 [ V CC+_  
        .LineUnitAfter = 0 4q$~3C[  
    End With ~4S$+*'8  
    ActiveDocument.Styles("QLNU图片段落").NoSpaceBetweenParagraphsOfSameStyle = False kNEEu ! G  
    ActiveDocument.Styles("QLNU图片段落").ParagraphFormat.TabStops.ClearAll K2x[ApS#  
    ActiveDocument.Styles("QLNU图片段落").LanguageID = wdSimplifiedChinese *Gbhk8}V'  
    ActiveDocument.Styles("QLNU图片段落").NoProofing = True ^PksXfk  
    DoEvents -Mt 5< s  
     }'X=&3m  
     RgE`Hr  
    '第X章 XpQOl  
    ActiveDocument.Styles("QLNU章节标题").BaseStyle = ActiveDocument.Styles("BaseStyle") Y ::0v@&(  
    ActiveDocument.Styles("QLNU章节标题").NextParagraphStyle = "BaseStyle" tT$OnZu&  
    ActiveDocument.Styles("QLNU章节标题").AutomaticallyUpdate = False U=on}W3V 2  
    With ActiveDocument.Styles("QLNU章节标题").Font C$3*[  
        .NameFarEast = "黑体" aER|5!7(2\  
        .NameAscii = "Arial Black" *2'8d8>R%]  
        .NameOther = "Arial Black" ]T4/dk&|o^  
        .Name = "黑体" |y\Km  
        .Size = 16 _]Hna<Ly  
        .Bold = True m o0\t#jA  
        .UnderlineColor = wdColorAutomatic uy'ghF  
        .Outline = False n/H OP  
        .Italic = wdUndefined  `zwz  
        .Subscript = wdUndefined Qw5nfg3T  
        .Superscript = wdUndefined KhCP9(A=Qo  
        .Scaling = 100 3dShznlf_*  
        .DisableCharacterSpaceGrid = True OG,P"sv  
    End With '=\}dav!  
    With ActiveDocument.Styles("QLNU章节标题").ParagraphFormat Lpchla$  
        .LineSpacingRule = wdLineSpaceSingle `&$8/_`  
        .Alignment = wdAlignParagraphCenter S2~cAhR|M  
        .WidowControl = True jcH@*c=%e  
        .KeepWithNext = True )xGAe#E~j  
        .KeepTogether = True S;Bk/\2  
        .PageBreakBefore = True US6_5>/  
        .OutlineLevel = wdOutlineLevelBodyText h6 \P&Z  
         )s2] -n}W  
        .LeftIndent = CentimetersToPoints(0) ;t`  ?|  
        .RightIndent = CentimetersToPoints(0) A KNx~!%2  
        .FirstLineIndent = CentimetersToPoints(0) !QUY (  
         XC4Z,,ah"  
        .CharacterUnitLeftIndent = 0 Q=\ Oa(I  
        .CharacterUnitRightIndent = 0 K~x,so  
        .CharacterUnitFirstLineIndent = 0 mCtS_"W  
         \u3\TJ  
        .LineUnitBefore = 1 G7-Be A8  
        .LineUnitAfter = 0.5 )&DAbB!O  
         z`y9<+  
        .AutoAdjustRightIndent = False o_b[*  
        .DisableLineHeightGrid = True {Z.6\G&q  
        .FarEastLineBreakControl = True i%glQT  
        .WordWrap = True kmuksT\)a  
    End With 7p&jSOY  
    ActiveDocument.Styles("QLNU章节标题").NoSpaceBetweenParagraphsOfSameStyle = False g;IlS*Ld  
    ActiveDocument.Styles("QLNU章节标题").ParagraphFormat.TabStops.ClearAll B[vj X"yg  
    ActiveDocument.Styles("QLNU章节标题").LanguageID = wdSimplifiedChinese 30Yis_l2h  
    ActiveDocument.Styles("QLNU章节标题").NoProofing = True BxY t*b%  
    DoEvents )M*w\'M  
     "}]`64?  
    '表格标题 ! ,J# r  
    ActiveDocument.Styles("QLNU表格标题").BaseStyle = ActiveDocument.Styles("BaseStyle") 2EY"[xK|  
    ActiveDocument.Styles("QLNU表格标题").NextParagraphStyle = "BaseStyle" cH]tZ$E`  
    ActiveDocument.Styles("QLNU表格标题").AutomaticallyUpdate = False H#- 3  
    With ActiveDocument.Styles("QLNU表格标题").Font .=_p6_G  
        .NameFarEast = "楷体" KWwtL"3  
        .NameAscii = "Arial" ]6&NIz`:,  
        .Name = "楷体" Hh<H~s [  
        .Size = 10.5 7\u+%i;YZ  
        .Bold = True 5/48w-fnZ  
        .Underline = wdUnderlineNone SGd]o"VF  
        .Italic = wdUndefined jjpYg  
        .Subscript = wdUndefined 0bNvmZ$  
        .Superscript = wdUndefined ]-PzN'5\'  
        .Color = wdColorAutomatic 6 Z/`p~e  
    End With Rd?}<L  
    With ActiveDocument.Styles("QLNU表格标题").ParagraphFormat gwZ<$6  
         ,!ZuH?Z  
        .LineSpacingRule = wdLineSpaceSingle &dtk&P{  
        .Alignment = wdAlignParagraphCenter jXcJ/g(X3  
        .KeepWithNext = True Ae)xFnuq3  
        .KeepTogether = True bRC243]g*A  
        .OutlineLevel = wdOutlineLevelBodyText ]n ?x tI  
         ^\)a[OW p  
        .LeftIndent = CentimetersToPoints(0) A=CeeC]}  
        .RightIndent = CentimetersToPoints(0) 5:Qz  
        .FirstLineIndent = CentimetersToPoints(0)  k#*-<1  
         y>{: [L9*  
        .CharacterUnitLeftIndent = 0 JuRoeq.  
        .CharacterUnitRightIndent = 0 'X~tt#T  
        .CharacterUnitFirstLineIndent = 0 qZoDeN-CC  
         ]AP1+ &9fN  
        .LineUnitBefore = 1 kH!Z|P s?R  
        .LineUnitAfter = 0 I Mgd2qIC  
         Pg4&}bX:I  
    End With NOz3_k  
    ActiveDocument.Styles("QLNU表格标题").NoSpaceBetweenParagraphsOfSameStyle = False ~Eut_d  
    ActiveDocument.Styles("QLNU表格标题").ParagraphFormat.TabStops.ClearAll vG& >- Z  
    ActiveDocument.Styles("QLNU表格标题").LanguageID = wdSimplifiedChinese TFVQfj$r  
    ActiveDocument.Styles("QLNU表格标题").NoProofing = True yTaMlT|  
    DoEvents Vla,avON  
D{|qP nE4  
    '表格首行 E'5*w6  
    ActiveDocument.Styles("QLNU表格首行").BaseStyle = ActiveDocument.Styles("BaseStyle") C2LPLquD+  
    ActiveDocument.Styles("QLNU表格首行").AutomaticallyUpdate = False I8F +Z  
    With ActiveDocument.Styles("QLNU表格首行").Font @|!4X(2  
        .NameFarEast = "楷体" NGra/s,9 |  
        .NameAscii = "Times New Roman" BT{;^Hp  
        .Name = "楷体" TyxIlI4"  
        .Size = 9 ]`o5eByo  
        .Bold = True gmTBT#{6yH  
        .Underline = wdUnderlineNone ?-??>& z  
        .Italic = wdUndefined O-- p)\   
        .Subscript = wdUndefined xQ?>72grP  
        .Superscript = wdUndefined 61\u{@o$  
    End With G#iQX`  
    With ActiveDocument.Styles("QLNU表格首行").ParagraphFormat ! \] ^c  
        .LineSpacingRule = wdLineSpaceSingle D+8d^-:  
        .Alignment = wdAlignParagraphCenter 1CtUf7 `/Q  
         ;%|im?  
        .LeftIndent = CentimetersToPoints(0) [^>XR BSm  
        .RightIndent = CentimetersToPoints(0) wAMg"ImJ  
        .FirstLineIndent = CentimetersToPoints(0) }E`Y.= S  
         _8K+iqMZG  
         " T(hcI   
        .CharacterUnitLeftIndent = -0.5 b`0tfXzS5  
        .CharacterUnitRightIndent = -0.5 }v(wjD  
        .CharacterUnitFirstLineIndent = -0.5 ~KK 9aV{  
         tobE3Od4  
        .LineUnitBefore = 0 V>$( N/1  
        .LineUnitAfter = 0 gW, [X(  
        .SpaceBefore = 0 [f6uwp  
        .SpaceAfter = 0 Y~~Dg?e  
         <+8'H:wz  
    End With :WhJDx`j  
    ActiveDocument.Styles("QLNU表格首行").NoSpaceBetweenParagraphsOfSameStyle = False ,OZ  
    ActiveDocument.Styles("QLNU表格首行").ParagraphFormat.TabStops.ClearAll 6K2e]r  
    ActiveDocument.Styles("QLNU表格首行").LanguageID = wdSimplifiedChinese &K[*vyD  
    ActiveDocument.Styles("QLNU表格首行").NoProofing = True p_r`"  
    DoEvents B6XO&I1c  
 CB7dr&>  
    '表格内容 @xG&K{j  
    ActiveDocument.Styles("QLNU表格内容").BaseStyle = ActiveDocument.Styles("BaseStyle") k(Yz2  
    ActiveDocument.Styles("QLNU表格内容").AutomaticallyUpdate = False w+o5iPLX  
    With ActiveDocument.Styles("QLNU表格内容").Font uL'f8Pqg  
        .NameFarEast = "楷体" =;Id["+  
        .NameAscii = "Times New Roman" Tw~R-SiS`s  
        .Name = "楷体" +vc+9E.?9  
        .Size = 9 EZtU6kW"  
        .Bold = False >T$0*7wF  
        .Underline = wdUnderlineNone jiI=tg;  
        .Italic = wdUndefined QxT'\7f  
        .Subscript = wdUndefined LS@TTiN   
        .Superscript = wdUndefined wcHk]mLM  
    End With IQQv+af5  
    With ActiveDocument.Styles("QLNU表格内容").ParagraphFormat *k$[/{S1-  
        .LineSpacingRule = wdLineSpaceSingle ;5a$ OM  
        .Alignment = wdAlignParagraphCenter #J5BHY~  
         !}*N';  
        .LeftIndent = CentimetersToPoints(0) -15e  
        .RightIndent = CentimetersToPoints(0) 6fwNlC/9  
        .FirstLineIndent = CentimetersToPoints(0) \u=d`}E  
         o7y<Zd`Bj  
        .CharacterUnitLeftIndent = -0.5 ]kh]l8t^  
        .CharacterUnitRightIndent = -0.5 8&QST!JGSX  
        .CharacterUnitFirstLineIndent = -0.5 H7O~So*N5  
        .LineUnitBefore = 0 >Wg= Tuef  
        .LineUnitAfter = 0 P jQl(v&O  
        .SpaceBefore = 0 *MJm:  
        .SpaceAfter = 0 9t! d. }  
    End With b#2)"V(  
    ActiveDocument.Styles("QLNU表格首行").NoSpaceBetweenParagraphsOfSameStyle = False j:9M${~  
    ActiveDocument.Styles("QLNU表格首行").ParagraphFormat.TabStops.ClearAll g/?Vl2W  
    ActiveDocument.Styles("QLNU表格首行").LanguageID = wdSimplifiedChinese za l]t$z>  
    ActiveDocument.Styles("QLNU表格首行").NoProofing = True %V_ XY+o  
    DoEvents u09Tlqh0 3  
5C w( 4.  
    '图片标题 6#w>6g4V~R  
    ActiveDocument.Styles("QLNU图片标题").BaseStyle = ActiveDocument.Styles("BaseStyle") verI~M$v{  
    ActiveDocument.Styles("QLNU图片标题").NextParagraphStyle = "BaseStyle" .X g.,kW  
    ActiveDocument.Styles("QLNU图片标题").AutomaticallyUpdate = False + /OSg.  
    With ActiveDocument.Styles("QLNU图片标题").Font YMGy-]!o  
        .NameFarEast = "楷体" z%&FLdXgW+  
        .NameAscii = "Times New Roman" .j6udiv5  
        .Name = "楷体" ;W|kc</R*  
        .Size = 10.5 /SvhOi  
        .Bold = True [V}vd@*k  
        .Underline = wdUnderlineNone |T#cq!  
        .Italic = wdUndefined w0QtGQ|  
        .Subscript = wdUndefined Fwm$0=BXL  
        .Superscript = wdUndefined xBHf~:!  
        .Outline = False _K5<)( )  
        .Shadow = False o'Bd. B  
        .Color = wdColorAutomatic xL* psj  
    End With W 4{ T<  
    With ActiveDocument.Styles("QLNU图片标题").ParagraphFormat 1nVQYqT_  
        .LineSpacingRule = wdLineSpaceSingle T2{e 1 =Z7  
        .Alignment = wdAlignParagraphCenter e8,_"_1 :F  
         DR"Y(-xl  
        .KeepWithNext = wdUndefined +in)(a.  
        .KeepTogether = True 7KtU\u  
        .OutlineLevel = wdOutlineLevelBodyText }2 S.  
         tX*@r  
        .LeftIndent = CentimetersToPoints(0) /4{WT?j  
        .RightIndent = CentimetersToPoints(0) FlO?E3d  
        .FirstLineIndent = CentimetersToPoints(0) ]&'!0'3`  
         SX3'|'-  
        .CharacterUnitLeftIndent = 0 g 2Fg  
        .CharacterUnitRightIndent = 0 :J;U~emq  
        .CharacterUnitFirstLineIndent = 0 Z bRRDXk!  
         Gz`Jzh j  
        .LineUnitBefore = 0 F` }'^>  
        .LineUnitAfter = 0 PW*Vfjf4  
    End With cIug~ x>  
    ActiveDocument.Styles("QLNU图片标题").NoSpaceBetweenParagraphsOfSameStyle = False #83   
    ActiveDocument.Styles("QLNU图片标题").ParagraphFormat.TabStops.ClearAll 5- dt0I@<  
    ActiveDocument.Styles("QLNU图片标题").LanguageID = wdSimplifiedChinese KdNo'*;U]_  
    ActiveDocument.Styles("QLNU图片标题").NoProofing = True =dm9+ff  
    DoEvents "2e3 <:$  
WC_.j^sW  
    '目录项 o)Q4+njT@  
    ActiveDocument.Styles("QLNU目录项").BaseStyle = ActiveDocument.Styles("BaseStyle") "$BkO[IS  
    ActiveDocument.Styles("QLNU目录项").NextParagraphStyle = "BaseStyle" 2"0VXtv6  
    ActiveDocument.Styles("QLNU目录项").AutomaticallyUpdate = False ,@Csa#  
    With ActiveDocument.Styles("QLNU目录项").Font *oO%+6nL  
        .NameFarEast = "黑体" KFM[caKeJO  
        .NameAscii = "Times New Roman" Z;+,hR((  
        .NameOther = "Times New Roman" 8X;?fjl`"  
        .Name = "黑体" &+9 ;  
        .Size = 10.5 hvt]VC]]  
        .Bold = False g|)>65v  
        .Italic = wdUndefined \Y#  
        .Underline = wdUnderlineNone deVd87;@7[  
        .Color = wdColorAutomatic MmJM x  
        .Superscript = wdUndefined =lNW1J\SW  
        .Subscript = wdUndefined .0Ud?v>=  
    End With UMcM& yu-  
    With ActiveDocument.Styles("QLNU目录项").ParagraphFormat @Z]0c=-+  
         3mgvWR  
        .LineSpacingRule = wdLineSpaceSingle %PW-E($o<  
        .Alignment = wdAlignParagraphLeft -]%EX:bm  
         mR}8}K]L  
        .WidowControl = False k|fM9E  
        .KeepWithNext = False ,>|tQ'  
        .KeepTogether = False u5CSx' h]  
        .PageBreakBefore = False 1q}32^>+o  
        .NoLineNumber = False O:]']' /  
        .OutlineLevel = wdOutlineLevelBodyText Kq7r+ A  
         $G=^cNB|JB  
        .LeftIndent = CentimetersToPoints(0) ? Fqh i  
        .RightIndent = CentimetersToPoints(0) z$<=8ox8e  
        .FirstLineIndent = CentimetersToPoints(0) )Rr6@o  
         ]36SF5<0r  
        .CharacterUnitLeftIndent = 0 #rHMf%0  
        .CharacterUnitRightIndent = 0 ]t[%.^5#  
        .CharacterUnitFirstLineIndent = 0 ~B<\#oO  
         mQj#\<*  
        .LineUnitBefore = 0 {/[@uMS_6]  
        .LineUnitAfter = 0 #y\O+\4e  
    End With O"9t,B>=i  
    ActiveDocument.Styles("QLNU目录项").NoSpaceBetweenParagraphsOfSameStyle = False QW..=}pL  
    ActiveDocument.Styles("QLNU目录项").ParagraphFormat.TabStops.ClearAll $.,PteYK  
    ActiveDocument.Styles("QLNU目录项").ParagraphFormat.TabStops.Add Position:=PicasToPoints(44.5), Alignment:=wdAlignTabRight, Leader:=wdTabLeaderMiddleDot ,7nu;fOT[  
    ActiveDocument.Styles("QLNU目录项").LanguageID = wdSimplifiedChinese o!xCM:+J  
    ActiveDocument.Styles("QLNU目录项").NoProofing = True ,~L*N*ML  
    DoEvents jMT[+f  
     / fQcrd7h  
    '参考文献 l@Lk+-[D  
    ActiveDocument.Styles("QLNU参考文献").BaseStyle = ActiveDocument.Styles("BaseStyle") 5{H)r   
    ActiveDocument.Styles("QLNU参考文献").NextParagraphStyle = "BaseStyle" @Y ~gd K  
    ActiveDocument.Styles("QLNU参考文献").AutomaticallyUpdate = False d% EdvM|)  
    With ActiveDocument.Styles("QLNU参考文献").Font 3qV^RW&  
        .NameFarEast = "宋体" J~x]~}V&  
        .NameAscii = "Times New Roman" 'm0WPS/6E  
        .NameOther = "Times New Roman" `(W"wC   
        .Name = "Times New Roman" XT0-"-q  
        .Size = 12 ?!ap @)9  
        .Bold = False RXRbW %b  
        .Italic = wdUndefined M]8>5Zx.  
        .Subscript = wdUndefined :GvC#2 p  
        .Superscript = wdUndefined ZfM]A)  
        .Underline = wdUnderlineNone }#zL)+XI  
        .UnderlineColor = wdColorAutomatic &zn|),  
        .Color = wdColorAutomatic 2d[tcn$;h]  
        .Engrave = False RqROl!6  
    End With ~XUUrg;  
    With ActiveDocument.Styles("QLNU参考文献").ParagraphFormat 5N9Cd[4  
         fWP]{z`  
        .LineSpacingRule = wdLineSpaceExactly % :G78.  
        .LineSpacing = 16 9G6)ja?W  
        .Alignment = wdAlignParagraphLeft h(WlJCln  
        .WidowControl = False TF%n1H-sF  
        .KeepWithNext = False P IG,a~  
        .KeepTogether = False a- *sm~u  
        .PageBreakBefore = False (~|)Gmq2  
        .OutlineLevel = wdOutlineLevelBodyText >A )Sl'  
         \:'GAByy  
        .LeftIndent = CentimetersToPoints(0) \^1^|a"  
        .RightIndent = CentimetersToPoints(0) j ,rc9  
        .FirstLineIndent = CentimetersToPoints(0) Y] 1U1 08  
         hl]d99Lc  
        .CharacterUnitLeftIndent = 0 4lo7yx  
        .CharacterUnitRightIndent = 0 B"v*[p?  
        .CharacterUnitFirstLineIndent = -2 1P]J3o  
         #jbC@A9Pe  
        .LineUnitBefore = 0 ~#g c{ C@  
        .LineUnitAfter = 0 /{R ^J#  
        .SpaceBefore = 0 &UDbH* !4=  
        .SpaceAfter = 0 e {6wFN  
         D(z#)oDr  
    End With CXUF=IE  
    ActiveDocument.Styles("QLNU参考文献").NoSpaceBetweenParagraphsOfSameStyle = False f}dlQkZ(  
    ActiveDocument.Styles("QLNU参考文献").ParagraphFormat.TabStops.ClearAll f y|JE9Io_  
    ActiveDocument.Styles("QLNU参考文献").LanguageID = wdEnglishUS >$kFYb>~q  
    ActiveDocument.Styles("QLNU参考文献").NoProofing = True F,Y P Il  
    ActiveDocument.Styles("QLNU参考文献").LanguageID = wdSimplifiedChinese *g mc6xY  
    DoEvents |@d(2f8  
HX.K{!5  
    ' X&Oo[Z  
    ActiveDocument.Styles("QLNU论文题目").BaseStyle = ActiveDocument.Styles("BaseStyle") [,bJKz)a  
    ActiveDocument.Styles("QLNU论文题目").NextParagraphStyle = "BaseStyle" %>&~?zrq  
    ActiveDocument.Styles("QLNU论文题目").AutomaticallyUpdate = False azZ|T{S  
    With ActiveDocument.Styles("QLNU论文题目").Font J5b3r1~D"[  
        .NameFarEast = "黑体" ImQ -kz?b  
        .NameAscii = "Arial Black" yC z"~c  
        .NameOther = "Arial Black" mR.j8pi  
        .Name = "Arial Black" &" u(0q  
        .Size = 16 [KUkv  
        .Bold = False n6[shXH  
        .Italic = wdUndefined t{,$?}  
        .Superscript = wdUndefined ~ESw* 6s9  
        .Subscript = wdUndefined P]"@3Z&w  
        .Underline = wdUnderlineNone hMupQDv/I  
        .UnderlineColor = wdColorAutomatic iBWzxPv:z  
        .Color = wdColorAutomatic JP!e'oWxi  
d{TcjZ  
    End With nA Nl9;G  
    With ActiveDocument.Styles("QLNU论文题目").ParagraphFormat /5%'q~  
        .LineSpacingRule = wdLineSpaceSingle l|842N@1  
        .Alignment = wdAlignParagraphCenter '4{@F~fu  
        .WidowControl = True u%L6@M2  
        .KeepWithNext = True  -raK  
        .KeepTogether = True f*@ :,4@  
        .PageBreakBefore = True oD%n}  
        .NoLineNumber = False !,- 'wT<v  
        .OutlineLevel = wdOutlineLevelBodyText .0nT*LF  
         0ytAn+/"x  
        .LeftIndent = CentimetersToPoints(0) fq1w <e  
        .RightIndent = CentimetersToPoints(0) N+V#=U y  
        .FirstLineIndent = CentimetersToPoints(0) [\F:NLjiUy  
         ?23J(;)s  
        .CharacterUnitLeftIndent = 0 [voc_o7AI  
        .CharacterUnitRightIndent = 0 Qc33C A  
        .CharacterUnitFirstLineIndent = 0 M"mvPr9  
         W'Gh:73'}  
        .LineUnitBefore = 1 r E1ouz!D  
        .LineUnitAfter = 1 lf\"6VIsR  
         ||2%N/?  
        .BaseLineAlignment = wdBaselineAlignAuto ks$5$,^T2o  
    End With =ZHN]PP  
    ActiveDocument.Styles("QLNU论文题目").NoSpaceBetweenParagraphsOfSameStyle = False '>[ZfT  
    ActiveDocument.Styles("QLNU论文题目").ParagraphFormat.TabStops.ClearAll 02 FLe*zQ  
    ActiveDocument.Styles("QLNU论文题目").LanguageID = wdEnglishUS Z4 z|B&  
    ActiveDocument.Styles("QLNU论文题目").NoProofing = True QVn2`hr  
    ActiveDocument.Styles("QLNU论文题目").LanguageID = wdSimplifiedChinese tL&_@PD) 3  
    ActiveDocument.Styles("QLNU论文题目").NoProofing = True 2U%t  
    DoEvents U>Is mF>m  
     pg!mOyn  
    '中文摘要 nUY)Ln I  
    ActiveDocument.Styles("QLNU中文摘要").BaseStyle = ActiveDocument.Styles("BaseStyle") kW+>"3  
    ActiveDocument.Styles("QLNU中文摘要").NextParagraphStyle = "BaseStyle" E; yr46  
    ActiveDocument.Styles("QLNU中文摘要").AutomaticallyUpdate = False ym p*:lH(  
    With ActiveDocument.Styles("QLNU中文摘要").Font <S_0=U  
        .NameFarEast = "宋体" j %M Y6"  
        .NameAscii = "Times New Roman" '>OEQU5-  
        .NameOther = "Times New Roman" VK9E{~0=  
        .Name = "Times New Roman" 4Zjd g`  
        .Size = 12 $_%  
        .Bold = wdUndefined "-fyX!  
        .Superscript = wdUndefined ?:q"qwt$F  
        .Subscript = wdUndefined y 2k's  
        .Italic = wdUndefined 0"-H34M <D  
        .Underline = wdUnderlineNone 3{H!B&sb  
        .UnderlineColor = wdColorAutomatic UB] tKn  
        .Color = wdColorAutomatic SdufI_'B  
    End With y;0Zk~R$  
    With ActiveDocument.Styles("QLNU中文摘要").ParagraphFormat 9[t-W:3c7  
        .LineSpacingRule = wdLineSpaceExactly 'bv(T2d~~  
        .LineSpacing = 20 Uq=Rz8hLM  
        .Alignment = wdAlignParagraphLeft ?n<sN"  
         qZQm*q(jM  
        .WidowControl = False b`wT*&  
        .KeepWithNext = False 7d{xXJ-  
        .KeepTogether = True YTgT2w  
        .PageBreakBefore = False @#"K6  
        .NoLineNumber = False qPN  
        .OutlineLevel = wdOutlineLevelBodyText E.'6p \  
         "% i1zQo&  
        .LeftIndent = CentimetersToPoints(0) 57 Vn-  
        .RightIndent = CentimetersToPoints(0) qoan<z7  
        .FirstLineIndent = CentimetersToPoints(0) 3b?-83a  
         h1)+QLI  
        .CharacterUnitLeftIndent = 0 mGz'%?zj  
        .CharacterUnitRightIndent = 0 <-d-. 8  
        .CharacterUnitFirstLineIndent = 2 -vT$UP  
        .LineUnitBefore = 0 zv1,DnkqF  
        .LineUnitAfter = 0 r& RJ'z  
         +=`w  
    End With +Km xo4p  
    ActiveDocument.Styles("QLNU中文摘要").NoSpaceBetweenParagraphsOfSameStyle = False 823y;  
    ActiveDocument.Styles("QLNU中文摘要").ParagraphFormat.TabStops.ClearAll *~`oA~-Q  
    ActiveDocument.Styles("QLNU中文摘要").LanguageID = wdEnglishUS }zo-%#  
    ActiveDocument.Styles("QLNU中文摘要").NoProofing = True Q2|6WE  
    ActiveDocument.Styles("QLNU中文摘要").LanguageID = wdSimplifiedChinese q9zeN:><  
    ActiveDocument.Styles("QLNU中文摘要").NoProofing = True ?h7[^sxJ  
    ActiveDocument.Styles("QLNU中文摘要").Frame.Delete 9( &$Gwi  
    DoEvents HVC|0}  
     cB;DB) 0P  
    ActiveDocument.Styles("QLNU英文标题").BaseStyle = ActiveDocument.Styles("BaseStyle") z:n JN%Qb  
    ActiveDocument.Styles("QLNU英文标题").NextParagraphStyle = "BaseStyle" R^E-9S\@  
    ActiveDocument.Styles("QLNU英文标题").AutomaticallyUpdate = False O[ans_8  
    With ActiveDocument.Styles("QLNU英文标题").Font o W7;t  
        .NameFarEast = "黑体" uxrNkZia  
        .NameAscii = "Arial Narrow" 4/o9K*M+  
        .Name = "Arial Narrow" Nf~B 1vkp  
        .Size = 16 8=\k<X{`  
        .Bold = True p<VW;1bt5  
        .Bold = wdUndefined 2}{[ J  
        .Superscript = wdUndefined <!u(_Bxw/  
        .Subscript = wdUndefined v&^N+>p  
        .Italic = wdUndefined B^1jd!m  
         TDtHR hq7  
        .Underline = wdUnderlineNone 8Z@O%\1x6  
        .UnderlineColor = wdColorAutomatic { F0"U=  
        .StrikeThrough = False LGy!{c  
        .DoubleStrikeThrough = False hO3C  _}  
    End With M~sP|Ha"+  
    With ActiveDocument.Styles("QLNU英文标题").ParagraphFormat "| oW6@  
        .LineSpacingRule = wdLineSpaceSingle =0@o(#gM  
        .Alignment = wdAlignParagraphCenter F7p`zf@O]  
        .WidowControl = True sx9[#6~{Y  
        .KeepWithNext = False -r_Pp}s  
        .KeepTogether = False fQU_A  
        .PageBreakBefore = False /Wjf"dG}  
        .NoLineNumber = False d[(%5pw~zL  
        .FirstLineIndent = CentimetersToPoints(0) @S012} xH  
        .OutlineLevel = wdOutlineLevelBodyText .bMU$O1  
         Erl@] P4  
        .LeftIndent = CentimetersToPoints(0) +w?1<Z  
        .RightIndent = CentimetersToPoints(0) ~"~uXNd  
        .FirstLineIndent = CentimetersToPoints(0) L'BzefU;04  
         QD[l 6  
        .CharacterUnitLeftIndent = 0 BD ,3JDqT  
        .CharacterUnitRightIndent = 0 $EG<LmC-Q  
        .CharacterUnitFirstLineIndent = 0 Yk V-]%c  
         ~fA H6FdZ\  
        .LineUnitBefore = 1 {.,y v>%  
        .LineUnitAfter = 1 :)e/(I]  
         =66,$~g{  
    End With WtSlD9 h  
    ActiveDocument.Styles("QLNU英文标题").NoSpaceBetweenParagraphsOfSameStyle = False @iz6)2z  
    ActiveDocument.Styles("QLNU英文标题").ParagraphFormat.TabStops.ClearAll V[| k:($  
    ActiveDocument.Styles("QLNU英文标题").LanguageID = wdEnglishUS v2#qs*sW8  
    ActiveDocument.Styles("QLNU英文标题").NoProofing = True <>1*1%m  
    ActiveDocument.Styles("QLNU英文标题").LanguageID = wdSimplifiedChinese iL IKrU+`  
    ActiveDocument.Styles("QLNU英文标题").NoProofing = True "%t !+E>nr  
    ActiveDocument.Styles("QLNU英文标题").Frame.Delete el0W0T  
    DoEvents /Hc0~D4|x  
YAF0I%PYU  
    ActiveDocument.Styles("QLNU英文摘要").BaseStyle = ActiveDocument.Styles("BaseStyle") Bq:: 5,v  
    ActiveDocument.Styles("QLNU英文摘要").NextParagraphStyle = "BaseStyle" 7`X9s~B  
    ActiveDocument.Styles("QLNU英文摘要").AutomaticallyUpdate = False \AR3DDm  
    With ActiveDocument.Styles("QLNU英文摘要").Font I'cM\^/h  
        .NameFarEast = "宋体" H% c{ }F  
        .NameAscii = "Arial" iu,Bmf^oD  
        .NameOther = "Arial" 0xutG/-&N  
        .Name = "Arial" ; UjP0z  
        .Size = 12 dZbG#4oO  
        .Bold = wdUndefined !91<K{#A{  
        .Italic = wdUndefined 5.)/gK2$  
        .Superscript = wdUndefined PI" )^`  
        .Subscript = wdUndefined gtP;Qw'  
    End With {' |yb  
     #KSB%  
    With ActiveDocument.Styles("QLNU英文摘要").ParagraphFormat l\-(li H  
         [TpW$E0H  
        .LineSpacingRule = wdLineSpaceExactly 20uR?/|@  
        .LineSpacing = 20 CV,[x[L# {  
         =>h~<88#5  
        .Alignment = wdAlignParagraphJustify -aMwC5iR@  
         j[1^#kE  
        .WidowControl = False ]| =#FFz  
        .KeepWithNext = False jr5x!@rb  
        .KeepTogether = False 1<9m^9_ro  
        .PageBreakBefore = False UUql"$q  
        .NoLineNumber = False fm% Y*<Y"  
         +%RXV ~  
        .OutlineLevel = wdOutlineLevelBodyText j#XU\G  
         ~oBSf+N  
        .LeftIndent = CentimetersToPoints(0) 785Y*.p  
        .RightIndent = CentimetersToPoints(0) 7<ES&ls_  
        .FirstLineIndent = CentimetersToPoints(0) [[u&=.Au  
         ].w$b)G   
        .CharacterUnitLeftIndent = 0 |7T!rnr  
        .CharacterUnitRightIndent = 0 yYTiAvN  
        .CharacterUnitFirstLineIndent = 2 ~&IL>2-B  
          u RNc9  
        .LineUnitBefore = 0 <$;fOp  
        .LineUnitAfter = 1 K>$od^f%c  
         esEOV $s}  
    End With Y-,1&$&  
    ActiveDocument.Styles("QLNU英文摘要").NoSpaceBetweenParagraphsOfSameStyle = False D&)gcO`\  
    ActiveDocument.Styles("QLNU英文摘要").ParagraphFormat.TabStops.ClearAll i`:r2kU:*W  
    ActiveDocument.Styles("QLNU英文摘要").LanguageID = wdEnglishUS Ol@ YSkd  
    ActiveDocument.Styles("QLNU英文摘要").NoProofing = False iNs  
    DoEvents  M*c`@\  
V/!8q`lYNJ  
    Options.Pagination = True :@X@8j":  
    Me.txtStatus.Text = "样式修改完成,重新进行分页,请稍候....." 1z(y>`ZBq  
    DoEvents !*xQPanL  
    ActiveDocument.Repaginate dQFx]p3L  
C>7k|;BvF  
End Sub WS0RvBvb  
mY1$N}8fm  
<BN)>NqM  
杺栫杣杊椌柮栬,䒴蓉艿芖。
伍胥之 离线
级别: 军区司令员

显示用户信息 
99楼  发表于: 2021-07-18   
继续填个坑: P8s'e_t  
'x10\Q65[  
用VBA控制WORD自己修订学生毕业文的格式。 gasl%&  
杺栫杣杊椌柮栬,䒴蓉艿芖。
伍胥之 离线
级别: 军区司令员

显示用户信息 
98楼  发表于: 2021-01-02   
继续填 BotNET 或Pynthon? 有没有XDJMs接龙啊 ? Hca)5$yL  
^\\cGJ&8c  
杺栫杣杊椌柮栬,䒴蓉艿芖。
伍胥之 离线
级别: 军区司令员

显示用户信息 
97楼  发表于: 2015-09-06   
下一次练手,也是VB,不过只是用CCD测量济钢中板车间轧机出来的板的宽度。 NLF{W|X  
T ~t%3G  
这一次,我自己做了一个二进制的尺子,用CCD在一个盒子里读尺。
杺栫杣杊椌柮栬,䒴蓉艿芖。
伍胥之 离线
级别: 军区司令员

显示用户信息 
96楼  发表于: 2015-09-06   

M ~!*PCd5  
uBs[[9je(  
这个地方现在已经变化很大了。以前紧靠山东农科院的实验田
杺栫杣杊椌柮栬,䒴蓉艿芖。
伍胥之 离线
级别: 军区司令员

显示用户信息 
95楼  发表于: 2015-09-06   

从这里里分离出来的。
杺栫杣杊椌柮栬,䒴蓉艿芖。
伍胥之 离线
级别: 军区司令员

显示用户信息 
94楼  发表于: 2015-09-06   
拍下的火车 31YzTbl[H  
第6车皮 i':<Ro  

a*S4rq@  
vD}y%}  
第9车皮 eyl+D sK  
b\VY)=U  
  
杺栫杣杊椌柮栬,䒴蓉艿芖。
伍胥之 离线
级别: 军区司令员

显示用户信息 
93楼  发表于: 2015-09-06   

一共这么多文件。 i4v7x;m_p  
[D?RL `ZF  
这是我用VB写出的最大的程序,也是用API最多的。
杺栫杣杊椌柮栬,䒴蓉艿芖。
伍胥之 离线
级别: 军区司令员

显示用户信息 
92楼  发表于: 2015-09-06   
这才是我当年写出的一个比较烂的程序 kiZA$:V8  
d1D{wZ3g  
Main2.bas B@=+Fg DD  
w,;CrW T2t  
Attribute VB_Name = "SubMain" AnfJyltS  
Option Explicit 6|rqsk  
-?&wD["y  
'采集文件与临时文件 iAbtv^fn  
Public Const TmpFile As String = "d:\30-0600.dat" b,$H!V *  
'已有数据:30-0600.dat /30日早6点进车与6:30出车头 +JB. EW/  
@T|mHfQ8  
Public fStatus As Long, hFile As Long, bytesRW As Long, lptrFile As Long = %\;7  
Public hBCFile As Long  '记录采集参数的文件 6*/0 yGij  
Public Const TmpBMP As String = "d:\1.bmp" 'h.{fKG]ME  
Public hTmpFile As Long \ :1M M  
2 Do^N5y  
N3TkRJZ  
'采集窗口参数常量 2W~,,$ G  
Public Const FrameH As Long = 280& |Ah26<&  
Public Const FrameW As Long = 768& P+wV .pF|  
Public Const pFrameSize As Long = FrameW * FrameH 3 =KfNz_  
TfDx> F$  
'标志区范围,用于识别车辆 aYkm]w;C  
Public Const PilarC As Integer = 260   '识别标志立柱中线坐标X <hkg~4EKc  
Public Const mkW As Integer = 28  '识别标志立柱宽度 T`Sp!  
Public Const mkH As Integer = 80 ''识别标志立柱高度(上白中黑下白) /4<eI 3Z  
Public Const mkY As Integer = 4 ''识别标志立柱Y坐标(40-79白, 80-119黑,120-159白) O (<Wn-  
Public Const mkX As Integer = PilarC - mkW / 2 '识别标志立柱X坐标 ,/C<GFae  
'车缝检测位置常数 8AOJ'~$  
Public Const sSize As Long = 32& 0:@:cz=#*  
Public Const sPos As Long = 310& S`5^H~  
Public Const sPosL As Long = 200& _hMMm6a|  
Public Const sPosR As Long = 500& ~}i &gd|(  
'车缝检测框位置 i_)j K  
Public Slice(1 To sSize, 1 To FrameH) As Byte e 9U\48  
Public SliceL(1 To sSize, 1 To FrameH) As Byte wtndXhVC4>  
Public SliceR(1 To sSize, 1 To FrameH) As Byte peY(4#  
Public avSL As Integer, avSLR As Integer, avSLL As Integer ^EN_C<V;"d  
~ 61O  
gk"S`1>  
Public MKpilar(1 To mkW * mkH) As Byte   '一维数组用于亮度对比度分析,比使用二维数组更便于VB编译优化 \vs,$h  
'该数组用于亮度对比度调节、车辆通过识别与车皮间隔识别 a9(1 6k  
Public BsLine(1 To 4 * FrameW) As Byte, bsAV As Integer  '图像的前4行。用于确定标志区的亮度与对比度范围 ,i;kAy)  
Public PilarW As Long, PilarH As Long, PilarX As Long, PilarY As Long 5Q^ L"&0  
Public LeftBK(1 To 1024, 0 To 1) As Byte, RightBK(1 To 1024, 0 To 1) As Byte c1'OIK C  
'前后帧左右上角128列*8行像素块,根据平均值差绝对值判断进车方向 >w9fFm!Q  
 "gfy6m  
5tX|@Z: z  
l&dHH_m3  
'一次连续采集的帧数 d>M&jSCL  
Public tFrames As Long Jb#*QJ=  
#'mb9GWD3  
'在采集卡申请的缓存中,是按帧为单位的,每一帧包含奇偶场两场的数据 u7UqN  
'而该卡的硬件设置是按场采集,只需要读第一场的数据即可。 XD<7d")I  
'所以要设置的缓存帧的大小是frameW*frameH*2,而一场的数据量为pFrameSize &^8>Kd8  
sT?Qlj'Zd  
Public pFRAME(1 To FrameW, 1 To FrameH) As Byte O{,Uge2n,  
Public pBuffer(1 To FrameW * FrameH * 2) As Byte |g}! F-  
Public pWorkSpace(1 To FrameW * FrameH) As Long xiX~*Zs  
Public Const pBufferSize As Long = FrameW * FrameH * 2 'sn%+oN  
Public pGray(0 To 255) As Long '整幅图像的灰度直方图 &$.Vi&{.  
G0^WQQ4  
Public hBoard As Long   '采集卡标识 -P]J:7*0?\  
Public mBufferAddr As Long  '缓存地址 t7H2z}06=h  
Public BufferSize As Long  '缓存大小(字节) xO`w| k  
Public iCurrentCard As Long P>z k  
Public CapStatus As Long ja$e)  
Public iFrames As Long \_#0Z+pX  
Public currentBr As Byte, currentContr As Byte )Mx[;IwE  
vtc} )s\  
Public hMEM As Long, mStatus As Long @sO*O4os>  
Public Const hMemSize As Long = pFrameSize * 4 +M /04  
Public hMemWork As Long _Z~wpO}/  
Public Const hMemWorkSize As Long = pFrameSize * 5 x#|=.T  
aEW Z*y  
T?I&n[Y|  
L~cswG'K  
'串口接收轨道衡数据 c BQ|m A  
Public WeightFromCom As String .taJCE  
Public bReceiveComplete As Boolean c (O+s/  
&n|#jo(gS  
/XjIm4EN  
Public Type GrayBMPHeader LS{g=3P0  
  Tag As Integer WIb\+!  
  FileLength As Long    '文件大小 Ua#*k TF  
  Reserve1 As Long  if9I7@  
  DataOffset As Long    '图像数据偏移量 yK+76\} I  
  BMPHeaderSize As Long  '文件头长 Uq 2Uv  
                        'length of the bitmap info header used to describe the bitmap colors, compression,… Ka1 F7b  
                        'the following sizes are possible: 4NMv7[r  
                        '28h - windows 3.1x, 95, nt, … i,NN"  
                        '0ch - os/2 1.x 5r.\maW  
                        'f0h - os/2 2.x VZ &>zF  
y@ J\h8_  
  ImageWidth As Long           '图像宽(像素数) 2T<QG>;)j  
  ImageHeight As Long          '图像高(像素数) hV;Tm7I2  
  PlaneNumber As Integer  '图像层数 Ash"D~  
  bpp As Integer    'bits per pixels    '1 - monochrome bitmap ps[TiW{q;  
                                        '4 - 16 color bitmap c2Ua!p(c  
                                        '8 - 256 color bitmap mDC{c ?  
                                        '16 - 16bit (high color) bitmap )#l &F$  
                                        '24 - 24bit (true color) bitmap L01R.3Z+  
                                        '32 - 32bit (true color) bitmap c>{6NSS -  
  Compression As Long '压缩方法     '0 - none (also identified by bi_rgb) WW2VW-Hk  
                                    '1 - rle 8-bit / pixel (also identified by bi_rle4) [CGvM {  
                                    '2 - rle 4-bit / pixel (also identified by bi_rle8) [Qa0uM#SU  
                                    '3 - bitfields (also identified by bi_bitfields) *,-)4)7d  
  IMAGESIZE As Long  '图像数据字节数 /7De .O~H  
  hResolution  As Long  '水平分辩率  像素数/米 8XD9fB^  
  vResolution  As Long  '垂直分辩率 wh l)^D  
  ColorsinBMP As Long   '图中所用的颜色。对256色图像总为0x100 m=k(6  
  ImportantColors As Long >|KfO>  
  Pallate(0 To 255) As Long  '图像每个值对应的实际显示颜色,项数对应PallateNumber所指调色板项数 ;TD<\1HJT=  
End Type .r)WDR  
[ -bL>8  
XtRfzqg?K  
O$J'BnPpw  
Public BMPHeader As GrayBMPHeader, BMP1 As GrayBMPHeader j_-$xz5-  
Public sRECT As RECT X&0m$x  
HNxJ`x~Z~  
(k"|k  
Public conn As ADODB.Connection yHLc lv  
Public rsTrain As ADODB.Recordset 0I* ^VGZ  
Public rsOperater As ADODB.Recordset l"p %]\tZ  
Public rsGoods As ADODB.Recordset A0# K@  
Public rsGood2 As ADODB.Recordset O66\s q  
Public rsSender As ADODB.Recordset :!;BOCTYI  
Public rsReceover As ADODB.Recordset )zlksF  
Public rsTrainTMP As ADODB.Recordset XA5gosq  
9Xmb_@7b}  
J xi>1  
'打开采集卡 L,of@>  
'设置参数 i >Hh_q;'  
'设置为实时单帧采集到缓存方式 fw ._  
'由另一线程查询采集状态,如果完成采集,传送至用户数组分析或保存 Pk T&zSQA  
M c oHV]x  
oOy@X =cw  
Sub Main() l]Jk  }.  
  Dim i As Integer, status As Long )/PvaL  
     Hq8<g$  
   InitBMPinfo "tBdz V  
   '生成BMP文件头---该文件头是固定将pFRAME数组写成BMP文件 V= Iau_  
    BMPHeader.Tag = &H4D42 %}j.6'`{  
    BMPHeader.ImageWidth = FrameW 9-eYCg7C|  
    BMPHeader.ImageHeight = FrameH 5F+5J)h  
    BMPHeader.BMPHeaderSize = &H28 zNuiB LxDs  
    BMPHeader.PlaneNumber = 1 ?q1&(g]qO  
    BMPHeader.bpp = 8 )5_GJm&R9  
    BMPHeader.Compression = 0 %gSqc }v*  
    BMPHeader.hResolution = &H1274   'Windows pBrush.exe的默认值,PhotoED.exe默值为0 zL5r8mD3  
    BMPHeader.vResolution = &H1274 .!RBh LH_g  
    BMPHeader.ColorsinBMP = 256 I! {AWfp0  
    BMPHeader.ImportantColors = BMPHeader.ColorsinBMP  s$YKdtR  
    BMPHeader.DataOffset = Len(BMPHeader) /xJ,nwp7  
    For i = 0 To 255 (P~Jzp9u  
      BMPHeader.Pallate(i) = RGB(i, i, i) 1eZ">,F6<  
    Next i z[b,:G  
    BMPHeader.IMAGESIZE = FrameH * FrameW S;M'qwN  
    BMPHeader.FileLength = Len(BMPHeader) + BMPHeader.IMAGESIZE 38b%km#  
YiB]}/  
.*:SZ3v  
    MoveMemory BMP1, BMPHeader, Len(BMPHeader) .+]e9mV  
     {6^c3R[  
    BMP1.ImageWidth = FrameW ?`_US7.@  
    BMP1.ImageHeight = FrameH * 2 }OJ*o  
    BMP1.IMAGESIZE = BMP1.ImageWidth * BMP1.ImageHeight ~;_]U[eOL  
    BMP1.FileLength = Len(BMP1) + BMP1.IMAGESIZE  St-:+=V_  
1GN>,Lb: o  
  '确定标志位置,为pilarX, pilarY确定初始值 @xH|(  
   PilarW = mkW p%+ 0^]v1  
   PilarH = mkH  '此两项为固定值 }]>[FW  
   PilarX = GetSetting(App.EXEName, "Mark", "MarkX", mkX) E^zgYkZO  
   PilarY = GetSetting(App.EXEName, "Mark", "MarkY", mkY)  '此两项需要在程序初始化时检查并进行调整 Y N_#x  
   ,RKBGOz?f  
   p<Wb^BE  
  '连续采集记录文件 t  }7hD  
  ' 建立一个缓冲区为页对齐方式的文件 L7_(KCh  
  If Dir(TmpFile) <> "" Then ^LaI{UDw%h  
    hFile = CreateFile(TmpFile, GENERIC_READ Or GENERIC_WRITE, _ q<o*rcwf ^  
     0&, 0&, OPEN_ALWAYS, FILE_FLAG_NO_BUFFERING, 0&) 9xP{#Qa  
    ' 在95/98中,如果打开文件时没有声明overlapped方式,在读定文件时就不能使用overlapped参数项 Nt,)5_K <  
    ' 而必须用setfilepointer函数调节与操作系统保留的文件指针。 vnMt>]w-}  
  Else TDBWYppM  
    hFile = CreateFile(TmpFile, GENERIC_READ Or GENERIC_WRITE, _ 5)' _3r  
     0&, 0&, CREATE_ALWAYS, FILE_FLAG_NO_BUFFERING, 0&) [@U8&W  
  End If TyD*m$`y  
  If hFile = 0 Then \xkLI:*\  
    MsgBox TmpFile & ": File Open Error", vbOKOnly h#@l'Cye  
    Exit Sub KGxF3xS*7  
  End If ( t#w@<  
  '采集参数记录文件 `* "u"7e  
hBCFile = FreeFile() 4*&x% ~*  
Open TmpFile + ".BC" For Binary Access Read Write As #hBCFile vC E$)z'"  
   25BW/23}e  
hMEM = VirtualAlloc(ByVal 0&, hMemSize, MEM_COMMIT, PAGE_READWRITE)  ’分配系统内容 EXH{3E54)`  
If hMEM = 0 Then TC?kuQI  
    fStatus = GetLastError %P0dY:L~  
    MsgBox "内存分配错误: 错误代码 - " & Str(fStatus) & vbCrLf _ yc|C}oQF  
     & "请向技术人员报告该错误代码。", vbOKOnly I.r &;   
    CloseHandle hFile 'Y(#Yxc  
    Exit Sub  ^ 'FC.  
End If P0~3<h?U8  
!;{@O`j?b  
hMemWork = VirtualAlloc(ByVal 0&, hMemWorkSize, MEM_COMMIT, PAGE_READWRITE) q@F"fjWBr  
If hMemWork = 0 Then y A?>v'K  
    fStatus = GetLastError }X$ vriW  
    MsgBox "内存分配错误: 错误代码 - " & Str(fStatus) & vbCrLf _ YN?@ S  
     & "请向技术人员报告该错误代码。", vbOKOnly H/Cv?GJF  
     '释放已成功分配的内存 v:B_%-GfOA  
    mStatus = VirtualFree(ByVal hMEM, hMemSize, MEM_DECOMMIT) #x1AZwC  
    mStatus = VirtualFree(ByVal hMEM, 0&, MEM_RELEASE) k^Zpb&`Hx  
     qGuz`&i  
    CloseHandle hFile nMx0+N1  
    Exit Sub .3?'+KZ,  
End If {R `IA|T#k  
nQdNXv<(  
' Test writing kFgN^v^t  
'WriteFile hFile, ByVal hMEM, ByVal 4096&, bytesRW, ByVal 0& Dx$74~2e  
     '!Ps4ZTn_  
   '初始化采集卡参数 `Gx"3ZUn  
   iCurrentCard = -1 #pBAGm3  
   hBoard = okOpenBoard(iCurrentCard) Msn)jh  
   Debug.Print hBoard Wa #,>  
   If hBoard = 0 Then ;_amgRP7$  
      ExitGrabber oo) P(_"u  
      End Re5m  
   End If 8A"[n>931  
   okGetBufferSize hBoard, mBufferAddr, BufferSize KSIH1E  
   If mBufferAddr = 0 Then & d\`=e  
     MsgBox "缓存不存在!" aO.'(kk8  
     ExitGrabber I{<6GIU+  
   End If d8<Lk9H9R  
   Debug.Print Hex(mBufferAddr), Hex(BufferSize) E$.|h;i]Q  
   `]\4yTd  
   6#T?g7\pyR  
   currentBr = 128: currentContr = 128 ogs9obbZ!  
   '设置视频输入参数 x5v^@_: jr  
   okSetVideoParam hBoard, VIDEO_SOURCECHAN, 1 'Video2 [6V'UI6  
      ' lParam=0,1.. Comp.Video; 0x100,101...to Y/C(S-Video), 0x200,0x201 to RGB Chan.Input yi Qke   
   okSetVideoParam hBoard, VIDEO_BRIGHTNESS, currentBr '亮度 kMKI=>s+  
   okSetVideoParam hBoard, VIDEO_CONTRAST, currentContr '对比度  ---初始设置条件下如果图像亮度达不到基本要求则控制灯光 E}lU?U5i  
   okSetVideoParam hBoard, VIDEO_RGBFORMAT, FORM_GRAY8 '8位灰度模式 96]lI3 c  
   okSetVideoParam hBoard, VIDEO_TVSTANDARD, 0 'PAL制式 ?Pw# !t  
   okSetVideoParam hBoard, VIDEO_SIGNALTYPE, &H10000 '逐行(低字)同步开槽(高字) _DMj )enH"  
   okSetVideoParam hBoard, VIDEO_RECTSHIFT, 144 + &H2C0000 '有效区起始位置:高字Y偏移,低字X偏移 (144/44经验值) hghtF  
   okSetVideoParam hBoard, VIDEO_AVAILRECTSIZE, FrameW + FrameH * 2 * &H10000 '有效区大小:低字X高字Y (768/576采集卡最大值) s#`%c({ U|  
   okSetVideoParam hBoard, VIDEO_FREQSEG, 0 ' 低频部分信号 *U.$=4Az  
   (6A>:_)  
   '设置采集参数 < Xm5re.  
   okSetCaptureParam hBoard, CAPTURE_INTERVAL, 0  '逐帧 jec03wH_0  
   okSetCaptureParam hBoard, CAPTURE_CLIPMODE, 2 '裁剪方式 &FHE(7}/#  
   okSetCaptureParam hBoard, CAPTURE_BUFRGBFORMAT, FORM_GRAY8  '8位灰度 "8ILV`[  
   okSetCaptureParam hBoard, CAPTURE_HARDMIRROR, 0 '不作镜像变换 n} GIf&  
   okSetCaptureParam hBoard, CAPTURE_FRMRGBFORMAT, FORM_GRAY8 '帧存格式 B3O^(M5W  
   okSetCaptureParam hBoard, CAPTURE_SAMPLEFIELD, 0 ' 逐场采集 %2^C  
   okSetCaptureParam hBoard, CAPTURE_HORZPIXELS, 944  '水平像素数 PAL制式固定值 aw/Y#  
   okSetCaptureParam hBoard, CAPTURE_VERTLINES, 625 '垂直线数 2n?\tOm(V  
   okSetCaptureParam hBoard, CAPTURE_SEQCAPWAIT, 0 '不等结束立即返回 -))>7skc  
   'okSetCaptureParam hBoard, CAPTURE_BUFBLOCKSIZE, FrameW + FrameH * 2 * &H10000 |}^[f]  
   'Buffer Block Size不用设置,而用okSetTargetRect函数进行动态调节 #j d?ocoY  
   YP>VC(f   
   ~^lQ[x  
   okCloseBoard hBoard _Jk-nZgn  
   Sleep 50 +1Si>I  
   hBoard = okOpenBoard(iCurrentCard)   '关闭后重新打开使新的设置值生效 DX}EOxO,.  
   jPP aL]  
   '设置数据传送方式 |~8\{IcZ  
   'okSetConvertParam hBoard, CONVERT_FIELDEXTEND, FIELD_COPYEXTEND '逐行并扩展行 [T"oqO4%]  
   '该设置对本程序无意义,因为程序直接用CopyMemory方法读缓存,而扩展行方式是在用采集卡内置函数读RECT过程中实现的。 G\Hck=P[$3  
   Xx:0Nt]  
   sRECT.Right = -1   '用于获得当前设置值 Tr)a6Cf  
   iFrames = okSetTargetRect(hBoard, BUFFER, sRECT) F) {f{-@)  
   Debug.Print sRECT.Left, sRECT.Right, sRECT.Top, sRECT.Bottom Q&(?D  
   Debug.Print okSetCaptureParam(hBoard, CAPTURE_BUFBLOCKSIZE, -1)  'FrameW + FrameH * &H10000 b;]'Bo0K  
   sRECT.Left = 0 ^c< <I-o|  
   sRECT.Top = 0 7 tF1g=\  
   sRECT.Right = sRECT.Left + FrameW \-GV8A2:k  
   sRECT.Bottom = sRECT.Top + FrameH * 2 $^IuE0.  
   iFrames = okSetTargetRect(hBoard, BUFFER, sRECT) [A|W0  
   -4,qAnuMx  
   sRECT.Right = -1   '检查新设置值 <E$P  
   iFrames = okSetTargetRect(hBoard, BUFFER, sRECT) Ptzha?}OZ  
   Debug.Print sRECT.Left, sRECT.Right, sRECT.Top, sRECT.Bottom q\O'r[&V  
   Debug.Print Hex(okSetCaptureParam(hBoard, CAPTURE_BUFBLOCKSIZE, -1)) 4en&EWUr  
   rr3NY$W  
   If TESTSignal = False Then $%;NX[>j  
      'ExitGrabber _8\Uukm  
   End If TcZ Ci^1F  
   &|%z!x6f  
   K).X=2gjY  
   zF;}b3oIo  
   '设为实时采集状态 m{mK;D  
   'iFrames = okCaptureActive(hBoard, BUFFER, 0&) y 97QqQ^  
   L}nj#z4g  
   yZxgUF&`  
   '单帧采集 $Pzvv`f*  
   'okWaitSignalEvent hBoard, EVENT_FRAMEHEADER, -1 |?s%8c'w=  
   'iFrames = okCaptureSingle(hBoard, BUFFER, 0&) `>?\MWyu  
   okCaptureTo hBoard, BUFFER, 0, 1 'single a: iIfdd4'  
   'Do While okGetCaptureStatus(hBoard, False) <> 0 ?8-e@/E#x  
   '   Sleep 20 L45&O *%  
   'Loop $MKx\qx}  
   okGetCaptureStatus hBoard, True WaWT 5|A  
   MoveMemory pFRAME(1, 1), ByVal mBufferAddr, pFrameSize }n 6BI}n  
   '写入768*576测试图象 JQ+4 SomK  
   ArrayToBMP TmpBMP Xu3^tH-b<  
   jt"p Js'  
   '打开数据库 XT{1!I(  
   Set conn = New ADODB.Connection ETH`.~ %  
   conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ bsM`C]h&  
      "Persist Security Info=False;Data Source=" & "c:\train\train.mdb" & _ ?Y ) Qy,  
      "; Mode=Read|Write" aP8Im1<A  
   conn.Open Lr)h >j6\  
   ^>GL<1 1  
   frmRecord.Picture1.Picture = LoadPicture(TmpBMP) `C=!8q  
   frmRecord.Visible = True m4 E 6L  
   frmQuery.Visible = True aC]~   
   Load frmReceiveFromComm ?P<&8eY  
   =)Ew6} W6  
   '调试参数 5ez"B]&T  
   If InStr(UCase(Command()), "/CAPTURE") > 0 Then Vt n$*ML  
     SignalBox.Visible = True !aa^kcEjnL  
   End If mt fDl;/D  
   If InStr(UCase(Command()), "/COMM") > 0 Then j0 =`Jf  
     frmReceiveFromComm.Visible = True |1g2\5Re  
   End If (oq(-Wv  
)#ic"UtR  
End Sub > m}.}g8  
akm)X0!-}  
Sub ExitGrabber() )K@ 20Q+0K  
  '关闭数据库 :b=`sUn<X+  
  '关闭采集卡 QlJCdCSy  
  mStatus = VirtualFree(ByVal hMEM, hMemSize, MEM_DECOMMIT) bT[Q:#GL  
  mStatus = VirtualFree(ByVal hMEM, 0&, MEM_RELEASE) n+zXt?{u  
  mStatus = VirtualFree(ByVal hMemWork, hMemWorkSize, MEM_DECOMMIT) ;TmwIZ  
  mStatus = VirtualFree(ByVal hMemWork, 0&, MEM_RELEASE) 5PKv@Mk  
  okStopCapture hBoard Zx}=c4I(y  
  okCloseBoard hBoard hx)Ed  
  CloseHandle hFile }-zx4<4BH  
  Close #hBCFile '9auQ(2  
  conn.Close w#Nn(!VR  
  End Ip8 Ap$  
End Sub ~rpYZLH/:0  
&_" 3~:N8k  
Function ArrayToBMP(ByVal File As String) Q ;m .m2  
Dim BytesWrite As Long k49CS*I  
&^9f)xb  
hTmpFile = CreateFile(File, GENERIC_READ Or GENERIC_WRITE, 0&, 0&, _ WHbvb3'  
  CREATE_ALWAYS, 0&, 0&) FX}<F0([?  
4I:Jb;k>  
If hTmpFile = 0 Then F`Q,pBl1p6  
   ArrayToBMP = False ,>{4*PM(  
   Exit Function @=Ly#HuUM  
End If 8C,?Ai<ro  
En5Bsz !  
SetFilePointer hTmpFile, 0&, 0&, FILE_BEGIN <6dD{{J]>p  
WriteFile hTmpFile, BMPHeader, 2&, BytesWrite, ByVal 0& L2{tof  
SetFilePointer hTmpFile, 2&, 0&, FILE_BEGIN t~5>P S  
WriteFile hTmpFile, BMPHeader.FileLength, Len(BMPHeader) - 2, BytesWrite, ByVal 0& v bb mmv  
L4Nk+R;  
SetFilePointer hTmpFile, Len(BMPHeader), 0&, FILE_BEGIN S31 :}   
WriteFile hTmpFile, pFRAME(1, 1), pFrameSize, BytesWrite, ByVal 0& ;a{ Dr  
'G-VhvM v  
If BytesWrite < pFrameSize Then &JfyXM[]  
  ArrayToBMP = False deHBY4@  
End If Bq R;d  
^Xa-)Pu  
CloseHandle hTmpFile Esw&ScBOP  
hH"3Y}U@  
End Function U%gP2]t%cs  
r+m8#uR  
Function ArrayToBMP1(ByVal File As String) .4_ ~ku  
w/YKWv{_S  
Dim BytesWrite As Long S`0@fieOf  
2Q9s?C   
hTmpFile = CreateFile(File, GENERIC_READ Or GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, 0&, _ &[ 3y_,  
  CREATE_ALWAYS, 0&, 0&) ,e.y4 vnU  
bI]1!bi]i  
If hTmpFile = 0 Then E'MMhl o  
   ArrayToBMP1 = False eDaVoc3  
   Exit Function 71K6] ~<  
End If \hi{r@k>}  
$|(roC(  
SetFilePointer hTmpFile, 0&, 0&, FILE_BEGIN s4~c>voQB  
WriteFile hTmpFile, BMP1, 2&, BytesWrite, ByVal 0& M_9|YjwS  
gP/]05$e  
SetFilePointer hTmpFile, 2&, 0&, FILE_BEGIN ik&loM_  
WriteFile hTmpFile, BMP1.FileLength, Len(BMP1) - 2, BytesWrite, ByVal 0& Oo7n_h1  
*ZN"+ wf\  
SetFilePointer hTmpFile, Len(BMP1), 0&, FILE_BEGIN @Z3b^G[  
WriteFile hTmpFile, pBuffer(1), pBufferSize, BytesWrite, ByVal 0& N1LR _vS"  
CXUNdB  
If BytesWrite < pBufferSize Then kdxs{b"t  
  ArrayToBMP1 = False R#1m_6I  
End If ZR..>=  
gkBat(Uc  
CloseHandle hTmpFile E8%O+x}  
y;<jE.7>  
End Function O,^,G<`  
1-w1k ^e  
'使用该过程建立的文件要求在用后关闭 ?)]sfJG  
Public Function ArrayToBMP2(File As String) As Boolean k9}im  
=i:?4pIZ  
Dim BytesWrite As Long +BzKO >  
"DRp4;  
ArrayToBMP2 = True !29 R l`9  
!vImmhI!I  
hTmpFile = CreateFile(File, GENERIC_READ Or GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, 0&, _ )x(  *T  
  CREATE_ALWAYS, FILE_ATTRIBUTE_TEMPORARY, 0&) L?al2aopF  
X+&@$v1  
If hTmpFile = 0 Then i]Kq  
   ArrayToBMP2 = False _;'}P2&Q  
   Exit Function  sGdt)  
End If -(:BkA  
QZh8l-!#5  
SetFilePointer hTmpFile, 0&, 0&, FILE_BEGIN c (\-7*En  
WriteFile hTmpFile, BMPHeader, 2, BytesWrite, ByVal 0& ^gb2=gWZ<  
<6(u%t0k5  
SetFilePointer hTmpFile, 2&, 0&, FILE_BEGIN _BR>- :Jr  
WriteFile hTmpFile, BMPHeader.FileLength, Len(BMPHeader) - 2, BytesWrite, ByVal 0& &2QN^)q  
 |2n2  
SetFilePointer hTmpFile, Len(BMPHeader), 0&, FILE_BEGIN +pf 7  
WriteFile hTmpFile, pFRAME(1, 1), pFrameSize, BytesWrite, ByVal 0& uO"@YX/  
0Fbq/63  
If BytesWrite < pFrameSize Then 3l4k2  
  ArrayToBMP2 = False kx'6FkZPIr  
End If @Ki`g(],P  
&p= ~=&g=  
CloseHandle hTmpFile Gc@ENE f  
bzUc;&WDz  
End Function Bljh'Qp>C  
^GRd;v=-@  
Private Function TESTSignal() As Boolean T*YdGIFO  
Dim extsign As Long, videotype As Long, scanlines As Long, fieldfrq As Long X-n'?=  
VaX>tUW  
extsign = okGetSignalParam(hBoard, SIGNAL_VIDEOEXIST) X^aujK^ @  
W9eR3q  
If extsign = 1 Then c!kbHZ<Z  
   TESTSignal = True &m Y<e4  
Else L Q;JtLu1  
    If extsign = 0 Then M.|hnGX N  
        MsgBox "无视频输入信号,检查摄像机电源!", vbOKOnly f, ;sEV  
        TESTSignal = False <Xl G:nmY  
        Exit Function Ui?t@.  
    End If s[xdID^3.  
End If !_x-aro3<  
oxGOn('  
'测试视频输入类型 ,{E'k+  
'video type apw8wL2  
okWaitSignalEvent hBoard, EVENT_ODDFIELD, 40 ?5/Sa  
videotype = okGetSignalParam(hBoard, SIGNAL_VIDEOTYPE) oO= 6Kd+T  
If videotype = 1 Then N4HnW0  
        '"隔行信号(Interlaced)" N18Zsdrp  
Else (5Cm+Sy  
   If videotype = 0 Then U6M4}q(N]  
       '"逐行信号(Non-interlaced)" w7dG=a&  
   Else 4[Oy3.-c  
     If videotype = -1 Then #}k^g:l1  
       ' "不支持" B'~.>, fg  
     End If *Ru Uf  
   End If [$] JvF  
End If D}3E1`)W  
t5 5k#`Z  
'测试垂直扫描线数 R \`,Q'3  
'video scanlines 8(g:i#~  
scanlines = -1 0D.YO<PU  
scanlines = okGetSignalParam(hBoard, SIGNAL_SCANLINES) Dm4\Rld{  
    If scanlines = -1 Then :UScbPG  
        ' "不支持" JY >]u*=  
    Else !sR`]0  
        'Trim(Str(ScanLines)) + " 行数/幅" JNMZn/  
    End If Dj<Vn%d*  
@x{;a9y  
'测试帧频 @8/-^Rh*  
'video field frequency u9VJ{F  
    fieldfrq = okGetSignalParam(hBoard, SIGNAL_FIELDFREQ) )0UQy #r  
    If fieldfrq = -1 Then 66z1_ lA  
        'lblSignal(8) = "不支持" W}T+8+RU  
    Else z` gR*+  
        'lblSignal(8) = Trim(Str(FieldFRQ)) + " 场数/秒"  Rl 6E  
    End If N'[^n,\(:  
End Function DoImWNLo  
ZYL]|/"J9  
CZbp}:|  
Sub PicIdentify() YpNTq_S1,  
'本程序完成从文件中按顺序读出一幅图像并完成图像识别 '9^x"U9c  
'根据固定位置判断透过车皮连接处接收的对面的立柱影像。出现立柱后该帧前1-2帧与后1-2帧分别为车号信息与车皮信息 bLf }U9  
'判定标准:如果在立柱位置上有明显的模式反差,则视为车皮之间的间隔 Dk[[f<H_{  
'方法:对立柱标志区进行平均值二值化,面积为32*40,亮区(255)与暗区(0)的亮度平均值理论差大于200倍,实际差值应不小于100倍 2+ 9">a@  
vk[Km[(U'  
  Dim fPTR As Long, cFrame As Long U)c,ZxE  
  Dim i As Long, j As Integer, pTotal As Long, pAV As Integer RJd55+h  
     jfgAI7;b  
hg\$>W~ 2  
cFrame = 0 y;Dw%m  
JsiJ=zo<  
q$H'u[KQ06  
Do While cFrame < tFrames ?rr%uXQjH  
   le8n!Dk(  
  fStatus = SetFilePointer(hFile, cFrame * pFrameSize, 0&, FILE_BEGIN) *!.'1J:YJ(  
  fStatus = ReadFile(hFile, ByVal hMEM, ByVal pFrameSize, bytesRW, ByVal 0&) eb+[=nmP  
  MoveMemory pFRAME(1, 1), ByVal hMEM, pFrameSize (c[|k  
   *4r;H2%c  
  frmRecord.RText.Text = Str(cFrame) L*L3;y|  
  frmRecord.RText.Refresh \/lS!+~'']  
       t@!oc"z}@  
  If CheckMark = True Then 6'*?zZrz  
   ArrayToBMP TmpBMP iL5+Uf)E3  
   frmRecord.Picture1.Picture = LoadPicture(TmpBMP) 1[B?nk  
   frmRecord.RText.Text = "第" & Str(cFrame) & "帧" v)X1R/z5xw  
   .;$/nz6vk  
   DrawSlice &LYU#$sj  
   wAy;ZNu  
   'i = MsgBox("检测到立柱:第" & Str(cFrame) & "帧", vbYesNo) uW MAXGL  
   'If i = vbNo Then \9D '7/$I,  
   '  Exit Do b`%/ *  
   'End If se(_`a/4Q  
   'cFrame = cFrame + 1 &WsDYov?  
   *+ Q,b^N  
  End If JO1c9NyKr  
  DoEvents Y{2\==~  
  cFrame = cFrame + 1 gbKms ; :  
Loop NFc< %#H  
End Sub #<!oA1MH4  
2Uk$9s  
9Y-s],2V  
Function CheckMark(Optional iBlk As Integer = 30, Optional iWhite As Integer = 230) As Boolean ZM4q@O)/  
\Dr@n^hk@[  
'如标志区模式反差存在则为TRUE,否则返回FALSE vw+ @'+  
lm@<i4%$F  
Dim i As Integer, j As Integer, mTotal As Long, mAV As Single, mTop As Long, mBot As Long *[_?4*F  
CheckMark = True FtY*I&  
   oOJN?97!k  
'复制标志区 v( (fRX.`  
For i = 1 To mkH SD JAk&Z}R  
   MoveMemory MKpilar((i - 1) * PilarW + 1), pFRAME(PilarX, PilarY + i), PilarW zFv>'1$  
Next i 3:);vh!  
IURi90Ir  
For j = 1 To PilarW * PilarH / 2 {mueP6Gz@J  
   mTop = mTop + MKpilar(j) h4.ZR={E  
Next j [n66ZY#U]  
N5oao'7|A  
For j = PilarW * PilarH / 2 + 1 To PilarW * PilarH BIX%Bu0'f  
   mBot = mBot + MKpilar(j) 4d6F4G4U  
Next j qW7S<ouh  
v\f 41M7D  
mTop = mTop / PilarW / PilarH * 2 uZW1 :cx  
mBot = mBot / PilarW / PilarH * 2 7G2TTa  
WXXLD:gxI  
mAV = (mTop + mBot) / 2 + (mBot - mTop) / 4 '标志区平均亮度 +B*ygv:  
(MbI8B>  
'平均值极值化 a"hlPJlG  
  For j = 1 To PilarH * PilarW <PJwBA%{  
    MKpilar(j) = IIf(MKpilar(j) > mAV, 255, 0) tQUp1i{j\  
  Next j &a-:ZA@  
   P VV\@  
mTop = 0: mBot = 0 &HW%0lTs%  
For j = 1 To PilarH * PilarW / 2 5v>(xl  
  mTop = mTop + MKpilar(j) [l'~>  
Next j ,D~C40f  
cV)C:!W2  
For j = PilarH * PilarW / 2 + 1 To PilarH * PilarW =;c? 6{<1  
  mBot = mBot + MKpilar(j) VN;Sz,1Z  
Next j SRj|XCd  
S{J$[!F  
{$Fg+~   
  mTop = mTop / PilarH / PilarW * 3 )S>~h;  
  mBot = mBot / PilarH / PilarW * 3  aA0aW=R  
   %.[GR  
rX fQ_  
If mBot > iWhite And mTop < iBlk Then O2A Z|[*I  
  CheckMark = True HtS:'~DYo  
Else +mV4Ty  
  CheckMark = False 3LX<&."z  
End If 2<Ub[R  
End Function I[&z#foN=w  
uKtrG,/ p  
Sub Capture1Frame() Q{mls  
   okCaptureTo hBoard, BUFFER, 0, 1 'single .F}ZP0THnZ  
   okGetCaptureStatus hBoard, True rWSw1(sAA  
   MoveMemory pFRAME(1, 1), ByVal mBufferAddr, pFrameSize ~@L$}Eu  
End Sub m"@M~~bh  
QJ pUk%Wj  
,/JrQWgD  
Sub CopyMark(iBlk As Integer, iWhite As Integer) Dth<hS,2J  
'复制标志区并返回标志区暗区与亮区的亮度平均值 `EV[uj&1S  
Dim i As Integer, j As Integer, mTotal As Long, mAV As Single, mTop As Long, mBot As Long, mMid As Single, bsTotal As Long b6oPnP_3P  
   o-7>^wV%BD  
'复制标志区 N6yqA)z?;  
For i = 1 To mkH  :E'38~  
   MoveMemory MKpilar((i - 1) * PilarW + 1), pFRAME(PilarX, PilarY + i), PilarW 1>l {c  
Next i 8M:;9a8fh  
-zMXc"'C^k  
For j = 1 To mkW * mkH / 2 !]5F2~"v  
   mTotal = mTotal + MKpilar(j) js7J#b7  
Next j jskATA /  
9k2HP]8=[{  
iBlk = mTotal / (mkW * mkH / 2)  '标志区上部白区平均亮度 I)DLnnQQ  
d) G7U$z~  
mTotal = 0 &~^"yo#b  
For j = mkW * mkH / 2 + 1 To mkW * mkH Z\O , 9  
   mTotal = mTotal + MKpilar(j) )SUT+x(DU  
Next j 0.|tKetHq  
K3'`!Ka*  
iWhite = mTotal / (mkW * mkH / 2) '标志区下部黑区平均亮度 [#uX{!q'  
RR^I*kRH  
'背景亮度 (zye Ch  
  MoveMemory BsLine(1), pFRAME(1, 1), 4 * FrameW .ay K+6I  
  For i = 1 To 4 * FrameW Wu:vO2aw8  
    bsTotal = bsTotal + BsLine(i) Q_LPLmM  
  Next i 0>Ecm#  
  bsAV = bsTotal / FrameW / 4 AUxLch+"5K  
=^=9z'u"=  
End Sub Alh%Z\  
nM) ]  
w.J2pvyB  
Sub AdjIMGbright(Optional bInit As Boolean = True) 4d9i AN  
?$F:S%eH  
  '自动调节亮度与对比度,此时处于无车辆状态(白天特别高,而夜间特别暗) `%F.]|Y0  
  '图像平均亮度白天不高于200(当车辆通过时可能会下降到100左右),不低于100 $7M64K{  
  '            夜间不高于80(过高时通常是由于雪花噪声引起),但立柱不低于30 N$?mula  
     t'0r4&\  
  Dim bsTotal As Long, i As Integer, iBlack As Integer, iBright As Integer <E6]8SQE  
   )#i]exZ  
  '按标准亮度与对比度采集一帧,确定背景亮度 ma?569Z8~0  
  currentContr = 128   '初始对比度 CI$F#j  
  currentBr = 128   '初始亮度 )N`ia%p_]  
  okSetVideoParam hBoard, VIDEO_BRIGHTNESS, currentBr '亮度 5GT,:0  
  okSetVideoParam hBoard, VIDEO_CONTRAST, currentContr '对比度 -Qqb/y  
  DoEvents GeZwbJ/?B  
  Capture1Frame ~"brfjd|  
  '获得图像上缘4行象素 _W tSZmW?  
  MoveMemory BsLine(1), pFRAME(1, 1), 4 * FrameW LK/gG6n5M0  
  CopyMark iBlack, iBright   '图像标志区亮度 )!p=0&z@{  
  For i = 1 To 4 * FrameW 4$d|}aj H  
    bsTotal = bsTotal + BsLine(i) 5K{(V^88F  
  Next i 'Ys"yY@  
  bsAV = bsTotal / FrameW / 4    '图像上缘基线亮度 rWi9' 6  
   6"eGd "  
  Select Case bsAV E{ Y0TZ+  
     Case 0 To 60    '夜间通过灯光照明,完全没有背景 =@V4V} ?  
       currentBr = 150 $fuFx8`2W  
       currentContr = 60 B>#zrCD  
     Case 61 To 80   '有可见背景 t3v*P6  
       currentBr = 140 fy9{W@E3p  
       currentContr = 70 x\;`x$3t  
     Case 81 To 100  '有清晰背景 w0tlF:Eg  
       currentBr = 128 qV8;;&8r  
       currentContr = 80 @wZ`;J%  
     Case 100 To 150  '有明亮背景 e +4p__TmZ  
       currentBr = 140                '5:30-6:00钟实测数据 xWn.vSos  
       currentContr = 50 @5Ril9J[b  
     Case 151 To 180 LQNu]2  
       currentBr = 130 @+B .<@V  
       currentContr = 60 BalOph4M[  
     Case 181 To 220  '背景全为白色 `H ^Nc\P#  
       currentBr = 110 @QVAsNW:O  
       currentContr = 130 4D9l Za}  
     Case 221 To 255  '背景全为白色 m'oVqA&  
       currentBr = 100 ANp4yy+  
       currentContr = 100 3 +BPqhzf  
  End Select q.~.1 '`!  
   9j$ OU@N 8  
  Select Case (iBlack + iBright) / 2   '图像反射光强度修正 8p>%}LX/  
        Case 100 To 150 Z(*n ZT,  
          currentBr = currentBr - 10 FhAuTZk  
        Case 151 To 255 !bT0kP$3}  
          currentBr = currentBr - 20 HSp*lHU  
  End Select 6DR@$fpt  
   ]n\WCU ]0  
  okSetVideoParam hBoard, VIDEO_BRIGHTNESS, currentBr '亮度 ,t61IU3"  
  okSetVideoParam hBoard, VIDEO_CONTRAST, currentContr '对比度 (al7/EhY  
End Sub `k _5Pz\  
*Rr,ii  
Sub CopyCorner(rowID As Integer, diffL As Integer, diffR As Integer) 9%kY8#%SV  
    Dim i As Integer, j As Integer, L1 As Long, L2 As Long, R1 As Long, R2 As Long 6bo,x  
     {3`#? q^o'  
    For i = 1 To 8 ^*%p]r  
      MoveMemory LeftBK((i - 1) * 128 + 1, rowID), pFRAME(1, i), 128& nLQ 3s3@1>  
      MoveMemory RightBK((i - 1) * 128 + 1, rowID), pFRAME(640, i), 128& m!N_TOl-^  
    Next i w*#TS8 \  
     f1hi\p0q  
    For j = 1 To 1024 9"_qa q  
      L1 = L1 + LeftBK(j, 0) xgsD<3  
      L2 = L2 + LeftBK(j, 1) N, ;'oL+  
      R1 = R1 + RightBK(j, 0) J0mY=vX  
      R2 = R2 + RightBK(j, 1)  6<sB   
    Next j fcD$km  
    diffL = Abs(L1 - L2) / 1024 /Eh\07p  
    diffR = Abs(R1 - R2) / 1024 >UWL T;N/W  
End Sub (3c,;koRR  
\*!g0C 8 o  
Function CheckSlice() As Boolean =@gH$Q_1  
  CopySlice avSL, avSLR, avSLL dSk\J[ D  
  If Abs(avSL - avSLL) > (Abs(avSLL - avSLR) + 5) * 4 Then :]=Y1*L\)  
    CheckSlice = True o9q%=/@,  
  Else 8X5;)h   
    CheckSlice = False qJ#?= ITE  
  End If I2YQIY+  
End Function zu^?9k  
# e+%;5\  
Sub CopySlice(avSL As Integer, avSLR As Integer, avSLL As Integer) >:X zv  
  Dim i As Long, j As Long, total As Long, totalL As Long, totalR As Long >xJt&jW-  
  For i = 1 To FrameH \QHe0?6  
    MoveMemory Slice(1, i), pFRAME(sPos, i), sSize !+9H=u  
    MoveMemory SliceL(1, i), pFRAME(sPosL, i), sSize cJj0`@0f  
    MoveMemory SliceR(1, i), pFRAME(sPosR, i), sSize 4xe:+sA.N  
  Next i i+Ob1B@w  
  For i = 1 To FrameH !ssE >bDa  
    For j = 1 To sSize Q*(]&qr"E  
       total = total + Slice(j, i) CHN!o9f  
       totalL = totalL + SliceL(j, i) roj/GZAy"  
       totalR = totalR + SliceR(j, i) V|#B=W  
    Next j `k^ i#Nc>  
  Next i (RWZ [-;)  
  avSL = total / FrameH / sSize 7$,["cJX  
  avSLR = totalR / FrameH / sSize =lr*zeHLC  
  avSLL = totalL / FrameH / sSize DtXXfp@;  
End Sub [UR+G8X21m  
Uu>YE0/)  
Sub DrawSlice() 5#$E4k:YV  
   frmRecord.Picture1.Line (sPosL, 0)-(sPosL + sSize, FrameH), RGB(255, 0, 0), B CH`4FR.-  
   frmRecord.Picture1.Line (sPos, 0)-(sPos + sSize, FrameH), RGB(0, 255, 0), B sjWhtd[fgG  
   frmRecord.Picture1.Line (sPosR, 0)-(sPosR + sSize, FrameH), RGB(0, 0, 255), B nU)}!` E  
   frmRecord.RText.Text = Str(avSLL) & "/" & Str(avSL) & "/" & Str(avSLR) V:QfI  
End Sub `lN1u'(:  
Sub DrawMark(pic As Control) qSkt }F%'  
   Dim i As Long, j As Long 8[(c'rl|)|  
   pic.Line (PilarX, FrameH - PilarY)-(PilarX + PilarW, FrameH - PilarY - PilarH / 2), RGB(255, 0, 0), B i Dp]l u  
   pic.Line (PilarX, FrameH - PilarY - PilarH / 2 - 1)-(PilarX + PilarW, FrameH - PilarY - PilarH), RGB(0, 0, 255), B RvYew!n  
   For i = 1 To PilarH X[h=UlF  
     For j = 1 To PilarW "MM7qV  
       pic.PSet (PilarX + PilarW + 10 + j, FrameH - PilarY - i), RGB(MKpilar((i - 1) * PilarW + j), 0, 0) : }UWy?F  
     Next j <u u1e@P  
   Next i \ $X3n\  
End Sub x #BUIi  
A{y3yH`#h  
Function avIMG() As Integer s3/->1#i  
  Dim i As Long, j As Long, totalIMG As Long Ny\iRU)fN  
  MoveMemory pBuffer(1), pFRAME(1, 1), pFrameSize )&se/x+  
  For i = 1 To pFrameSize UyD=x(li  
    totalIMG = totalIMG + pBuffer(i) 57v[b-SK  
  Next i uC 5mxZ  
  avIMG = totalIMG / pFrameSize b;9v.MZ4>g  
End Function ogip#$A}3  
C.%iQx`   
Function avRegion(barCol As Integer, barWidth As Integer) As Integer .<rL2`C[c  
  Dim i As Long, j As Long, totalIMG As Long @UkcvhH  
  For i = 1 To FrameH tojJQ6;J  
     MoveMemory pBuffer((i - 1) * barWidth + 1), pFRAME(barCol, i), barWidth scJ`oc: <J  
  Next i PPPRO.y  
  For i = 1 To FrameH * barWidth >F Z6\  
    totalIMG = totalIMG + pBuffer(i) L4 x  
  Next i AG/nX?u7)t  
  avRegion = totalIMG / pFrameSize 5 (2g*I  
End Function ]rZ"5y  
杺栫杣杊椌柮栬,䒴蓉艿芖。
伍胥之 离线
级别: 军区司令员

显示用户信息 
91楼  发表于: 2015-09-06   
'VB 6.0 版 a!Z,~ V8  
'这不是我写的,它更强悍了。因为可以直接读写物理扇区(CHS),而不是逻辑扇区。 $T1 D ?X  
,UH`l./3DX  
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long XH1so1h  
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long ib/&8)Y+J  
Private Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, ByVal lpOverlapped As Long) As Long '//declare has changed \1aj !)  
Private Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, ByVal lpOverlapped As Long) As Long '//declare has changed <4rF3 aB-  
Private Declare Function SetFilePointer Lib "kernel32" (ByVal hFile As Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long ,Y &Q,  
'如果用绝对扇区写,那么文件的建立打开都不能用VB的 open 语句了。 E88_15'3D  
3M+hjc.  
1 (P >TH  
Private Const GENERIC_READ = &H80000000 {LR?#.   
Private Const GENERIC_WRITE = &H40000000 rM=Q.By+\  
XHlPjw  
Private Const FILE_SHARE_READ = &H1 NZi5rX N  
Private Const FILE_SHARE_WRITE = &H2 H Tf7r-  
Private Const OPEN_EXISTING = 3 ]1abz:  
4LUFG  
Private Const INVALID_HANDLE_VALUE = -1 m-*du(  
0-l @U{  
'//file seek +]`MdOu  
Private Const FILE_BEGIN = 0 \hv*`ukF  
Private Const FILE_CURRENT = 1 6H.D `"cj  
Private Const FILE_END = 2 9.#\GI ;  
Z;7f D  
Private Const ERROR_SUCCESS = 0& Lo7R^>  
D GOc!  
'//device io control `"A\8)6-  
Private Declare Function DeviceIoControl Lib "kernel32" (ByVal hDevice As Long, ByVal dwIoControlCode As Long, lpInBuffer As Any, ByVal nInBufferSize As Long, lpOutBuffer As Any, ByVal nOutBufferSize As Long, lpBytesReturned As Long, ByVal lpOverlapped As Long) As Long sBZKf8@/  
'#u |RsZ  
Private Const IOCTL_DISK_GET_DRIVE_GEOMETRY As Long = &H70000   '458752 x4.-7%VV%  
Private Const IOCTL_STORAGE_GET_MEDIA_TYPES_EX  As Long = &H2D0C04 Zo-s_6uC  
Private Const IOCTL_DISK_FORMAT_TRACKS As Long = &H7C018 y9Yh%M(  
Private Const FSCTL_LOCK_VOLUME As Long = &H90018 /_ o1b_1 U  
Private Const FSCTL_UNLOCK_VOLUME As Long = &H9001C vRRi"bo  
Private Const FSCTL_DISMOUNT_VOLUME As Long = &H90020 ~WR6rc  
Private Const FSCTL_GET_VOLUME_BITMAP = &H9006F  6>Lr  
x8b w#  
'//type 9t7_7{Q+;  
Private Type LARGE_INTEGER q,0o:nI  
    lowpart As Long VSmshld  
    highpart As Long mBQ6qmK   
End Type /_26D0}UuF  
1wE~dpnx  
Private Enum MEDIA_TYPE )q&uvfQ1(  
    Unknown Y]B2-wt-  
    F5_1Pt2_512 uH65DI<  
    F3_1Pt44_512 Ct$e`H!;  
    F3_2Pt88_512 ,)S|%tDW  
    F3_20Pt8_512 rguC#Xt!4  
    F3_720_512 &qMSJ  
    F5_360_512 Hd2Sou4-j  
    F5_320_512 S-.!BQ@RMZ  
    F5_320_1024 WH/r$.&  
    F5_180_512 _2}i8q:  
    F5_160_512 @"'1"$  
    RemovableMedia }"Hf/{E$_"  
    FixedMedia kTc'k  
End Enum 1 /7H` O?  
/G G QO$'  
Private Type DISK_GEOMETRY E"pq ZP =  
    Cylinders           As LARGE_INTEGER ;gK+AU  
    MediaType           As MEDIA_TYPE `Qaw]&O  
    TracksPerCylinder   As Long l4L&hY^  
    SectorsPerTrack     As Long c5R58#XK=  
    BytesPerSector      As Long l_>^LFOA  
End Type vxk1RL*Xu  
KosAc'/ M  
'//private vars 5s;HF |2x  
Private hDisk           As Long             'disk handle 3MNo&0M9  
Private lpGeometry      As DISK_GEOMETRY    'disk info Co[  rhs  
Private lBufferSize     As Long             'the buffer size of read/write 3~a!h3.f  
 Tx`;y|  
Public Function OpenDisk(ByVal FileName As String) As Boolean gqyQ Zew  
'// 打开磁盘 /NMd GKr  
    hDisk = CreateFile(FileName, _ 9_5Fl,u z  
                        GENERIC_READ Or GENERIC_WRITE, _ 0)yvyQ5  
                        FILE_SHARE_READ Or FILE_SHARE_WRITE, _ i7mT<w>?  
                        ByVal 0&, _ P]j{JL/g&  
                        OPEN_EXISTING, _ q`"gT;3S  
                        0, _ $@}6P,mg  
                        0) x_2 [+Ol  
    OpenDisk = Not (hDisk = INVALID_HANDLE_VALUE) `[VoW2CLH+  
End Function )z2Tm4>iql  
g[q1P:I@W  
Public Function CloseDisk() As Boolean 1ncY"S/VO  
'//关闭磁盘 D0lgKQ  
    CloseDisk = CloseHandle(hDisk) gSL$silc  
End Function xo7H^!_   
L*D-RYW  
Public Function GetDiskGeometry() As Boolean qyp"q{k0  
'//获取磁盘参数 )/Ee#)z*  
    Dim dwOutBytes      As Long C;G~_if4PR  
    Dim bResult         As Boolean >9uDY+70I3  
     0Evmq3,9  
    bResult = DeviceIoControl(hDisk, _ efl6U/'Ij  
                                IOCTL_DISK_GET_DRIVE_GEOMETRY, _ R l^ENrv!]  
                                ByVal 0&, 0, _ y9pQ1H<F;  
                                lpGeometry, Len(lpGeometry), _ o*'J8El\y^  
                                dwOutBytes, _ v&xk?F?WU,  
                                ByVal 0&) k8 ,.~HkU  
     a}hpcr({?  
    If bResult Then lBufferSize = lpGeometry.BytesPerSector * lpGeometry.SectorsPerTrack z<sf}6q  
    GetDiskGeometry = bResult \_De( p  
End Function 2/E3~X7  
aOyAP-m,  
Public Sub GetDiskInfo(MediaType As Long, _ 6EGh8H f  
                        Cylinders As Long, _ @Zjy"u  
                        TracksPerCylinder As Long, _ Z[ZqQ` 7N  
                        SectorsPerTrack As Long, _ daGGgSbh  
                        BytesPerSector As Long) b H?dyS6Bx  
'//返回磁盘的参数 `GqS.O}C  
    MediaType = lpGeometry.MediaType kNd[M =%  
    Cylinders = lpGeometry.Cylinders.lowpart '7u#uL,pa1  
    TracksPerCylinder = lpGeometry.TracksPerCylinder ,Hch->?Og  
    SectorsPerTrack = lpGeometry.SectorsPerTrack P7 H-Dw  
    BytesPerSector = lpGeometry.BytesPerSector F?T3fINR  
aVM@^n  
End Sub b@/z^ k{%  
)+u|qT3%  
Public Property Get BufferSize() As Long ,* @m<{DX)  
'//返回每次读/写的缓冲大小 ]Tx8ImD#)A  
    BufferSize = lBufferSize RUlM""@b  
End Property HZkC3$  
mxGa\{D# y  
=5[}&W  
Public Function LockVolume() As Boolean _F;(#D  
'// 将卷锁定 bo0m/hVU  
    Dim dwOutBytes  As Long kQsyvE  
    Dim bResult     As Boolean x\*`i)su  
     ) e;)9~  
    bResult = DeviceIoControl(hDisk, _ L XJ" ct  
                                FSCTL_LOCK_VOLUME, _ g$EjIHb  
                                ByVal 0&, 0, _ ^ :6v- Yx  
                                ByVal 0&, 0, _ CJ {?9z@$.  
                                dwOutBytes, _ CsQ}eW8uEf  
                                ByVal 0&) N6Vn/7I5%  
    LockVolume = bResult 6AUXYbK,  
End Function eH(8T  
(C!u3ke2D  
iVFHr<zk  
Public Function UnlockVolume() As Boolean .NiPaUzc<  
'// 将卷解锁  Ae <v  
    Dim dwOutBytes As Long ,*bI0mFZ  
    Dim bResult As Boolean (`<l" @:_*  
     n/=&?#m}d  
    bResult = DeviceIoControl(hDisk, _ [NQ`S ~_:  
                                FSCTL_UNLOCK_VOLUME, _ 6} K|eUak/  
                                ByVal 0&, 0, _ *G.6\  
                                ByVal 0&, 0, _ _^0yE_ili  
                                dwOutBytes, _ cCw?%qq,L  
                                ByVal 0&) m!$"-nh9  
    UnlockVolume = bResult Q/1 6D  
End Function s@jzu  
c03A_2%  
OzA"i y  
Public Function DismountVolume() As Boolean [8^j wnAYS  
'// 将卷卸下,使系统重新辨识磁盘,等效于重新插盘 .%M=dL>  
    Dim dwOutBytes As Long V`l.F"<L  
    Dim bResult As Boolean X%h1r`h&  
     *h-_   
    bResult = DeviceIoControl(hDisk, _ &b iBm  
                                FSCTL_DISMOUNT_VOLUME, _ u;F++$=  
                                ByVal 0&, 0, _ n^UrHHO L  
                                ByVal 0&, 0, _ q/6d^&  
                                dwOutBytes, _ N|h`}*:x=  
                                ByVal 0&) /H:'(W_b;  
    DismountVolume = bResult 0>)(' Kv  
End Function Y6?d y\  
ALiA+k N  
1YTnOiYS1  
Public Function ReadDisk(ByVal Cylinders As Long, _ 6HCP1`gg   
                    ByVal Tracks As Long, _ (9*=d_=  
                    db() As Byte) As Boolean y4/>3tz;  
'//按柱面和磁道来读取磁盘数据 "qu%$L  
    Dim iPos    As Long xD8x1-  
    Dim lRead   As Long )^|zuYzN  
     V+nqQ~pJ&  
    iPos = Cylinders * Tracks * lBufferSize dp&4G6Y<A  
     0"ZB|^c=  
    If SeekAbsolute(0, iPos) Then I o|NL6[  
        ReadDisk = ReadBytes(lBufferSize, db(), lRead) .o]vj Nrd/  
    End If G!ty@ Fx  
End Function `-hFk88  
Om\?<aul  
Public Function WriteDisk(ByVal Cylinders As Long, _ \(cu<{=rU  
                     ByVal Tracks As Long, _ DCACj-f  
                     db() As Byte) As Boolean "e&S*8QhM  
'//按柱面和磁道来写磁盘数据 ME>OTs  
    Dim iPos    As Long c}U&!R2p{  
    Dim lRead   As Long z%}^9  
     OU]!2[7c  
    iPos = Cylinders * Tracks * lBufferSize 51*o&:eim  
     w3:Y]F.ot  
    If SeekAbsolute(0, iPos) Then #6 e  
        WriteDisk = WriteBytes(lBufferSize, db()) vh"zYl`  
    End If Ja4O*C<  
End Function Gm}ecW  
=4RnXZ[P0  
j I_TN5  
'///////////////////////////////////////////////////////////////////////////////////// %i]q} M  
'//file system $"!"=v%B  
_Su? VxU  
Private Function SeekAbsolute(ByVal HighPos As Long, ByVal LowPos As Long) As Boolean %t([  
'//seek file W=M]1hy  
    '//Notice: when you set LowPos=5, the read/write will begin with the 6th(LowPos+1) byte pa~ .[cBI  
    LowPos = SetFilePointer(hDisk, LowPos, HighPos, FILE_BEGIN) pfe9 n[  
    If LowPos = -1 Then )|x ) KY  
        SeekAbsolute = (Err.LastDllError = ERROR_SUCCESS) $-|`#|CBd  
    Else _ncqd,&z  
        SeekAbsolute = True Zoh2m`6  
    End If yxf|Njo0  
     t9Ht 5 4  
End Function RnE=T/VZJ  
J)6RXt*!  
d(jd{L4d  
Private Function ReadBytes(ByVal ByteCount As Long, ByRef DataBytes() As Byte, ByRef ActuallyReadByte As Long) As Boolean D^E1  
'//read data to array Eyxw.,rB/  
    Dim RetVal    As Long ZL:nohB  
    RetVal = ReadFile(hDisk, DataBytes(0), ByteCount, ActuallyReadByte, 0) pUZbZ U  
    'ActuallyReadByte =>> if the bytesRead=0 mean EOF a-MDZT<xA+  
    ReadBytes = Not (RetVal = 0) )|~pocXt<  
     O'Lgb 9  
End Function razVO]]E  
SaH0YxnY+  
Private Function WriteBytes(ByVal ByteCount As Long, ByRef DataBytes() As Byte) As Boolean wcspqC"_  
'//write data from array iN %kF'&9  
    Dim RetVal As Long w`bojM@e1  
    Dim BytesToWrite As Long p o}Jwx!  
    Dim BytesWritten As Long )V*Z|,#no  
     21O!CvX   
    RetVal = WriteFile(hDisk, DataBytes(0), ByteCount, BytesWritten, 0) fLa 7d?4  
     frWw-<HoI  
    WriteBytes = Not (RetVal = 0) ;[R{oW Nw  
End Function <T>C}DGw  
杺栫杣杊椌柮栬,䒴蓉艿芖。
伍胥之 离线
级别: 军区司令员

显示用户信息 
90楼  发表于: 2015-09-05   
//从指定扇区号dwSector开始,写dwLength长度的数据 V:4]]z L}  
BOOL WriteDisk( HANDLE hpartition, DWORD dwSector, DWORD dwLength, char* lpBuffer){ %G1kkcdH<  
DWORD dwCB; N?eWf +C  
LARGE_INTEGER  offset; xL3-(K6e  
offset.QuadPart  =  UInt32x32To64(dwSector ,  512); ^G.PdX$M  
SetFilePointer(hpartition,  offset.LowPart,  &offset.HighPart,  FILE_BEGIN); T\eOrWt/  
if(!WriteFile(hpartition, lpBuffer, dwLength * 512, &dwCB, NULL)){ r?{tu82#i  
DWORD error = GetLastError(); P3jDx{F  
MessageBox(NULL,"写入文件失败!",NULL,IDOK); +/'3=!oyd  
return FALSE; X-|Lg.s  
} h.gj4/g  
return TRUE; 6J9^:gXW~  
} h$)+$^YI  
杺栫杣杊椌柮栬,䒴蓉艿芖。
伍胥之 离线
级别: 军区司令员

显示用户信息 
89楼  发表于: 2015-09-05   
引用
引用第46楼清水于03-03-2011 14:50发表的  : #!(OTe L  
\yP\@ cpY{  
介个真的看不懂。 ,) ^4H>~V  
你说你老啦,喜欢怀旧了,才想起来填坑。 4jMC E&<  
提醒我也想想,是不是也老啦,是不是也有坑没填呢。 Q^}6GS$  
f-6-!  
CBz$N)f  
你肯定有许多坑没有填,但是我挖的坑更多,但同是我也在你的某个坑里等你填埋呢!
杺栫杣杊椌柮栬,䒴蓉艿芖。
伍胥之 离线
级别: 军区司令员

显示用户信息 
88楼  发表于: 2015-09-05   
Re:回 38楼(伍胥之) 的帖子
引用
引用第39楼suehan234于01-22-2011 08:00发表的 回 38楼(伍胥之) 的帖子 : VA{2a7]  
佩服,玩也玩得这么专业! cYHHCaCS  
zQvp<IUq  
do0;"O0 (  
只是票友而已,算不上专业的。
杺栫杣杊椌柮栬,䒴蓉艿芖。
伍胥之 离线
级别: 军区司令员

显示用户信息 
87楼  发表于: 2015-09-05   
引用
引用第25楼猪小秘于01-20-2011 20:51发表的  : Qry?h*p+`  
伍SIR,再次抱拳佩服 9[# 9c v  
3@xn<eu  
*2wFLh  
小秘倒是好久不见了呢!宝贝几岁了?很健康活泼吧?
杺栫杣杊椌柮栬,䒴蓉艿芖。
伍胥之 离线
级别: 军区司令员

显示用户信息 
86楼  发表于: 2015-09-05   
引用
引用第21楼阿散于06-14-2010 22:33发表的  : =Yd{PZ*fR  
引用第19楼伍胥之于06-14-2010 12:33发表的  : mR JX,  
;fg8,(SM^  
GJ1ap^k  
我平生唯一参加的计算机考试就是职称考试,任选4个模块。 u/W  
Ns3k(j16  
我连一级也没有考过。 rK^Sn7U  
.
0xv@l^B  
II=(>G9v  
引用
V)HX+D>  
矬子里拔将军... i{1SUx+Re  
你们那里的俗语是吧? %qN_<W&Ze  
HP`dfo ~j  
我们这里说"矮子里拔长脚"..应该是同一个意思... j A/xe  
d5aG6/  
有趣....各地有表达意思一样却方式不同的俗语.... oaxCcB=\  
qyA%_;ReMY  
^Bkwbj  
你的文章写的有脸皮,没屁眼的, 0M[O(.x  
让看客大为不满... 6;|6@j  
tXZE@JyuC  
你等着,,估计你以后接到的午夜凶铃就多了... RZKdh }B?\  
;S,k U{F  
uU+R,P0  
我到现在也没有接到你的午夜凶铃呢! (7v]bqfw  
杺栫杣杊椌柮栬,䒴蓉艿芖。
伍胥之 离线
级别: 军区司令员

显示用户信息 
85楼  发表于: 2015-09-05   
引用
引用第17楼阿散于06-13-2010 22:29发表的  : '{e9Vh<x  
每个人的故事对其他人都是故事, pb>TUKvT&  
自己的故事也是其中之一. ^T^l3B[  
跳出来看, &Nzq/~uqP  
不过是众人中的一个人的故事. `>.^/SGu>?  
ihv=y\Jt  
所以,接着听故事. "4`i]vy8  
zk#NM"C+  
女人们有兴趣的就等老伍开个新帖或者跟贴, 4V2}'/|[  
听他痛说恋爱革命历史.... O/Q7{ 5n  
k PuY[~i%  
杂家接着听他自学程序员历史, k/U1 :9  
高级程序员考了吗? YU*u!  
R&lJ& SgC  
i. O670D  
这个恋爱革命史还是等你痛改前非换个新ID来讲吧! {=Z xF  
}8joltf  
我什么程度员也没有考过,连大学生的计算机应用等级证明都没有。 2hD(zUSy  
 j<BW/  
我唯一考过的计算机科目是职称评审时要求有证书,所以我用了半小时考了word, powerpoint,和internet基础。都是小儿科的东东。如果没有用VBA写个Word的宏,我都觉得对不起微软了。 ](^$5Am  
杺栫杣杊椌柮栬,䒴蓉艿芖。
伍胥之 离线
级别: 军区司令员

显示用户信息 
84楼  发表于: 2015-09-05   
引用
引用第16楼阿平于06-13-2010 22:25发表的  : C/JFb zVx  
哦, 打倒忽悠大家的家伙.      o-}q|tD$<  
*"HA=-Z;  
r8wip\[  
阿平姐,这可不是忽悠,我可是认真交待经历呢!
杺栫杣杊椌柮栬,䒴蓉艿芖。
伍胥之 离线
级别: 军区司令员

显示用户信息 
83楼  发表于: 2015-09-05   
引用
引用第10楼卡拉于06-13-2010 21:49发表的  : o_#F,gze)S  
老伍,对不住,我把你原来的英文标题改了,太不吸引人眼球了,有些人还当是英文的都不会去点击。我通篇读了一下,改成了现在的标题。如果你不喜欢,可以改回来。 >39\u &)  
Ij_h #f   
c`M ,KXott  
其实标题没有什么,卡总既然改了就不必再改回了。 xE"QX N  
* ak"}s  
主要是当初写的时候真是顶着锅盖写的。 .~C[D T+,  
xC5`|JW  
阿散说得对。我就是把一堆鸡毛蒜皮的小事,用了一个big title.
杺栫杣杊椌柮栬,䒴蓉艿芖。
伍胥之 离线
级别: 军区司令员

显示用户信息 
82楼  发表于: 2015-09-05   
引用
引用第6楼沧桑于06-13-2010 14:39发表的  : (q+EP(Q  
老伍在写交代材料啊,而且写在一个ZT的贴下,哈哈。 `/+PZqdC  
g-O}e4  
'"4S3Fysm  
这不是怕您见笑嘛!现在露馅了,只得继续招供了。 %{j)w{ L J  
qCUn. mI  
可以从宽不?
杺栫杣杊椌柮栬,䒴蓉艿芖。
描述
快速回复

验证问题:
3 * 6 = ? 正确答案:18
按"Ctrl+Enter"直接提交