heX 扩展说明

heX 加载成功的扩展挂载在 hex.extensions 对象下。

列表

sleep 扩展

sleep(millisecond)

设置 sleep 的毫秒数。

unsleep(millisecond)

设置 unsleep 的毫秒数。

shortcut 扩展

create(path, options, operations)

创建一个快捷方式。其中参数:

  • path: 快捷方式的路径
  • options: 快捷方式的参数
  • operations: 快捷方式的操作

快捷方式的参数是一个对象,具体 key 的含义如下:

  • target: 快捷方式所对应的目标路径。默认值:path 所指路径。
  • workingDir: 快捷方式的工作路径。默认值:path 所在路径。
  • arguments: 快捷方式的参数。
  • description: 快捷方式的描述信息。
  • iconPath: 快捷方式的图标路径。默认值:path 所指路径。
  • iconIndex: 快捷方式的图标索引号。默认值:0(iconPath 的第一个图标)。
  • appId: 快捷方式的 Application User Model ID(Windows 7+)。

快捷方式的操作有以下含义:

  • SHORTCUT_CREATE_ALWAYS: 0,如果快捷方式不存在则创建一个新的,否则覆盖。
  • SHORTCUT_REPLACE_EXISTING: 1,如果快捷方式不存在则失败,仅可以覆盖已有的快捷方式。
  • SHORTCUT_UPDATE_EXISTING: 2,在一个已存在的快捷方式上更新指定的属性。

update(path, options, operations)

更新一个快捷方式。暂时功能同 create

resolve(path)

获取一个快捷方式的信息。暂时仅包括 target 和 arguments 属性。

delete(path)

删除一个快捷方式。

pin(path)

将一个快捷方式固定在任务栏上。仅适用于 Windows Vista 及以上系统。

unpin(path)

将一个快捷方式解除固定在任务栏上。仅适用于 Windows Vista 及以上系统。

SHORTCUT_CREATE_ALWAYS

create 的 operations 参数。如果快捷方式不存在则创建一个新的,否则覆盖。

SHORTCUT_REPLACE_EXISTING

create 的 operations 参数。如果快捷方式不存在则失败,仅可以覆盖已有的快捷方式。

SHORTCUT_UPDATE_EXISTING

create 的 operations 参数。在一个已存在的快捷方式上更新指定的属性。

dialog 扩展

fileDialog(options)

打开一个文件选择类对话框。options 的参数如下:

  • mode: 对话框类型。参见:OPEN_FILE 等。默认值:OPEN_FILE
  • title: 对话框标题。
  • defaultFileName: 对话框的缺省文件名或路径。
  • acceptTypes: 对话框所支持的文件类型。此选项为一个对象,key 代表类型描述,value 代表类型过滤器(如 *.*,*.png 等,多种过滤器用分号隔开)。

Example:

fileDialog({
    "mode": hex.OPEN_FILE,
    "title": "Select an image",
    "defaultFileName": "d:\\",
    "acceptTypes": {
        "Image files": "*.bmp;*.gif;*.jpg;*.png",
        "All files": "*.*"
    }
})

openFileDialog(options)

打开一个文件选择对话框。options 的参数见 fileDialog,其中 mode 参数无效。

openMultipleFilesDialog(options)

打开一个文件多重选择对话框。options 的参数见 fileDialog,其中 mode 参数无效。

saveFileDialog(options)

打开一个文件保存对话框。options 的参数见 fileDialog,其中 mode 参数无效。

openFolderDialog(options)

打开一个文件夹选择对话框。options 的参数见 fileDialog,其中 mode 参数无效。

openNewFolderDialog(options)

打开一个新式的文件夹选择对话框。options 的参数见 fileDialog,其中 mode 参数无效。仅适用于 Windows Vista 及以上系统。

OPEN_FILE

fileDialog 的 operations 参数。代表文件选择对话框。

OPEN_MULTIPLE_FILES

fileDialog 的 operations 参数。代表文件多重选择对话框。

OPEN_FOLDER

fileDialog 的 operations 参数。代表文件夹选择对话框。

OPEN_NEW_FOLDER

