kn007 发表于 2009-9-11 21:55:28

有没有某个控件带点的说明?

如:$Obj.Play(),$oIE.document.body.innerHTML
.Play()和.document.body.innerHTML是怎么来的

有没哪个说明专门讲这个的

afan 发表于 2009-9-11 22:00:11

貌似可以查看下帮助里的“OBJ/COM 参考”。。。不知道是不是你要滴

kn007 发表于 2009-9-11 22:16:49

这个我知道,但
第一,这是英文的,不是很全
第二,老要跑去msdn,有点烦,我最怕msdn的英文了

afan 发表于 2009-9-11 22:21:34

我这貌似是中文的,就是太长了,不好粘贴

pusofalse 发表于 2009-9-11 22:23:41

归根究底是英文的问题,小伙的系统不是英文版的吗?还怕MSDN上的英文看不懂?

afan 发表于 2009-9-11 22:24:28

是啊,我也有此疑问,呵呵

kn007 发表于 2009-9-11 22:26:11

这是两码事啊,我从小到大玩电脑,英文中文根本无意识了,看到就知道是干什么的,但别的,特别是msdn,我一看就。。。。了

afan能提供下载不?


另外,帮助确实不全啊,比如说flash的就没有

afan 发表于 2009-9-11 22:27:18

本帖最后由 afan 于 2009-9-11 22:33 编辑

COM 扩展到 AutoIt一个简短的介绍
什么是 COM?COM 是 "Component Object Model"(对象组件模块)的缩写.是微软为应用程序相互连接使用的一种公共接口.这些接口定义为 COM 对象(Object).
在 COM 之前, 你必须知道你的程序与它的'接口'如何精确地执行衔接. 使用COM ,您现在可以“对话”界定的对象.? 唯一的事情是您必须了解这些对象(Objects)的名称("name"),和它们的属性 ('properties') 或方法( 'methods').

什么是对象(Object)的属性或方法?这是对象(Object)的两个最基本的特征. 属性('property')保存对象包含的数据. 方法('method')是对象内部函数调用数据执行某事件.
我需要在 AutoIt 脚本里面使用COM吗?视情况而定. AutoIt 有许多内建函数和一个极大的 UDF 库. 你可以使用它们做出你编程的大部分. 如果你需要特别的'接口'连接到其它程序, 使用 COM 可以帮助您节省很多脚本代码行. 编写脚本需要知道有那些 COM 对象在很大程度上取决于操作系统和已安装的软件的. 下面的这个例子已经在安装有 Microsoft Office 2000 的 Windows XP 专业版上通过测试.

在 AutoIt 使用 COM 的例子假设您想最小化所有打开的窗口. 您可以使用常规 AutoIt 函数,如 WinList 与 WinSetState. 可是 COM 的两行代码就能得到同样的效果:

$oShell = ObjCreate("shell.application")

$oShell.MinimizeAll
小提示: 此例不是最短的脚本,你可以使用 WinMinimizeAll()函数最小化所有窗口.

在第一行,我们创建了一个名叫 "shell.application" 的对象.这是 Windows 的内部对象,定义在 shell32.dll 内. 指向这个对象的值被赋值到变量 $oShell. 现在 $oShell 就是一个对象变量.

在第二行,我们使用了 oShell 调用 " MinimizeAll" 的方法.这个方法会最小化所有窗口.

所有 Windows 系统都有一个巨大的内部对象库为不同用途简化操作. 同样一些应用程序,就像 Excel 或者 Word 同样也有自己的对象库.
可是,有时要获得你系统上面所有存在的对象的属性和方法是非常困难的. 在 Microsoft.com 或者 Google.com 内搜索,可以帮助您找到一些关于您想使用的 Object 的线索.

例如, 您可以在这里找到关于 "shell.application" 对象的一些信息:
http://msdn.microsoft.com/en-us/library/bb774094.aspx

要查看当前安装在您的计算机系统上面的所有对象, "OLE/COM Object Viewer "(OLE/COM 对象查看器)是一个相当有用的工具.这个工具将会在下面分段中解释.

让我们来看一下其它例子.我们想获得某个 HTML 网页的源代码.您可以使用内置 InetGet() 函数保存网页文件,再用 FileRead() 来读取内容. 以下代码可以完成:

$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
$oHTTP.Open("GET","http://www.AutoItScript.com")
$oHTTP.Send()
$HTMLSource = $oHTTP.Responsetext

