无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 9779|回复: 22
打印 上一主题 下一主题

[PE制作心得之一]PEBuilder插件语法详解

[复制链接]
跳转到指定楼层
1#
发表于 2007-8-26 11:33:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  本人将学习制作PE插件过程对PE插件语法星星点点的理解连缀起来,集成一篇,希望能对学习制作PE的朋友有所帮助。

____________________________________________________________________________

  本篇目录

  一、文件头
    (一)注释段
    (二)版本段
    (三)PEBuilder段
  二、文件复制
    (一)目标文件夹ID
    (二)复制文件到目标文件夹
    (三)复制整个文件夹到目标文件夹
  三、注册表操作
    (一)添加注册表键值
    (二)删除注册表键值
  四、其它文件操作
    (一)添加行
    (二)删除行
    (三)修改行
    (四)追加文件
  五、变量
    (一)自定义变量
    (二)系统变量
  六、附录
    附录一 完整的目标文件夹ID的列表
    附录二 PE制作相关网址
____________________________________________________________________________

  一、文件头

  定义PE插件的特征和状态,以便PEBuilder程序识别使用。分:注释段、版本段和PEBuilder段等三段。

  (一)注释段

  ; PE Builder v3 plug-in INF file
  ; Created by Bart Lagerweij
  ; http://www.nu2.nu/pebuilder/
  ;
  ; Short description of what the plugin does...

  这一段以分号起始,为插件注释,第一行为插件名,第二行为制作者,第三行为网站,最后一行为插件的简短描述。

  在PEBuilder插件中以分号起始的行为注释行,只起到注解的作用,PEBuilder运行时不会理会这些行。

  (二)版本段

  [Version]
  Signature= "$Windows NT$"

  这两行信息必须添加到新建文件中,否则inf文件就不可用

  (三)PEBuilder段

  [PEBuilder]
  Name=";Plugin_Name"
  Enable=1
  Help=";Plugin_Help.htm"
  C" src="images/smilies/titter.gif" border=0 smilieid="9">rogramfile"

  每个PEBuilder插件的inf文件都必须包含这一部分,此部分可以说是PE插件的标识,有4个参数:

  Name是插件名称,即在PE Builder中显示的名称。

  Enable是插件的默认初始状态,0表示插件在PE Builder中非激活,1则表示插件在PE Builder中默认激活。

  Help是这个插件的帮助文件,这个可以省略。

  Config是定义配置插件的程序文件,除非必要,一般省略。

  实例1:

  ; PE Builder v3 plug-in INF file  
  ; wb5.inf WindowBlinds v5.xx plugin v1.2.0.4
  ;
  ; Created by Gez
  ; Web: http://www.llanelly.com

  [Version]
  Signature= "$Windows NT$"

  [PEBuilder]
  Name="200 WindowBlinds 5.xx  [Press 'Config' to setup plugin]"
  Enable=0
  Config=windowblinds5.exe

  [SourceDisksFiles]
  "please press 'Config' to setup your plugin"=a,,1

  由于使用Config的比较少见,所以举了一个完整的例子,这个例子是911CD论坛上Gez制作的WindowBlinds 5.xx插件,引用时删除了关于版本历史的注释。使用这个插件时,首先要将插件放入PE Builder插件目录,然后运行该插件的配置程序windowblinds5.exe,生成最终使用的插件。

  实例2:
  ; wps2005.inf
  ; PE Builder v3 plug-in INF file for WPS Office 2005 Professional
  ; Created by liuhj

  [Version]
  Signature= "$Windows NT$"

  [PEBuilder]
  Name="WPS Office 2005 Professional"
  Enable=1

  这是以前我写的WPS Office 2005 Professional插件的文件头,此插件的[PEBuilder]段省略了Help、Config。