fileDialog 的 operations 参数。代表新式的文件夹选择对话框。

SAVE_FILE

fileDialog 的 operations 参数。代表文件夹保存对话框。

icon 扩展

getIcon()

获取当前窗口的图标,返回值为一个对象,包含了 Uint8ClampedArray 类型的图标位图数据 array,字符串类型的 base64 uri,宽度及高度。

setIcon(array, [width, height])

将 array 中所指的位图数据设置为当前窗口的图标,若未指定 width 及 height 则默认将图标理解为正方形。array 为 Uint8ClampedArray 类型,可以由 hex.snapshot()、hex.snapshotDesktop() 或者 canvas 元素获得。

createIconFile(path, array, width, height)

将 array 中所指的位图数据保存为 ico 文件,图标文件中包含一系列尺寸的图标。array 为 Uint8ClampedArray 类型,可以由 hex.snapshot()、hex.snapshotDesktop() 或者 canvas 元素获得。

getFileIcon(path, [size])

获取指定路径 path 下的指定尺寸 [size] 的图标,返回值为 PNG 格式的 base64 字符串。若未指定 size 则默认为 LARGE

SMALL

代表 16x16 小图标,值为 0,搭配 getFileIcon() 使用。

NORMAL

代表 32x32 大图标,值为 1,搭配 getFileIcon() 使用。

LARGE

代表 48x48 (Linux) 或 32x32 (Windows) 大图标,值为 2,搭配 getFileIcon() 使用。

custom protocol 扩展

create(protocol, path)

创建一个名为 protocol 的自定义协议类型,path 代表关联的程序。创建成功返回 true,否则返回 false。

has(protocol)

返回是否存在 protocol 所指的自定义协议类型。

delete(protocol)

删除 protocol 所指的自定义协议类型。删除成功返回 true,否则返回 false。

registry 扩展

registry 扩展的功能都位于构造器 Registry 上。

在使用 registry 扩展之前,可以先了解一下 Windows 注册表的相关内容:http://technet.microsoft.com/en-us/library/a1377b7d-277f-47ba-adde-96ee781be5b3http://msdn.microsoft.com/en-us/library/windows/desktop/ms724871(v=vs.85).aspx

Windows 注册表中的键名不区分大小写。

new Registry([handle, [subkey, [access]]])

构造一个 Registry 对象。共有 4 种构造方式:

  • new Registry(handle)
  • new Registry(handle_hex_string)
  • new Registry(handle, subkey, [access])
  • new Registry(handle_hex_string, subkey, [access])

handle 为一个注册表键 (Key) 的句柄 (handle),即 HKEY,handle_hex_string 为 handle 转换成的 16 进制的字符串。subkey 为要打开的子键的路径,若为空则代表当前主键。access 为可选,代表赋予的权限,参见 Registry Key Security and Access Rights

当所指的 Key 已存在则本操作执行打开键 (OpenKey) 的动作,当所指的 Key 不存在且 access_right 设置了允许创建新键,则本操作会执行创建新键 (CreateKey) 的动作。本操作会在对象内部保存一个系统的 HKEY。

如打开 0x80000000 代表的键,即 HKEY_CLASSES_ROOT:

var Registry = hex.extensions.hex_registry_extension.Registry;
var reg = new Registry('0x80000000');
var Registry = hex.extensions.hex_registry_extension.Registry;
var reg = new Registry('0x80000000', 'SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts', Reg.KEY_READ);

Registry.prototype.close()

关闭一个打开的键,同时对象内部保存的系统的 HKEY 也将会被清空。

Registry.prototype.create(handle, subkey, [access])

在指定的键下创建子键,若 subkey 为空则代表当前主键,若被创建的键已存在则打开它。

var Registry = hex.extensions.hex_registry_extension.Registry;
var reg = new Registry('0x80000000');
reg.create(Reg.HKEY_CLASSES_ROOT, '*');

Registry.prototype.createKey(subkey, [access])

在当前的键下创建子键,若 subkey 为空则代表当前主键,若被创建的键已存在则打开它。

