脚本对象
脚本可以使用许多不同的对象与 Opus 进行交互。例如,文件窗口 对象表示一个物理 文件窗口 窗口,向脚本提供有关该文件窗口的信息,并允许脚本修改或控制该文件窗口。
一个对象有两个主要类型的接口可以调用:
属性使脚本能够查询(有时还会设置)一个简单值。例如,文件窗口 对象具有一个 title 属性,该属性使脚本能够检索文件窗口窗口的标题字符串。
方法是对象提供的函数,脚本可以调用它们来执行任务。例如,DOpus 对象有一个 Output 方法,该方法使脚本能够向脚本日志中输出一个文本字符串。
属性和方法之间的主要区别是,方法可以(但并不总是)接受修改其行为的参数,并且不必(但通常会)返回结果。
变量类型
返回结果的属性和方法可以返回许多不同类型的变量,方法通常使用一个或多个参数,这些参数也可以是多种类型。ActiveX 脚本语言通常是 无类型的 - 也就是说,不必预先定义变量的类型,并且从一种类型转换为另一种类型通常(但并非总是)自动进行。Opus 脚本主要使用以下类型的变量:
Int - 一个整数(有符号;有效范围为 -2147483648 到 2147483647)。
Currency - 这是一个标准的变体类型,并且仅在需要比 Int 能够容纳的更大的数字的少数情况下使用它(不幸的是,ActiveX 脚本并不总是支持 64 位整数类型)。
Decimal - 一个无符号的 64 位值(最大值为 18,446,744,073,709,551,616)。并非所有语言都支持此功能 - JScript 支持,但 VBScript 不支持。
String - 一个文本字符串
Bool - 一个布尔值(True 或 False)
Date - 一个日期/时间值
Collection - 一个集合,其中包含多个(通常)相同类型的对象。在一些语言中(例如,在 VBScript 中,使用 For Each 构造)中,可以轻松枚举集合。仅由 Opus 返回集合 - 与数组(或 Vector 对象)不同,它们永远不会被直接创建或修改(尽管在某些情况下可以使用一些脚本方法来修改它们)。例如,Tab 对象有一个名为 selected 的属性,它表示该标签页中当前选择的所有项 - 它是一个项的 集合。
Object - 一个具有已定义方法和属性的 Opus 脚本对象(如下所列的对象类型之一)。某些对象既可以是对象,又可以是集合 - 也就是说,它们具有方法和属性,但也可以像集合一样进行枚举。某些对象还具有一个 默认值 - 也就是说,仅使用对象名称而不使用任何方法或属性将返回它们自己的值。例如,Metadata 对象的默认值是一个表示可用主要元数据类型的字符串。还可以使用特殊 def_value 属性名称引用对象的默认值。
Variant - 任何类型的变量(这与几个对象一起使用 - 例如,Var 对象可以存储一个变体)
全局对象
Opus 在通过 Opus 调用脚本时为脚本提供了两个作为全局变量的对象:
DOpus: 此**对象可供 所有 脚本使用。它提供了各种辅助方法和集合,可用于访问诸如文件窗口和工具栏之类的对象。
事件对象
Opus 在脚本中的一个方法中提供许多对象作为参数。例如,当调用 脚本函数(例如,单击按钮时),Opus 将调用其 OnClick 方法,并向其传递一个 ClickData 对象。
AboutData: 此对象提供给 OnAboutScript 方法,该方法在用户单击 脚本管理 对话框中某个脚本的 关于 按钮时调用。
Activate文件窗口Data: 此对象提供给 OnActivate文件窗口 方法,该方法在文件窗口窗口被激活或取消激活时调用。
ActivateTabData: 此对象提供给 OnActivateTab 方法,该方法在标签页被激活时调用。
AddCmdData: 此对象提供给 OnAddCommands 方法,该方法允许脚本 添加新的内部命令。
AddColData: 此对象提供给 OnAddColumns 方法,该方法允许脚本 添加新的信息列。
AfterFolderChangeData: 此对象提供给 OnAfterFolderChange 方法,该方法在读取新文件夹后调用。
BeforeFolderChangeData: 此对象提供给 OnBeforeFolderChange 方法,该方法在读取新文件夹之前调用。
Close文件窗口Data: 此对象提供给 OnClose文件窗口 方法,该方法在文件窗口关闭之前调用。
CloseTabData: 此对象提供给 OnCloseTab 方法,该方法在标签页关闭之前调用。
ConfigChangeData: 此对象提供给 OnScriptConfigChange 方法,当用户编辑脚本的配置时,该方法会通知脚本。
DisplayModeChangeData:此对象传递给 OnDisplayModeChange 方法,此方法在标签页中显示模式发生更改时调用。
DoubleClickData:此对象传递给 OnDoubleClick 方法,此方法在文件或文件夹双击时调用。
FileOperationCompleteData:此对象传递给 OnFileOperationComplete 方法,可让你在某些文件操作完成后接收到通知。
FilesystemChangeData:此对象传递给 OnFilesystemChange 方法,即通过 FSUtil.WatchChanges 方法建立文件或文件夹更改的监控之后。
FlatViewChangeData:此对象传递给 OnFlatViewChange 方法,此方法在标签页中平面视图模式发生更改时调用。
GetCopyQueueNameData:此对象传递给 OnGetCopyQueueName 事件,此事件在每次使用自动管理的复制队列开始复制操作时调用。
GetCustomFieldData:此对象传递给 OnGetCustomFields 事件,此事件可让 重命名脚本 将其自己的字段添加到 重命名 对话框。
GetNewNameData:此对象传递给 OnGetNewName 方法,此方法是 重命名脚本 可以提供的受支持方法之一。
文件窗口ResizeData:此对象传递给 On文件窗口Resize 事件,此事件在文件窗口窗口每次调整大小时调用。
文件窗口UIChangeData:此对象传递给 On文件窗口UIChange 方法,此方法在文件窗口中打开或关闭各种用户界面元素(树、查看器等)时调用。
Open文件窗口Data:此对象传递给 OnOpen文件窗口 方法,此方法在新文件窗口打开时调用。
OpenTabData:此对象传递给 OnOpenTab 方法,此方法在新标签页打开时调用。
ScriptColumnData:此对象传递给用于将新列添加到 Opus 的 脚本指定的方法。
ScriptCommandData:此对象传递给用于向 Opus 添加新内部命令 的 脚本指定的方法。
Script即时查找CommandData:此对象传递给用于 扩展即时查找字段 的 脚本指定的方法。
ScriptInitData:此对象传递给 OnInit 方法,此方法在 脚本加载项 文件夹中初始化每个脚本时调用一次。
ShutdownData:此对象传递给 OnShutdown 方法,此方法在 Opus 关闭之前调用。
SourceDestData:此对象传递给 OnSourceDestChange 方法,此方法在标签页的源或目标状态发生更改时调用。
StartupData:此对象传递给 OnStartup 方法,此方法在 Opus 启动时调用。
StyleSelectedData:此对象传递给 OnStyleSelected 方法,此方法在文件窗口中选择新 样式 时调用。
SystemSettingChangeData:此对象传递给 OnSystemSettingChange 方法,此方法在各种系统设置发生更改时调用。
TabClickData:此对象传递给 OnTabClick 事件,此事件在按住限定符键时单击标签页时调用。
ViewerEventData:此对象传递给 OnViewerEvent 事件,此事件在独立 图像查看器 中发生某些事件时调用。
其它对象
其余对象全部使用上面列出的对象提供的属性或方法来获取。例如,文件窗口 对象是使用 DOpus.listers 集合属性获取的,并且 Vector 对象是使用 DOpusFactory.Vector 方法获取的。
Aliases:此对象是所有已定义文件夹别名的集合。它使用 DOpus.aliases 集合属性检索。
AudioMeta:该对象提供与音频文件相关的元数据属性。它从 Metadata 对象获取。
AudioCoverArt:该对象提供访问音频文件嵌入的封面图片。它从 AudioMeta.coverart 属性获取。
Blob:该对象提供简单界面来处理二进制数据。它从 DOpusFactory.Blob 方法获取,也由 AudioCoverArt.data 属性返回。
BusyIndicator:使用 BusyIndicator 对象,可以通过脚本控制面包屑栏的忙碌指示器。
Column:该对象表示已添加到某标签页显示中的某列。列集合可从 Format 对象获取。
Command:该对象用于运行 Opus 命令。它从 ScriptCommandData.func 或 ClickData.func 属性获取,也可以通过 DOpusFactory.Command 方法创建。
CustomFieldData:CustomFieldData 对象通过 GetNewNameData.custom 属性提供给 重命名脚本。它提供对脚本添加到重命名对话框的任何 自定义字段 的值访问。
Date:该对象提供,以方便处理表示日期的变量。它从 DOpusFactory.Date 方法以及其它对象中的各种属性获取。
Dialog:该对象用于显示对话框或弹出菜单。它从 Func.Dlg, Command.Dlg 或 DOpus.Dlg 方法获取。
DialogListColumn:DialogListColumn 对象表示 脚本对话框。 中详细信息模式列表视图控件中的某列。通过枚举**DialogListColumns对象获取.~control**
DialogListColumns:DialogListColumns 对象允许查询或修改 脚本对话框。 中详细信息模式列表视图控件中的列。使用 Control.columns 属性获取 DialogListColumns 对象。
DialogListGroup:DialogListGroup 对象表示 脚本对话框 中列表视图控件中的某组。它由 Control.GetGroupById 方法返回。
DialogListItem:DialogListItem 对象表示 脚本对话框 中组合框或列表框控件中的某项。它由 Control.GetItemAt 和 Control.GetItemByName 方法返回。
DialogOption:该对象与 Dialog 对象联合使用。它允许指定要添加到对话框的复选框选项。
Dock:该对象表示浮动工具栏。工具栏对象提供集合,表示当前处于浮动状态的所有该工具栏的实例。
DocMeta:该对象提供与文档文件相关的元数据属性。它从 Metadata 对象获取。
DOpusFactory:该对象是帮助对象,可用于创建其它各类对象,如 Map 和 Vector。它从 DOpus.Create 方法获取。
ExeMeta:该对象提供与可执行(程序)文件相关的元数据属性。它从 Metadata 对象获取。
File:该对象允许从文件读取或写入二进制数据。它从 FSUtil.OpenFile 和 Item.Open 方法获取。
FileGroup:该对象公开有关文件组的信息(当 Tab 设置为按特定列分组时)。它由 Item 和 Tab 对象使用。
FileSize:该对象用于表示字节大小(主要是因为 ActiveX 脚本不支持 64 位整数)。它由 Item 和 TabStats 对象使用。
FiletypeGroup:该对象表示文件类型组(如 文件类型组 部分的 文件类型编辑器 中所配置)。
FiletypeGroups:该对象表示一个或多个文件类型组的集合。
Filter:让你创建复杂过滤器,当从脚本运行时可与诸如 Copy 的命令一起使用。
FilterParseError:用于在使用 Filter 对象时访问有关解析错误的信息。
FolderEnum:该对象让脚本枚举文件夹的内容。它使用 FSUtil.ReadDir 方法获取。
FontMeta:该对象提供与字体文件相关的元数据属性。它从 Metadata 对象获取。
Format:该对象在标签页中提供有关显示格式的信息。它从 Tab.format 属性获取。
FSUtil:该对象提供与文件系统活动相关的多种实用程序方法。它从 DOpus.FSUtil 属性获取。
GlobalFilters:该对象让你访问有关全局过滤器设置的信息(配置中 过滤器 页面上配置)。
ImageMeta:该对象提供与图像文件相关的元数据属性。它从 Metadata 对象获取。
IncludeFileInitData:如果 包含文件 脚本实现可选的 oninitincludefile 方法,那么它将接收该对象,以便其提供有关包含文件的信息。
Item:该对象表示文件或文件夹。它可以从 Tab 对象的各种方法中返回,在使用 FSUtil.ReadDir 方法枚举文件夹时,以及用于为使用 Command 对象执行命令提供文件时。
Items:Items 对象让你枚举一个或多个 Item 对象的列表。
Metadata:该对象表示文件或文件夹的元数据。它可以从 Item.metadata 属性以及 FSUtil.GetMetadata 方法中获取。
OtherMeta:该对象提供与文件和文件夹相关的常规元数据属性。它从 Metadata 对象获取。
PairedFolder:该对象表示从 FSUtil.GetFolderPair 方法中获取的 配对文件夹。
Path:该对象表示文件系统路径。它包含用于操作该路径的几个方法。路径对象由几个属性返回,并且可以通过 FSUtil.NewPath 方法创建。
Progress:该对象表示进度对话框,它让你在视觉上向用户指示脚本函数的进度。它从 Command.progress 属性获取。
QuickFilter:此对象提供了一个标签中的快速过滤状态的信息。它从 Tab.quickfilter 属性中获取。
Rect: Rect 对象代表一个矩形。
Results: 此对象代表命令的结果(发生错误时的错误代码,以及命令创建的任何新标签或文件窗口)。它从 Command.results 属性中获取。
ScriptColorPair:此对象捆绑了一对颜色(文本 / 背景)。
ScriptColumn:此对象代表一个 脚本定义的列。它从 ScriptInitData.AddColumn 方法中获取,同时处理 OnInit 事件。
ScriptCommand:此对象代表一个 脚本定义的内部命令。它从 ScriptInitData.AddCommand 方法中获取,同时处理 OnInit 事件。
Script即时查找Command:此对象为延伸了即时查找字段(/Manual/scripting/example_scripts/extending_the_fayt.zh.md)的脚本加载项的 ScriptCommand 对象提供为一个属性。
ScriptConfig:此对象代表 Opus 为每个脚本存储的脚本定义的配置数据。配置项目通过 ScriptInitData.config 属性初始化,然后通过 Script.config 属性可用于脚本。
ScriptStrings:ScriptStrings 对象由 DOpus.strings 属性返回。它允许你访问通过 字符串资源 定义的任何字符串。
ShellProperty:ShellProperty 对象代表一个 shell 属性 - 一个来自 Windows 或第三方扩展的有关文件或文件夹的元数据项。FSUtil.GetShellPropertyList 方法让你可以获取一个可用的 shell 属性列表。
SmartFavorite:SmartFavorite 对象代表一个文件夹在 智能收藏夹 表中的条目。通过枚举或索引 智能收藏夹 对象来检索它。
StringTools:此对象提供用于字符串编码和解码的实用函数。它从 DOpusFactory.StringTools 方法中获取。
SysInfo:SysInfo 对象由 DOpusFactory.SysInfo 方法创建。它允许脚本访问各种系统信息,脚本可能无法通过其它方式获取。
Tab:此对象代表一个文件窗口中的文件夹标签。文件窗口的标签通过各种文件窗口对象属性(例如 文件窗口.activetab)提供,并且还用于指定命令的来源/目标(例如 Command.sourcetab)。
TabGroupTabEntry:此对象代表一个 标签组 中的文件夹标签。
TabGroupTabList:此对象代表一个 标签组 中的文件夹标签列表。
TabStats:此对象提供有关文件夹标签的各种统计信息(所选文件数、总项数等)。它从 Tab.stats 和 Tab.selstats 属性中获取。
Toolbar:此对象代表一个工具栏。它通过 DOpus.toolbars 和 文件窗口.toolbars 属性获取。
Toolbars:Toolbars 对象允许你枚举 Directory Opus 配置中定义的所有工具栏(无论当前是否启用)。
UnorderedSet:类似于 StringSet,但可以存储任何类型的元素,而不仅仅是字符串。
Var:这个对象表示变量。工具栏按钮、热键和脚本可以读取和存储变量,变量可以从 Opus 的一次会话保存到另一次会话。Var 对象是从 Vars 集合获得的。
Vars:这个对象表示变量的集合。根据变量的范围,它可以从 DOpus.vars、文件窗口.vars、Tab.vars、Command.vars 或 Script.vars 属性获得。
Vector:这个对象类似于数组——它可以存储无限数量的任何类型的元素。Opus 脚本界面中的许多属性和方法都使用 Vector,在大多数情况下你可以将它们与数组互换使用。之所以提供 Vector,是因为有些脚本语言仅提供不完整或不兼容的数组——使用 Vector 表示对象可以在任何 ActiveX 脚本语言中一致使用。Vector 由 DOpusFactory.Vector 方法创建。
Version:这个对象表示有关当前 Opus 版本的信息。它可以从 DOpus.Version 属性获得。
VideoMeta:这个对象提供与电影文件相关的元数据属性。它可以从 Metadata 对象获得。
Wild:这个对象允许脚本访问 Opus 中内置的模式匹配函数。它可以从 FSUtil.NewWild 方法获得。
WinVer:这个对象表示有关当前 Windows 版本的信息。它可以从 Version.winver 属性获得。
最后更新于