____________________________________________________________________________

  二、文件复制

  从安装源(WinXP或Win2003安装盘或文件夹)、各插件目录复制文件到输出目录的目标文件夹。

  (一)目标文件夹ID

  1. 自定义目标文件夹ID

  [WinntDirectories]

  此部分使用固定语句格式:

  directoryID=dirname[,attribute]

  其中:
  directoryID是要建立的目录ID,可以用字母a到z表示。

  dirname是要建立的目录名称,如果目录名称中含有空格,需要在前后使用双引号。

  attribute一般可以用这么几个值 (1,2,3):
  1 - 表示在i386\下建立目录,而无论该目录是否为空;
  2 - 表示在光盘根目录下建立目录,但如果该目录是空的话,则不会建立;
  3 - 表示在光盘根目录下建立目录,而无论目录是否为空;

  如果没有使用上面这3个值的话,默认的值是0,表示在i386\下建立目录,但如果该目录是空的话,则不会建立。

  实例:
  [WinntDirectories]
  ; 从光盘根目录创建“Bart”文件夹
  a="Bart",3
  ; 从光盘根目录创建“Project\Bart\Source”文件夹
  b="Project\Bart\Source",3
  ; 从I386目录创建“extra\files”文件夹
  c="extra\files",1

  对于一个插件来说,这一部分不是必须有的,这是因为系统内置了一些常用目标文件夹ID,当你制作的插件不需要拷贝文件,或者只向常用目录文件夹拷贝文件时,可以不使用[WinntDirectories]。

  2. 系统内置的目标文件夹ID

  PE Builder系统中内置一部分数字格式的DirectoryID表示常用的文件夹。如:

        [DirectoriesID] = 文件夹
        3000 = [root]  ;注:输出根目录
        1 = i386
        2 = i386\system32
        3 = i386\system32\config
        4 = i386\system32\drivers
        5 = i386\system
        17 = i386\system32\drivers\etc
        20 = i386\inf
        21 = i386\Help
        22 = i386\Fonts
        24 = i386\msagent\intl
        52 = i386\msagent
        124 = i386\WinSxS
        125 = i386\WinSxS\Manifests
        252 = i386\WinSxS\Policies

  这些目标文件ID比较常用,PE Builder帮助文档中也提到这些目标文件夹ID,比较完整的目标文件夹ID参见附录。

  实例:
  [SourceDisksFiles]
  ;从安装源复制文件至输出目录下I386目录
  system.ini=1
  win.ini=1
  ;从安装源复制文件至输出目录下i386\system32目录
  ftp.exe=2
  ;从插件根目录下files文件夹复制文件至输出目录下i386\system32目录
  files\bartpe.exe=2,,1
  files\nv4_disp.dll=2,,1
  ;从插件根目录下files文件夹复制文件至输出目录下i386\system32\drivers目录
  files\nv4_mini.sys=4,,1
  ;从安装源复制文件至输出目录下i386\system目录
  avicap.dll=5
  avifile.dll=5
  ;从插件根目录下files文件夹复制文件至输出目录下i386\inf目录
  files\nv4_disp.inf=20,,1
  ;从插件根目录下复制文件至输出目录下i386\Help目录
  winxpe.htm=21,,1
  ;支持通配符“*”,如从插件根目录下files文件夹中的所有CMD文件复制到输出目录下i386\system32目录
  files\*.cmd=2,,1
  ;从安装源复制文件至输出目录下i386\Fonts目录
  simsun.ttc=22

  这里提到“安装源”,指制作PE的安装光盘的位置。

  (二)复制文件到目标文件夹

  [SourceDisksFiles][.Build]

  此部分的作用是复制文件,如果你添加了一个构建版本号在节之后,那么只从构建版本复制文件。

  以下是构建版本号与对应的操作系统之间的关系:
  
        Build  Version
        2600  Windows XP
        3790  Windows Server 2003  

  格式为:

  filename=directoryID[,filenameRenamed][,attribute]

  其中:

  filename表示要复制的文件名称;

  directoryID表示目标目录ID;

  filenameRenamed表示目标文件名称,如果和源文件相同的话可以省略;

  attribute可以用这么几个值 (1,2,4,8),默认值是1。

  关于attribute的几个值:
  1--表示使用pluginCheck(),检查该文件是否存在;
  2——表示不要解压文件;
  4--表示不检查该文件是否存在;
  8——表示重命名文件到大写。

  attribute一般取值为1或4,较少使用2和8。另外从安装源复制文件一般可以省略attribute,除非指定不检查该文件是否存在或者复制文件时重命名文件。

  例如:
  [SourceDisksFiles]
  ;将插件根目录下wbjj文件夹中的复制到输出目录下I386\System32中,并检查文件是否存在
  wbjj\wbjju.ime=2,,1
  wbjj\wbcodeu.dll=2,,1
  ;从安装源复制文件至输出目录下I386\System32目录,省略attribute
  winabc.cwd=2
  winabc.ime=2
  winabc.ovl=2
  winabc.cnt=2
  winabc.hlp=2
  ;不检查文件是否存在
  jschs.dll=2,,4
  ;不检查文件是否存在,并且如果存在将文件mfc40chs.dll重新命名为mfc40loc.dll
  mfc40chs.dll=2,mfc40loc.dll,4


  (三)复制整个文件夹到目标文件夹

  [SourceDisksFolders]

  此部分的作用是复制整个文件夹,格式是:

  sourcepath=directoryID

  其中:
  sourcepath表示源文件夹的路径;
  directoryID表示目标目录ID。

  实例:
  [WinntDirectories]
  a="Programs\openoffice",2
  
  [SourceDisksFolders]
  ; 当 openoffice 文件夹在插件目录时,使用相对路径
  openoffice=a
  [SourceDisksFolders]
  ; 当 openoffice 文件夹在 c:\ 根目录时,使用绝对路径
  c:\openoffice=a

  此例中,将插件目录中或C:\根目录下的OPENOFFICE文件夹下的所有文件(包括子文件夹)全部复制至输出目录下Programs\OPENOFFICE文件夹中。这种方法不用例举文件夹中每个文件,省时省力,是一种非常高效的方法,我特别喜欢用。