var Registry = hex.extensions.hex_registry_extension.Registry;
var reg = new Registry(Reg.HKEY_CLASSES_ROOT);
reg.create('*', Reg.KEY_ALL_ACCESS);

Registry.prototype.open(handle, subkey, [access])

打开指定的键下的子键,若 subkey 为空则代表当前主键。

Registry.prototype.openKey(subkey, [access])

打开当前的键下的子键,若 subkey 为空则代表当前主键。

Registry.prototype.set(handle)

将传入的 handle 替换当前对象中存放的键的 handle。

var Registry = hex.extensions.hex_registry_extension.Registry;
var reg = new Registry(Reg.HKEY_CLASSES_ROOT);
reg.set(Reg.HKEY_CURRENT_USER);

Registry.prototype.take()

抹去当前对象中存放的键的 handle,包括正在监听的事件。

Registry.prototype.hasValue(value)

判断当前键下是否有指定的键值。

Registry.prototype.getValueCount()

获取当前键下的键值数。

Registry.prototype.getValueNameAt(index)

获取当前键下的指定索引 index 所对应的键值。

Registry.prototype.valid()

判断当前的键是否为一个有效的键。

Registry.prototype.deleteKey(name)

删除当前键下的指定的子键。

Registry.prototype.readValueDW(name)

获得当前键下指定键值中的 DWORD 值。

Registry.prototype.readInt64(name)

获得当前键下指定键值中的 Int64 值。

Registry.prototype.readValue(name)

获得当前键下指定键值中的字符串值。

Registry.prototype.readValues(name)

获得当前键下指定键值中的字符串列表值。

Registry.prototype.writeValue(name, value)

向当前键值下指定键值中写入值,value 可以是整数或者是字符串。

Registry.prototype.startWatching()

开始监听指定的键是否发生了改变,该键必须在打开时设置了 KEY_NOTIFY 权限。

Registry.prototype.hasChanged()

返回当前被监听的键是否发生了改变,若该键未被监听,则始终返回 false。

Registry.prototype.stopWatching()

停止监听指定的键是否发生了改变。

Registry.prototype.isWatching()

判断当前键是否正在被监听。

Registry.prototype.handle()

返回当前对象保存的键的 handle 的 16 进制值字符串。

Registry.prototype.handle2()

返回当前对象保存的键的 handle 的整数值,有可能出现溢出。

Registry.prototype.getRealKeyPath()

返回当前的键在注册表中的真实路径。

Registry.prototype.iterateKeys([iterator])

遍历当前键下的子键,若传入了 iterator (function 类型) 则逐一返回,若参数为空则返回一个数组。

Registry.prototype.iterateValues([iterator])

遍历当前键下的键值,若传入了 iterator (function 类型) 则逐一返回,若参数为空则返回一个数组。

Registry.createFromReservedKey(key)

直接由 key 指定的 handle 创建一个 Registry 对象。key 可以是一个 16 进制值字符串,也可以是 Predefined Keys 字符串。

var Registry = hex.extensions.hex_registry_extension.Registry;
var reg = Reg.createFromReservedKey(Reg.HKEY_CLASSES_ROOT);
var reg = Reg.createFromReservedKey(‘HKEY_CLASSES_ROOT’);
var reg = new Registry(Reg.HKEY_CLASSES_ROOT);
// 上面三行等效

Registry.iterateKeys(handle, [subkey, [iterator]])

功能与 Registry.prototype.iterateKeys 类似,第一个参数为一个 Registry 对象。

可以设置第二个 subkey 参数指定一个子键。

Registry.iterateValues(handle, [subkey, [iterator]])

功能与 Registry.prototype.iterateValues 类似,第一个参数为一个 Registry 对象。

可以设置第二个 subkey 参数指定一个子键。

Registry.getRealKeyPath(handle)

功能与 Registry.prototype.getRealKeyPath 类似,第一个参数为一个 Registry 对象。

