函数参考


ObjCreate

通过一个指定的类名引用一个 COM 对象.

ObjCreate ( "类名称" [, "服务器名称" [,"用户名", ["密码"]]] )

参数

类名称 一个对象的类名称,格式如下:
"appname.objectype"
你同样可以使用一个 CLSID 字符串来代替.
服务器名称 [可选参数]服务器的名称.当使用一个远程计算机的对象时,
须填写.
用户名 [可选参数]用户名称,用于使用远程计算机上面的对象时.
请输入这种格式的用户名 "计算机名称\用户名" 或者
"域名\用户名".
密码 [可选参数]可选的密码,用于使用远程计算机上面的对象时.

返回值

成功: 返回 对象句柄.
失败: 返回 0 并设置 @error 为 1.

注意/说明

如果您想得到一个引用对象的一个新的实例,请使用 ObjCreate() .
如果您想连接到一个已存在的进程,使用 ObjGet() 代替.

保持警惕,不是所有计算机都拥有相同的对象集合. 因此 一定要 在调用 ObjCreate() 后检查错误.

如果您需要在 远程 计算机上访问对象:
-运行脚本的用户必须有相关的权限.
-远程计算机上的对象必须支持 DCOM (分布式 COM)
-远程计算机上的 'Remote Registry Service/远程注册表服务' 和 'File and Printer sharing/文件与打印机共享' 服务必须保持运行状态.

查看 Obj/COM Reference 得到关于 Objects (对象) 的更多信息.

相关

GUICtrlCreateObj, IsObj, ObjEvent, ObjGet, ObjName

示例/演示


; Example 1
;
; Counting the number of open shell windows

Local $oShell = ObjCreate("shell.application") ; Get the Windows Shell Object
Local $oShellWindows = $oShell.windows ; Get the collection of open shell Windows

If IsObj($oShellWindows) Then

    Local $string = "" ; String for displaying purposes

    For $Window In $oShellWindows ; Count all existing shell windows
        $string = $string & $Window.LocationName & @CRLF
    Next

    MsgBox(0, "Shell Windows", "You have the following shell windows:" & @CRLF & @CRLF & $string);

EndIf
Exit


; Example 2
;
; Open the MediaPlayer on a REMOTE computer
Local $oRemoteMedia = ObjCreate("MediaPlayer.MediaPlayer.1", "name-of-remote-computer")

If Not @error Then
    MsgBox(0, "Remote ObjCreate Test", "ObjCreate() of a remote Mediaplayer Object successful !")
    $oRemoteMedia.Open(@WindowsDir & "\media\tada.wav") ; Play sound if file is present
Else
    MsgBox(0, "Remote ObjCreate Test", "Failed to open remote Object. Error code: " & Hex(@error, 8))
EndIf