____________________________________________________________________________

  三、注册表操作

  注册表操作有两项:添加注册表键值和删除注册表键值。

  (一)添加注册表键值

  [Default.AddReg][.build]   -对应HKCR\.DEFAULT---default
  [Software.AddReg][.build] -对应HKLM\SOFTWARE---software
  [SetupReg.AddReg][.build]   -对应HKLM\SYSTEM---setupreg.hiv

  这3项的作用是添加相应的注册表内容,格式都是:

  regType, regKey, regvalue, regData

  其中regType的值及其含义如下:
  
        类型   含义
        0x0  REG_NONE
        0x1  REG_SZ
        0x2  REG_EXPAND_SZ
        0x3  REG_BINARY
        0x4  REG_DWORD
        0x7  REG_MULTI_SZ  

  实例:
  [Software.AddReg]
  0x0, "Microsoft\Windows NT\CurrentVersion\Fonts"
  0x1, "Microsoft\Windows NT\CurrentVersion\Fonts", "Tahoma (TrueType)","TAHOMA.TTF"
  0x2, "Control Panel\desktop", "WallPaper", "%systemroot%\system32\nu2.bmp"
  0x3, "ControlSet001\Control\TimeZoneInformation", "DaylightStart",\
          00,00,04,00,00,01,00,02,00,00,00,00,00,00,00,00
  0x4, "ControlSet001\Control\GraphicsDrivers\DCI", "Timeout", 0x7
  0x7, "ControlSet001\Services\VgaSave\Device0", "InstalledDisplayDrivers","vga", "framebuf", "vga256", "vga64k"

  添加注册表键值是制作PE插件过程中使用最多、操作最繁琐的工作,好在PE制作高手们早就制作了将注册表文件转换为PE插件INF文件的工具,比较好的有:Reg2PE、ConvRegToInf。

  (二)删除注册表键值

  [Software.DelReg][.build]、[Default.DelReg][.build]和[SetupReg.DelReg][.build]

  这两项是删除相关的注册表键值。格式是:

  regKey[.regvalue]

  实例:
  [SetupReg.DelReg.2600]
  "ControlSet001\Services\vds"

  [SetupReg.DelReg]
  "ControlSet001\Services\Messenger"

  说实话,使用上面的方法删除注册表键值我还没有成功过,并不是语句有什么问题,上面例子中第一个是XPE插件中的语句,也一样没有删除vds服务。对于需要删除的注册表键值,我是在制作后期处理的时候,使用批处理删除:

  1. 使用REG LOAD命令加载PE注册表配置单元。

  2. 使用REG DELETE命令删除PE注册表键值,或者使用REG IMPORT导入注册表文件。

  3. 使用REG UNLOAD命令卸载PE注册表配置单元。

  当然除了使用批处理之外,也可以使用注册表编辑器加载配置单元、卸载配置单元来处理。

