- 版本 v1.1.15.01
- 指南和概述
- 常见问题(FAQ)
- 按字母排序的命令和函数索引
- AutoHotkey 脚本展示
- 变更和新功能
- 基本用法和语法
- 迁移到 AutoHotkey 1.1(AutoHotkey_L)
- 环境管理
- 本机代码互操作
- 文件、目录和磁盘管理
- Drive
- DriveGet
- DriveSpaceFree
- FileAppend
- FileCopy
- FileCopyDir
- FileCreateDir
- FileCreateShortcut
- FileDelete
- FileEncoding [AHK_L 42+]
- FileGetAttrib
- FileGetShortcut
- FileGetSize
- FileGetTime
- FileGetVersion
- FileInstall
- FileMove
- FileMoveDir
- FileOpen [AHK_L 42+]
- FileReadLine
- FileRead
- FileRecycle
- FileRecycleEmpty
- FileRemoveDir
- FileSelectFile
- FileSelectFolder
- FileSetAttrib
- FileSetTime
- IfExist / IfNotExist
- IniDelete
- IniRead
- IniWrite
- Loop(文件和文件夹)
- Loop(读取文件内容)
- SetWorkingDir
- SplitPath
- 流程控制
- 内置函数
- GUI、MsgBox、InputBox 及其他对话框
- 鼠标和键盘
- 鼠标和键盘
- #InstallKeybdHook
- #InstallMouseHook
- #KeyHistory
- BlockInput
- Click [v1.0.43+]
- ControlClick
- ControlSend / ControlSendRaw
- CoordMode
- GetKeyState
- KeyHistory
- KeyWait
- Input
- MouseClick
- MouseClickDrag
- MouseGetPos
- MouseMove
- Send / SendRaw / SendInput / SendPlay / SendEvent: 发送按键和点击
- SendLevel [v1.1.06+]
- SendMode [v1.0.43+]
- SetDefaultMouseSpeed
- SetKeyDelay
- SetMouseDelay
- SetCapsLockState/SetNumLockState/SetScrollLockState
- SetStoreCapslockMode
- 数学相关
- 屏幕管理
- 杂项命令
- 进程管理
- 注册表管理
- 声音命令
- 字符串管理
- 窗口管理
- 控件
- 窗口组
- #WinActivateForce
- DetectHiddenText
- DetectHiddenWindows
- SetTitleMatchMode
- SetWinDelay
- StatusBarGetText
- StatusBarWait
- WinActivate
- WinActivateBottom
- WinClose
- WinGet
- WinGetActiveStats
- WinGetActiveTitle
- WinGetClass
- WinGetPos
- WinGetText
- WinGetTitle
- WinHide
- WinKill
- WinMaximize
- WinMinimize
- WinMinimizeAll / WinMinimizeAllUndo
- WinMove
- WinRestore
- WinSet
- WinSetTitle
- WinShow
- WinWait
- WinWaitActive / WinWaitNotActive
- WinWaitClose
- #指令
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
ComObjArray() [v1.0.91+]
创建用于 COM 的 SafeArray.
ArrayObj := ComObjArray(VarType, Count1 [, Count2, ... Count8])
参数
- VarType
- 数组的基类型 (数组中每个元素的 VARTYPE). VARTYPE 被限制为变量类型的子集. 不能设置为 VT_ARRAY 和 VT_BYREF. 对于数组的基类型 VT_EMPTY 和 VT_NULL 都是无效的. 其他所有类型都是合法的.
请参阅 ComObjType 了解允许值的列表.
- CountN
每个维度的大小。可以支持多达 8 维的数组.
- ArrayObj
包含 SafeArray 的包装器对象.
方法
数组包装器对象支持下列方法:
Array.MaxIndex(n)
: 返回第 n 维的上界. 如果 n 省略, 默认为 1.
Array.MinIndex(n)
: 返回第 n 维的下界. 如果 n 省略, 默认为 1.
Array.Clone()
[v1.0.96.00+]: 返回数组的副本.
Array._NewEnum()
[v1.0.96.00+]: 通常不是由脚本调用; 允许 for 循环 和 SafeArray 一起使用.
一般说明
COM 方法和 ComObjActive 也可以返回数组包装器对象. 脚本中可以使用如下方法判断一个值是否为数组:
if ComObjType(obj) & 0x2000 MsgBox % "Array subtype: " . ComObjType(obj) & 0xfff else MsgBox Not an array.
可以支持多达 8 维的数组.
[v1.0.96.00+]: 由于 SafeArray 没有设计用以支持多种引用, 当一个 SafeArray 被赋值为另一个 SafeArray 的元素时, 会创建一个独立的副本. 不过, 只有当包装器对象含有 F_OWNVALUE 标志时才会发生这种情况, 这个标志表示它负责销毁此数组. 此标志可以使用 ComObjFlags 进行移除.
相关
ComObjType, ComObjValue, ComObjActive, ComObjFlags, 数组操作函数 (MSDN)
示例
; 示例 #1:简单用法。 arr := ComObjArray(VT_VARIANT:=12, 3) arr[0] := "Auto" arr[1] := "Hot" arr[2] := "key" Loop % arr.MaxIndex() + 1 t .= arr[A_Index-1] MsgBox % t
; 示例 #2:多维数组。 arr := ComObjArray(VT_VARIANT:=12, 3, 4) ; 获取数组的维数个数: dim := DllCall("oleaut32\SafeArrayGetDim", "ptr", ComObjValue(arr)) ; 获取每个维数的边界: Loop %dim% dims .= arr.MinIndex(A_Index) " .. " arr.MaxIndex(A_Index) "`n" MsgBox %dims% ; 简单用法: Loop 3 { x := A_Index-1 Loop 4 { y := A_Index-1 arr[x, y] := x * y } } MsgBox % arr[2, 3]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论