Registry Key Security and Access Rights

  • Registry.KEY_QUERY_VALUE
  • Registry.KEY_SET_VALUE
  • Registry.KEY_CREATE_SUB_KEY
  • Registry.KEY_ENUMERATE_SUB_KEYS
  • Registry.KEY_NOTIFY
  • Registry.KEY_CREATE_LINK
  • Registry.KEY_WOW64_32KEY
  • Registry.KEY_WOW64_64KEY
  • Registry.KEY_WOW64_RES
  • Registry.KEY_READ
  • Registry.KEY_WRITE
  • Registry.KEY_EXECUTE
  • Registry.KEY_ALL_ACCESS

详细信息请参见:http://msdn.microsoft.com/en-us/library/windows/desktop/ms724878(v=vs.85).aspx

Predefined Keys

  • Registry.HKEY_CLASSES_ROOT
  • Registry.HKEY_CURRENT_USER
  • Registry.HKEY_LOCAL_MACHINE
  • Registry.KEY_ENUMERATE_SUB_KEYS
  • Registry.HKEY_USERS
  • Registry.HKEY_PERFORMANCE_DATA
  • Registry.HKEY_PERFORMANCE_TEXT
  • Registry.HKEY_PERFORMANCE_NLSTEXT
  • Registry.HKEY_CURRENT_CONFIG
  • Registry.HKEY_DYN_DATA
  • Registry.HKEY_CURRENT_USER_LOCAL_SETTINGS

详细信息请参见:http://msdn.microsoft.com/en-us/library/windows/desktop/ms724836(v=vs.85).aspx

file association 扩展

create(info)

创建一个自定义文件类型。info 是一个对象,包含以下信息:

  • extension
  • prog_id
  • description
  • content_type
  • perceived_type
  • icon_path
  • icon_index
  • open_command
  • open_command_arguments
  • clsid
  • cur_ver
  • friendly_type_name

关于 Windows 文件类型注册,请参见:http://msdn.microsoft.com/en-us/library/windows/desktop/cc144104(v=vs.85).aspx

var FA = hex.extensions.hex_file_association_extension;
FA.create({
  extension: 'test',
  prog_id: 'My.Test',
  description: 'My test file type',
  icon_path: process.execPath,
  icon_index: 0,
  open_command: process.execPath,
  open_command_arguments: '%1'
});

update(info)

暂时与 create 一致。

delete(ext)

删除指定的扩展名的文件类型,ext 可以带“.”,也可以不带“.”。

isExtensionExist(ext)

判断指定的扩展名在注册表中是否已被注册。

isProgIdExist(ext)

判断指定的 ProgId 在注册表中是否已被注册。

getShellOpenCommandByExtension(ext)

通过指定的扩展名获取可以打开它的命令列表。

getShellOpenCommandByProgId(prog_id)

通过指定的 ProgId 获取可以打开它的命令列表。

getExtensionProgId(ext)

通过指定的扩展名获取其 ProgId。

getOpenWithProgIds(ext)

通过指定的扩展名获取其对应的已被注册的 ProgId。

getOpenWithList(ext)

通过指定的扩展名获取其其对应的已被注册的打开方式列表。

isInOpenWithProgIds(ext, prog_id)

判断一个扩展名是否与指定的 ProgId 相关联。

isInShellNew(ext)

判断一个扩展名是否在“新建”列表中。

appendToOpenWithProgId(ext, prog_id)

将一个 ProgId 追加到 ext 指定的扩展名的打开方式列表中。

removeFromOpenWithProgId(ext, prog_id)

将一个 ProgId 从 ext 指定的扩展名的打开方式列表中移除。

appendToShellNew(ext, path, is_null_file)

将一个 ext 指定的扩展名追加到“新建”列表中。当 is_null_file 为 false 时,path 代表新建文件的路径。

removeFromShellNew(ext)

将一个 ext 指定的扩展名从“新建”列表中移除。

getShellNewList(ext)

获取“新建”列表。

registerMuiCache(path, title)

注册 MUI Cache,path 为关联的可执行文件路径,title 为指定的标题,这将会影响打开方式列表中的项目显示名。

getRegisteredMuiCacheList()

获取 MUI Cache,返回一个对象。

getDefaultIcon(ext)

获取指定扩展名的图标路径及 index。

getDescription(ext)

获取指定扩展名的描述信息。