____________________________________________________________________________

  四、其它文件操作

  主要操作PEBuilder从安装源拷贝至输出目录的INF文件和txtSetup.sif文件,以及NU2MENU作Shell时的开始菜单配置文件NU2MENU.XML。

  操作方法有:添加行、删除行、修改行和追加文件等四种。

  (一)添加行

  [AddLine][.build]

  这一项的作用是在指定的windows系统的inf文件中添加内容。格式是:

  Filename,Section,StringToAdd

  实例:
  [AddLine.2600]
  "netmscli.inf", "MSClient.DelReg", "HKLM, Software\Microsoft\Rpc\SecurityService, 9"

  (二)删除行

  [DelLine][.build]

  这一项的作用是在指定的windows系统的inf文件中删除内容。格式是:

  Filename,Section,StringToDel,MaintainServerList

  实例:
  [DelLine.3790]
  "netmscli.inf", "MSClient.Browser.AddReg", "HKR, Parameters, MaintainServerList,"

  (三)修改行

  [Setvalue][.build]

  这一项的作用是改变指定的windows系统中的inf文件的某一项内容。格式是:

  Filename,Section,Key,value

  实例:
  [SetValue.2600]
  "netmscli.inf", "Alerter_Service_Inst", "StartType", "3"

  使用 Filename,Sectiion,Key删除一个键值
  使用 Filename,Section删除一个完整节

  (四)追加文件

  Append[.build]

  这一项的作用是向一个文件追加文件。格式是:

  Filename,FilenameToAppend

  实例:
  [Append]
  nu2menu.xml, ultravnc_nu2menu.xml

  从实例可以看出,这一项主要是操作Nu2Menu的配置文件Nu2Menu.xml的。现在大多制作XPE,上面实例中的语句没有用处,而且报错,应该注释掉它,如下面:

  [Append]
  ; nu2menu.xml, ultravnc_nu2menu.xml
____________________________________________________________________________

  五、变量

  PEBuilder支持自定义变量和系统变量两种变量,合理使用变量会使PE插件更加便于维护。

  (一)自定义变量

  [Strings]
  定义INF文件中的字符串变量,然后依以下格式引用:%变量名%。

  实例:
  [Strings]
  RamDiskDriveLetter="B:"
  [SetupReg.AddReg]
  0x2, "ControlSet001\Control\Session Manager\Environment", "temp", "%RamDiskDriveLetter%"
  0x2, "ControlSet001\Control\Session Manager\Environment", "tmp", "%RamDiskDriveLetter%"

  在Strings段中定义字符串变量RamDiskDriveLetter为B:,然后以%RamdiskdriveLetter%引用。
  
  (二)系统变量

  PE Builder内置的系统变量:
  
        Program——制作程序名,默认为PE-Builder
Version制作程序版本
        IsoFile——ISO镜像的完整路径和文件名
        OutDir——输出文件夹的完整路径
        SourcePath——源文件夹的完整路径
        PluginDir——当前插件文件夹的完整路径
        PluginFile——当前插件文件的完整路径和文件名
        Language——当前语言
        Verbose——Verbose 模式 (0 means off, 1 means on)
        Build——Windows构建版本 (2600 表示 XP, 3790 表示 server 2003)  

  系统变量引用方法为:@变量名@

  注意系统变量的引用方法与自定义变量的引用方法不同。

  实例:
  [SourceDisksFiles]
  program.exe=2,,3
  lang\@language@.lng=2,,3
  @SourcePath@I386\input.inf=20

  还有一种特殊的变量引用:
  [SourceDisksFiles]
  %11%\emptyregdb.dat=2,,4

  %11%表示本地硬盘系统的%SystemRoot%\System32目录。XPE 1.05及其以后版本的XPE.INF文件中有此语句,而且运行完全正确。

  大家知道在微软安装配置文件(INF文件)中%11%表示本地硬盘系统的%SystemRoot%\System32目录,PEBuilder的插件(INF文件)与微软安装配置文件(INF文件)有些类似,不知微软安装配置文件(INF文件)中的其它变量也可以这样引用?