变量(字符串) $HTMLSource 现在包含了AutoItScript.com 主页完整的 HTML 源代码. (确切的说,是顶层 HTML 框架).

(关于 "winhttp.winhttprequest" 对象的相关信息你可以在这里得到:
http://msdn.microsoft.com/en-us/library/aa384106.aspx )

请注意这里:一些对象依赖于计算机的操作系统或者已经安装的程序.例如: winhttp.winhttprequest.5.1 对象只存在于安装有 Internet Explorer 5.0 及更高的操作系统.当您的共享脚本使用了 COM 对象, 请先确认对象在所有的计算机上是存在的.

对象变量的表现有点不同于其他类型的 AutoIt 变量. 一个对象不是一个真实的值, 而是指向脚本外部某事的一个'指针'. 因此你不能执行它的运算, 也不是对象变量的等式. 当你分配对象变量一个不同的值时,'指针'将会自动被释放.例如,强制删除赋值给对象的任何数字值或任何文本值.

$oHTTP = ObjCreate("winhttp.winhttprequest.5.1"); 创建对象
$oHTTP= 0                                          ; 对象被删除

当一个脚本执行完成,您不需要删除对象变量. 如果脚本退出,AutoIt 会释放由AUTOIT脚本创建的所有活动对象.当你在一个函数内定义一个局部对象变量时,也会产生相同的事件, 函数以返回结束.

使用 COM 进行自动化操作
一个非常受欢迎的 COM 应用是"自动化"程序编制,代替常规的Autoit操作函数,如:Send() 或者 WinActivate(),您可以使用被定义到程序中的对象.
这里有一个例子,来"自动化"操作 Microsoft Excel:
$oExcel = ObjCreate("Excel.Application")                   ; 创建一个Excel 对象
$oExcel.Visible = 1                                        ; 显示 Excel
$oExcel.WorkBooks.Add                                    ; 添加一个新的工作表
$oExcel.ActiveWorkBook.ActiveSheet.Cells(1,1).Value="test" ; 将 "test" 写入 1 行 1 列的表格中
sleep(4000)                                                ;等待4秒看结果
$oExcel.ActiveWorkBook.Saved = 1                           ; 模拟用户保存工作表
$oExcel.Quit                                             ; 退出 Excel

控制程序的复杂性取决于一个特有程序,而不是由 AutoIt 脚本决定. 如果某事件不能如预期的那样工作,你可能需要参考应用程序的文档资料,而不是看 AutoIt 帮助.

专用语句在 AutoIt 中,为 COM 用法设计了二个特别的语句:
WITH/ENDWITH 与 FOR/IN/NEXT 循环.

WITH..ENDWITHWITH/ENDWITH 语句并不增加功能性,但它能使你的脚本更容易阅读.例如, 上面的脚本可以写成这样:
$oExcel = ObjCreate("Excel.Application")                ; 创建一个 Excel 对象

WITH $oExcel                                                         ; 下面行都可省略 "$oExcel"
    .Visible = 1                                                             ; 显示 Excel
    .WorkBooks.Add                                                   ; 添加一个新的工作表
    .ActiveWorkBook.ActiveSheet.Cells(1,1).Value="test" ;将 "test" 写入 1 行 1 列的表格中
    sleep(4000)                                       ;等待4秒看结果
    .ActiveWorkBook.Saved = 1                           ; 模拟用户保存工作表
    .Quit                                             ; 退出 Excel
ENDWITH
这个例子没有替你节省文本行, 但当你引用对象属性/方法的语句较长时,你可以用 WITH 限定语句缩短过长的语句行.

FOR..INFOR...IN 循环必需使用(Collections)集合.集合(Collections)是一个特定类型的对象, 它存在多个子对象. 您可以把它们看成一个数组 (实际上, FOR..IN 语句也能在数组类型的变量上工作).
在数组中使用 FOR..IN 循环下面这个例子演示了 FOR..IN 循环.这个例子使用正常的 AutoIt 数组.因此,它与 COM 无关. 只是给你说说大概原理:
$String = ""               ; 一个为显示目的字符串

$aArray="a"             ; 我们填写一个数组
$aArray=0               ; 用几个
$aArray=1.3434          ; 不同的
$aArray="testestestest" ; 示例值.

FOR $Element IN $aArray    ; 从这里开始..
   $String = $String & $Element & @CRLF
NEXT

; 显示用户的结果
Msgbox(0,"For..IN Arraytest","Result: " & @CRLF & $String)


FOR..IN 循环使用一个对象在大部份情形下,你不能使用'标准'对象方法取回(collection)集合的元素. 'COM' 确定,在 FOR..IN 循环期间,您必须枚举'它们.
下面的 Excel 例子在当前激活的工作表的[存储]单元 A1:O16 范围内循环填写数字. 如果[存储]单元内有小于 5 的数值,[代]码将替换为 0 值:
$oExcel = ObjCreate("Excel.Application") ; 创建一个 Excel 对象

$oExcel.Visible = 1               ; 显示 Excel
$oExcel.WorkBooks.Add             ; 添加一个新的工作表

dim $arr                  ; 以下行
for $i = 0 to 15                  ; 只是产生
for $j =0 to 15               ; 一些存储单元
   $arr[$i][$j] = $i            ; 内容的
next                            ; 例子.
next

$oExcel.activesheet.range("A1:O16").value = $arr ; 将上面的数字填入工作表的("A1:O16")表格中

sleep(2000)                     ; 等待两秒

For $cell in $oExcel.ActiveSheet.Range("A1:O16")
   If $cell.Value < 5 Then
       $cell.Value = 0
   Endif
Next

$oExcel.ActiveWorkBook.Saved = 1 ; 模拟保存工作表
sleep(2000)                      ; 等待两秒
$oExcel.Quit                     ; 退出 Excel


COM 高级使用下面这些是使用 AutoItCOM 必须了解的知识( COM 事件和 COM错误处理).
如果你是一个 COM 程序员新手, 请先阅读一些关于 COM 的好文章.
有个关于 COM 的经典著作叫做 "Inside OLE 2",作者:Kraig Brockschmidt (微软出版).
您可以在网上找到更多关于 COM 的资源 (不是与 AutoIt 有关的):
http://msdn.microsoft.com/en-us/library/ms694363.aspx (介绍)
http://www.garybeene.com/vb/tut-obj.htm (关于 Visual Basic 对象)
http://java.sun.com/docs/books/tutorial/java/concepts/   (在 Java 中使用对象)
http://msdn.microsoft.com/archive/en-us/dnarguion/html/drgui082399.asp (在 C++ 中使用对象事件)
http://www.garybeene.com/vb/tut-err.htm (Visual Basic 的错误处理)

COM 事件标准 COM 自动化主要使用单向通讯. 当你访问对象的属性或产生的方法时. 只要你的脚本适合它, COM 对象就能响应你的访问.
在你需要等候一些 COM 的动作发生时,这就非常便利了.?
如果要知道对象某事件是否已经发生,你可以让对象在你的脚本中调用特定的 UDF, 而不必写一些循环语句.?同时你还可以在你的脚本中做其他的事.

不是所有对象都支持事件. 你必须仔细阅读对象文档资料确定对象是否支持事件.
如果它能支持事件, 第二件事就要知道它支持的事件类型. AutoItCOM 只能接收'发送'类型事件.
最后你必须知道对象产生的事件的名称,包括他们的自变量(如果有的话).

只有当你知道了所有这些信息,你才能开始编写使用 COM 事件的 AutoIt 脚本.
下面是一个接收因特网浏览器事件的示范脚本中的一段:
$oIE=ObjCreate("InternetExplorer.Application.1")   ; 建立WEB浏览器

$EventObject=ObjEvent($oIE,"IEEvent_","DWebBrowserEvents"); 启动接收事件.

$oIE.url= "http://www.autoitscript.com"; 加载示例网页
;从这里开始,$oIE 对象在网页加载期间产生事件.
;它们的事件处理在下面显示的函数内.

;在这里写等待用户退出脚本的语句.
...(你的代码在这里)...?...

$EventObject.stop            ; 告诉 IE 我们要停止接收事件
$EventObject=0               ; 消除对象事件
$oIE.quit                  ; 退出 IE
$oIE=0                     ; 移除内存中的 IE 信息(不是必需的)
Exit                         ; 退出主脚本


; 一些 Internet Explorer 的事件函数.
;
; 对于 IE 事件的完整动作列表, 见下面链接的?MSDN 网页浏览器文档资料:
; http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.aspx

Func IEEvent_StatusTextChange($Text)
; 在完整脚本中(见下面的链接),我们用一个 GUI 来显示内容.
    GUICtrlSetData ( $GUIEdit, "IE 浏览器状态更改为: " & $Text & @CRLF, "append" )
EndFunc

Func IEEvent_BeforeNavigate($URL, $Flags, $TargetFrameName, $PostData, $Headers, $Cancel)
; 在完整脚本中(见下面的链接),我们用一个 GUI 来显示内容.
; 注意: 内容与 MSDN 不同.
GUICtrlSetData ( $GUIEdit, "BeforeNavigate: " & $URL & " Flags: " & $Flags & @CRLF, "append")
EndFunc

这个脚本的主干是: $EventObject=ObjEvent($oIE,"IEEvent_",...).
函数获取对象 $oIE ,并变更从 MYEvent_ 开始的?AutoIt 函数事件名及路径. 第三个参数是可选的. 当一个对象有多个事件接口,而且你不想要 AutoIt 自动选择时, 可以使用第三个参数.

导致象连续变更路径的是 $EventObject. 这个变量不需要过多注意, 除非你想要停止事件.
停止变更路径事件, 你不能仅仅已类似 $EventObject="" 的形式删除变量. 理由是那 '调用' 对象仍然正在占用这个变量的索引, 而且不会释放它,直到对象本身退出为止. 你可以借由杀死(killing) '调用'对象来解决这个问题, 也可以使用 $EventObject.Stop 告诉对象你不再需要接收任何事件. 然后你才可以 (也不是真的必需) 通过分配它一个任意数值取消事件, 类似: $EventObject=""

如果你知道事件 $oIE 的激活名称, 通过IE名字创建 AutoIt UDF:Event_Eventname(可选参数)实现你感兴趣的事件. 请务必确定函数中自变量的正确数目,并保证其正确的顺序规定. 否则你可能以料想不到的意外值作为结束.


如果你不知道 (因为一些理由) 事件的名字, 你可以增加一个只有前缀的UDF,象这个例子: Func IEEvent_($Eventname).
当被收到一个没有 IEEvent_ Eventname UDF 存在的事件时, 函数将改调用,事件的名字放在变量 $Eventname 内.

你不一定要实现所有事件函数,那些不执行的将被忽略.

更多使用 COM 事件函数的例子脚本在 AutoIt 3.1.1.xx beta ZIP 发布文档中, 从这里下载:
http://www.autoitscript.com/autoit3/files/beta/autoit/COM/

AutoIt 中 COM 事件的限制
一些对象 (像 'WebBrowser') 通过自变量对他们的事件函数 '参考'.?这是为了让用户改变这些函数中的自变量,并且把它返回到对象. 然而, AutoIt 使用它自己的变量系统,对 COM 变量不是兼容的. 这意谓着所有对象值将转换成 AutoIt 变量, 因而也失去了参照原有的内存空间。也许在不久的将来,我们可以解决这个限制 !

COM 出错处理使用 COM 没有适当的错误处理是非常棘手的。尤其是当你不熟悉您脚本中的对象时.

当侦测到一个COM错误时,AutoIt 脚本将立即停止执行. 这是默认设置,也是最安全的设置。在这种情况下,你必须采取措施,以防止错误在您的脚本中发生.

如果没有方法避免 COM 差错, 你可以在脚本中安装一个"差错处理程序", 但如果这个程序被执行,表明错误已经发生. 要使脚本正常工作,这不是一个完美的解决办法,也不能捕捉非 COM 相关的脚本错误(如申明和语法错误).

使用 ObjEvent() 和一个用户自定义 COM 事件函数,把差错处理作为 COM 的正常事件是可行的. 唯一的差别是使用一个固定对象事件名:" AutoIt.Error".

示例:
Global $g_eventerror = 0; 检查是否 com 发生错误. 必须在复位之后处理.

$oMyError = ObjEvent("AutoIt.Error","MyErrFunc") ; 建立自定义错误处理程序

; 在这里执行一个预设故障(对象不存在)
$oIE = ObjCreate("InternetExplorer.Application")
$oIE.visible = 1
$oIE.bogus
if $g_eventerror then Msgbox(0,"","前一行有一个错误.")

Exit


; 这是我的自定义错误处理程序
Func MyErrFunc()
   $HexNumber=hex($oMyError.number,8)
   Msgbox(0,"","We intercepted a COM Error !" & @CRLF & _
                "Number is: " & $HexNumber & @CRLF & _
                "Windescription is: " & $oMyError.windescription )

   $g_eventerror = 1 ; 检查函数返回
Endfunc


有一个特别有关错误事件处理程序的情况,这就是对象返回.? 这是一个AutoIt错误对象,其中包含了一些有用的属性和方法. 它的执行部分是基于在VB(脚本)中的“Err”对象.

AutoIt 错误对象的属性:
.number窗口 HRESULT 的值来自 COM 调用.windescriptionFormatWinError() 错误文本来自 .number.source 产生错误的对象名 (内容来自 ExcepInfo.source).description源对象错误描述 (内容来自 ExcepInfo.description).helpfile源对象 helpfile 错误 (内容来自 ExcepInfo.helpfile).helpcontext 源对象 helpfile 上下文ID编号 (内容来自 ExcepInfo.helpcontext).lastdllerrorGetLastError() 的返回数.scriptline发生错误的脚本行
AutoIt 错误对象的方法:
.raise用户开始的一个错误事件.clear 清除错误对象的内容(即编号为0 ,字符串"")

编写 UDF 程序的一个注意
在 AutoIt 脚本中,您最多只能激活一个错误事件处理程序. 如果你正在编写包含 COM 函数的 UDF, 如果用户已经安装了一个错误处理程序,您可以这样检查:
$sFuncName = ObjEvent("AutoIt.Error")
if $sFuncName <> "" then Msgbox (0,"Test","User has installed Error Handler function: " & $sFuncName)

如果没有错误处理程序是激活的,可以暂时安装自己的UDF调用.
然而, 在没有释放被指定的变量时,你不能停止现有的错误处理程序. 如果脚本作者已安装 COM 错误处理程序, 他的职责是使用一个适当的函数找出由 UDF 产生的 COM 错误.

OLE/COM 对象查看器"OLE/COM Object Viewer"(OLE/COM 对象查看器)查看你系统上安装的所有 COM 对象时,是一个非常便利的工具. 它是 Windows 2000 的一部份资源套件,并且能从下面地址免费下载: http://www.microsoft.com/downloads/details.aspx?familyid=5233b70d-d9b2-4cb5-aeb6-45664be858b6&displaylang=en
这个程序的安装有有点儿尴尬.它不为你产生任何启动菜单图标. 相反地,一个调用文件 oleview.exe 安装在 C:\Program Files\Resource 套件目录中.(默认安装)..
中文版 autoit3 将此文件安装在:盘符\autoit3\Extras\OLEview 文件夹中
当运行 oleview.exe 时,一些系统将会提示找不到 iviewers.dll 文件. 这是个必须的文件, 奇怪的是不包含在最新安装之中.你可以从下面地址获得一个 oleview.exe 较旧版本: http://download.microsoft.com/download/2/f/1/2f15a59b-6cd7-467b-8ff2-f162c3932235/ovi386.exe. 它将默认安装到 C:\MSTOOLS\BIN 目录.你只需将文件 iviewer.dll 复制到 oleview.exe 所在目录,然后使用命令行注册动态链接库: regsvr32 iviewers.dll.

让我们用 Oleviewer 做一个例子. 运行 oleview.exe 依次展开: Object Classes->Grouped by Component Category->Control->Microsoft Web Browser.



在左侧栏中您会看到为对象 “Microsoft Web Browser”(微软网页浏览器) 定义的所有 COM 接口. 我们稍后讨论这些. 仔细看看右栏. 它包含在 AutoIt 脚本中使用这个对象的许多信息. 重要的是 "VersionIndependentProgID". 这是一个在 ObjCreate, ObjGet 或 ObjEvent 函数中使用的名字. 此外它还包含对象的目录和文件名. 这可能是 EXE, DLL 或 OCX 文件. InProcServer32 意味着您的脚本与对象运行在同一线程(在进程中). 当您见到?LocalServer32, 表示运行的对象作为一个单独的进程. 该对象还必须包含一个类型库 (在 "TypeLib=" 之后的行), 否则无法使用一个 AutoIt 脚本.

在左列中的接口被用来与对象的方法结合. 有些用来做储存 (IStorage, IPersist), 其他嵌入一个GUI (IOleObject, IOleControl)内. AutoIt 使用 IDispatch 作为自动化接口.这个接口'暴露' 所有脚本支持对象的方法和属性. 如果它不存在,则无法不能在一个 AutoIt 脚本中使用对象.
让我们来看看在这个界面. 右键单击 IDispatch 名称并在右键菜单选择“查看... ”,然后单击“查看 TypeInfo ... ”按钮. (注意: 如果这个按钮是灰色的,表示你没有注册 iviewers.dll 文件,或对象没有这个类型库)



“ ITypeInfo 查看器”窗口显示对象的信息.如果开发者没有包括帮助文件,你只能看到方法的名程/属性而没有其他信息. "Microsoft Web Browser" 类型库内容相当广泛.在左边列中点击一个项目,该项目的描述将会在右边显示.有时你必须浏览 "Inherited Interfaces" 为对象检索更多的方法.
描述方法/属性的句法是 C/C++ 结构. 属性描述为?"HRESULT Resizable( VARIANT_BOOL pbOffline)", 必须在 AutoIt 重写为: $Resizable=$Object.Resizable($Object 保存对象创建的 ObjCreate 或 ObjGet).

COMmonly mixed up terms以下这些术语通常与 COM 一起混和使用, 但是有不同的意义:
OOP = 面向对象编程。编程技术是把可重复使用的软件组件构建成模块并称为对象.
DDE = 动态数据交换. 你可以说这是 COM 的前驱. 在不同的应用之间它用了 IPC 传递信息的命令.
OLE = 对象链接和嵌入. 他的第一个版本, 是一个 DDE 的扩充版本. DDE 从一个程序 '嵌套' 数据到另外一个程序.??目前的 OLE 是建立在 COM 和 ActiveX 技术上的一部分.
Automation = 操作另一个应用程序对象. 用在 OLE, ActiveX?与 COM 中.
ActiveX = 下一代的 OLE 自动装置, 起先主要用于开发网络应用之间的接口(尤其是 web 浏览器). 是建立在 COM 中的组件.
DCOM= 分布式 COM. 一个略有修改的 COM ,它能够沟通不同的物理计算机.
.NET (dot Net)= 它不真的是一个软件, 但一个 '概念' 认为,从微软到互连网的软件的“一切动作”通过它.?"dot Net"?主要用于网络服务.
COMmunist = 这个不支持 COM, 但什么人信奉 communism (一种理论认为,普通老百姓应该自己所有的财产). (131738 译注:此处牛头不对马嘴!或是幽默,或是寻开心....总之不知为何?最后那个词就不翻译了!)

kn007 发表于 2009-9-11 22:31:20

下载下来了http://www.autoitx.com/forum.php?mod=viewthread&tid=8340&page=1&fromuid=7644076#pid67567正在看先下了,

afan 发表于 2009-9-11 22:34:45

131738 的新年大礼你没收到吗? 呵呵

kn007 发表于 2009-9-11 22:35:21

呵呵,没看到,不过还是得跑msdn

afan 发表于 2009-9-11 22:37:26

跑那的都是高手(貌似LS那位pusofalse大虾就经常在那溜达...)~ 咱看到那四个字母就——闪。

131738 发表于 2009-9-12 00:05:28

下载下来了http://www.autoitx.com/forum.php?mod=viewthread&tid=8340&page=1&fromuid=7644076#pid67567正在看先下了,
kn007 发表于 2009-9-11 22:31 http://www.autoitx.com/images/common/back.gif

看完后有什么不对的千万言语一声!

我也是瞎呼隆的!

131738 发表于 2009-9-12 00:10:26

本帖最后由 131738 于 2009-9-12 00:12 编辑

COM 扩展到 AutoIt一个简短的介绍
什么是 COM?COM 是 "Component Object Model"(对象组件模块)的缩写.是微软为应用程序相互连接使用的一种公共接口.这些接口定义为 COM 对象(Object).
在 COM 之前, 你必须知道你的 ...
afan 发表于 2009-9-11 22:27 http://www.autoitx.com/images/common/back.gif

真不愧金牌称号!!这不光复制,粘贴就能完事的吧! 费心了!!!!!!!!!!

只是那头像有点不配啊!!不考虑换换吗?......

afan 发表于 2009-9-12 00:14:19



真不愧金牌称号!!这不光复制,粘贴就能完事的吧! 费心了!!!!!!!!!!
131738 发表于 2009-9-12 00:10 http://www.autoitx.com/images/common/back.gif

费心的是您啊~ 我这算个啥,复制粘贴您的劳动成果,最多再小小编辑下~ 呵呵
页: [1]
查看完整版本: 有没有某个控件带点的说明?