____________________________________________________________________________

  六、附录

  附录一 完整的目标文件夹ID的列表:

        [DirectoriesID] = 文件夹
        3000 = [root]  ;注:输出根目录
        1 = i386
        2 = i386\system32
        3 = i386\system32\config
        4 = i386\system32\drivers
        5 = i386\system
        7 = i386\system32\ras
        9 = i386\system32\spool
        10 = i386\system32\spool\drivers
        11 = i386\system32\spool\drivers\w32x86\3
        12 = i386\system32\spool\prtprocs
        13 = i386\system32\spool\prtprocs\w32x86
        14 = i386\system32\wins
        15 = i386\system32\dhcp
        16 = i386\repair
        17 = i386\system32\drivers\etc
        18 = i386\system32\spool\drivers\w32x86
        19 = i386\system32\drivers\disdn
        20 = i386\inf
        21 = i386\Help
        22 = i386\Fonts
        23 = i386\Config
        24 = i386\msagent\intl
        25 = i386\Cursors
        26 = i386\Media
        27 = i386\java
        28 = i386\java\classes
        29 = i386\java\trustlib
        30 = i386\system32\ShellExt
        31 = i386\Web
        32 = i386\system32\Setup
        33 = i386\Web\printers
        34 = i386\system32\spool\drivers\color
        35 = i386\system32\wbem
        36 = i386\system32\wbem\Repository
        37 = i386\addins
        38 = i386\Connection Wizard
        39 = i386\Driver Cache\i386
        40 = i386\security
        41 = i386\security\templates
        42 = i386\system32\npp
        43 = i386\system32\ias
        44 = i386\system32\dllcache
        45 = i386\Temp
        46 = i386\Web\printers\images
        47 = i386\system32\export
        48 = i386\system32\wbem\mof\good
        49 = i386\system32\wbem\mof\bad
        50 = i386\twain_32
        51 = i386\msapps\msinfo
        52 = i386\msagent
        53 = i386\msagent\chars
        54 = i386\security\logs
        55 = i386\system32\icsxml
        57 = i386\system32\mui
        58 = %MUI_PRIMARY_LANG_ID_DIR%        ;注:对于简体中文系统即指i386\system32\mui\0804
        59 = i386\system32\mui\dispspec
        60 = i386\AppPatch
        61 = i386\Debug
        62 = i386\Debug\UserMode
        63 = i386\system32\oobe
        67 = i386\Help\Tours
        68 = i386\Resources\Themes\Luna
        69 = i386\Resources\Themes\Luna\Shell\NormalColor
        70 = i386\system32\oobe\html\ispsgnup
        71 = i386\system32\oobe\html\mouse
        72 = i386\system32\oobe\html\oemcust
        73 = i386\system32\oobe\html\oemhw
        74 = i386\system32\oobe\html\oemreg
        75 = i386\system32\oobe\images
        76 = i386\system32\oobe\setup
        77 = i386\system32\oobe\sample
        78 = i386\Resources\Themes\Luna\Shell\Metallic
        79 = i386\Resources\Themes\Luna\Shell\Homestead
        91 = i386\Help\Tours\mmTour
        92 = i386\Help\Tours\htmlTour
        93 = i386\Provisioning\Schemas
        100 = i386\system32\1025
        101 = i386\system32\1028
        102 = i386\system32\1031
        103 = i386\system32\1033
        104 = i386\system32\1037
        105 = i386\system32\1041
        106 = i386\system32\1042
        107 = i386\system32\1054
        108 = i386\system32\2052
        109 = i386\system32\3076
        110 = i386\system32\wbem\xml
        111 = i386\system32\usmt
        112 = i386\system32\inetsrv
        123 = i386\mui
        124 = i386\WinSxS
        125 = i386\WinSxS\Manifests
        126 = i386\WinSxS\InstallTemp
        127 = i386\ime
        129 = i386\Resources\Themes
        130 = i386\ime
        132 = i386\ime\imejp
        133 = i386\System32\IME\PINTLGNT
        134 = i386\System32\IME\CINTLGNT
        135 = i386\System32\IME\TINTLGNT
        136 = i386\IME\CHTIME\Applets
        137 = i386\ime\imejp98
        138 = i386\ime\imejp\applets
        139 = i386\pchealth\helpctr\binaries
        180 = i386\system32\3com_dmi
        181 = i386\PeerNet
        239 = i386\system32\wbem\Logs
        240 = i386\ehome
        252 = i386\WinSxS\Policies

  这段目标文件夹ID列表是从网上找的,其中127和130均表示I386\IME,这没有错。这些ID我没有一一测试,但由于这两个ID指向一个目录,所以进行了测试,我建了127.txt、130.txt两个空文本文件,分别拷贝到127、130两个ID,结果都拷贝到了I386\IME目录中。

  实际使用中比较多的,还是使用比较常用的目标文件夹ID,再加上自定义目标文件夹ID的方法来编写插件。

  实例:
  [SourceDisksFiles]
  hhctrlui.dll=58

  此语句将从安装源复制hhctrlui.dll文件至输出目录下i386\system32\mui\0804目录。

  xpe-help.inf插件中此语句为:hhctrlui.dll=2,表示从安装源复制hhctrlui.dll文件至输出目录下i386\system32目录。

  这两者是有区别的,使用前者hhctrlui.dll=58,在生成的XPE中打开帮助,帮助菜单是中文的,而使用后者时帮助菜单是英文的。

  为什么会这样呢?原因是Sherpya的XPE插件是针对英文环境的,因此在中文环境使用XPE插件与英文环境中使用XPE插件有所不同也在情理之中。

  从这个例子看,不要迷信别人制作的插件,要自己分析,勇于实践,不断修改制作才成。

  附录二 PE制作相关网址:

  911CD论坛云集了世界各地的PE制作的精英,有使用OPK/AIK的、有使用PEBuilder的,也有使用WinBuilder的。

  911CD论坛:http://www.911cd.net/forums/

  下面列出的是与PEBuilder相关的四个主要官方网站:

  Bart PE Builder官方网站: http://www.nu2.nu/pebuilder/

  Sherpya XPE官方网站:http://winpe.sourceforge.net/

  Reatogo-X-PE官方网站:http://www.reatogo.de/

  UBCD4WIN官方网站:http://www.ubcd4win.com/

  注:Reatogo-X-PE和UBCD4Win两家PE制作工具使用OEM版的PEBuilder,各具特色,值得关注。
____________________________________________________________________________

[ 本帖最后由 liuhj 于 2007-8-27 07:49 PM 编辑 ]
2#
发表于 2007-8-26 14:14:57 | 只看该作者
不错,值得顶一下。。。
回复

使用道具 举报

M
3#
发表于 2007-8-26 18:47:44 | 只看该作者
谢谢,写的好详细,虽然看得头疼,但还是要收藏起来.
回复

使用道具 举报

4#
发表于 2007-8-26 19:25:57 | 只看该作者
最近正摆弄PEBuilder呢,谢谢楼主的心得:victory:
回复

使用道具 举报

5#
发表于 2007-12-1 12:50:06 | 只看该作者
收藏了.很有用的东西谢谢了!
回复

使用道具 举报

6#
发表于 2007-12-1 12:53:18 | 只看该作者
收藏了!!
谢谢!!
回复

使用道具 举报

7#
发表于 2007-12-1 13:49:23 | 只看该作者
值得收藏!!
谢谢楼主的心得!!
回复

使用道具 举报

8#
发表于 2007-12-1 14:57:57 | 只看该作者
值得学习!<br />

[ 本帖最后由 wfywyy 于 2007-12-1 03:13 PM 编辑 ]
回复

使用道具 举报

9#
发表于 2007-12-2 22:04:23 | 只看该作者
值得收藏,写得很详细,楼主辛苦了!
回复

使用道具 举报

10#
发表于 2007-12-3 02:37:20 | 只看该作者
收下了,楼主辛苦了。
回复

使用道具 举报

11#
发表于 2008-5-26 12:59:29 | 只看该作者
归纳得这么好,支持一下.
回复

使用道具 举报

12#
发表于 2008-5-26 21:15:55 | 只看该作者
不错,收了,感谢楼主
回复

使用道具 举报

13#
发表于 2008-5-26 21:33:45 | 只看该作者
楼主写的好详细啊,我正需要呢,谢谢哦
回复

使用道具 举报

14#
发表于 2008-5-26 23:03:17 | 只看该作者
学习了, 非常感谢, 顶一下!
回复

使用道具 举报

15#
发表于 2008-11-23 20:01:59 | 只看该作者
非常感谢,正需要呢。
回复

使用道具 举报

16#
发表于 2009-3-30 22:25:25 | 只看该作者
太好了,少走了不少弯路!谢谢楼主!
回复

使用道具 举报

17#
发表于 2009-4-9 21:56:01 | 只看该作者
好东西正需要 ,学习ING.........    感谢楼主,,顶起11111111111
回复

使用道具 举报

18#
发表于 2009-5-17 22:02:40 | 只看该作者
楼主真是辛苦,本人英语水平一般,看起来很吃力,请问一下,有没有中文的网站提供以下。谢谢。。。。。。1
回复

使用道具 举报

19#
发表于 2009-5-18 10:47:00 | 只看该作者
我不懂,但是很不错,支持!
回复

使用道具 举报

20#
发表于 2009-5-18 11:06:33 | 只看该作者
感谢楼主了,谢谢分享了,学习了。
回复

使用道具 举报

21#
发表于 2009-9-9 10:15:33 | 只看该作者
@_@看得好晕呀
不过谢谢楼主了
慢慢消化下
回复

使用道具 举报

22#
发表于 2009-10-29 13:05:52 | 只看该作者

回复 #1 liuhj 的帖子

Very good.
回复

使用道具 举报

23#
发表于 2010-1-14 10:35:40 | 只看该作者
顶,写得好,对菜鸟是一个帮助
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-6-6 07:11

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表