*****************************************************************
***                Hotkeys AkelPad plugin v6.5                ***
*****************************************************************

2008-2016 Shengalts Aleksander aka Instructor (Shengalts@mail.ru)


*** 描述 ***

指定用户热键。


*** 函数 ***

Hotkeys::Main
主函数插件。


*** 语法 ***

变量:
  %f 活动文件
  %d 活动文件所在目录
  %a AkelPad 所在目录
  %% 符号 %
  %系统变量%

方法:
  [Command() | Call() | +Call() | Exec() | OpenFile() | SaveFile() | Font() | Recode() | Insert()]
    Command(数字)
      Command(4162)
        方法调用 4162 的内部命令。本例子的这个代码用来打开 "转到行..." 对话框。
        查阅 AkelHelp-Eng.htm 或插件源码中的 AkelDLL.h 可了解完整的命令列表。
      Command(0)
        方法禁用热键。
      Command(-1)
        方法调用标准的热键处理，忽略加速表。
    Call("插件::函数"[, 附加参数])
      Call("Scripts::Main")
        方法将调用脚本插件的主函数。
    +Call("插件::函数"[, 附加参数])
      +Call("LineBoard::Main")
        方法将调用 LineBoard 插件的主函数。插件仍会在程序重启后运行。
    Exec("命令行"[, "工作目录"][, 等待][, 窗口样式])
      "命令行"
        命令行字符串。
      "工作目录"
        工作目录字符串。默认值为 ""。
      等待
        等待直到程序结束。1 - 等待, 0 - 立即返回(默认值)。
      窗口样式 (下列之一):
        0 隐藏窗口。
        1 保持原样 (默认值)。
        2 最小化窗口。
        3 最大化窗口。
        6 最小化窗口(非活动)。
        9 非最大化窗口。
        注意: 程序可能会忽略这个参数。
      Exec("notepad.exe")
        方法将调用 记事本。
      Exec(`notepad.exe`)
        方法将调用 记事本。
      Exec('notepad.exe')
        方法将调用 记事本。
      Exec('%windir%\notepad.exe')
        方法将调用 记事本。
      Exec(`rundll32.exe shell32,ShellExec_RunDLL "%f"`, "%d")
        方法将传递用 Windows 关联程序来打开活动文件。
    OpenFile("文件"[, 使用代码页][, 使用BOM])
      "文件"
        要打开的文件。
      使用代码页
        打开代码页。如果 -1 或未指定表示自动检测。
      使用BOM
        文件字节顺序标记。如果 -1 或未指定表示自动检测。
      OpenFile("C:\File.txt", 65001, -1)
        方法将使用 UTF-8 代码页打开文件。
    SaveFile("文件"[, 使用代码页][, 使用BOM])
      "文件"
        保存当前的文档到指定的文件名。
      使用代码页
        代码页。如果 -1 或未指定表示将会使用当前的代码页。
      使用BOM
        字节顺序标记。1 表示存在，0 表示不存在，-1 表示未指定将会使用当前的 BOM。
      SaveFile("C:\File.txt", 65001, 0)
        方法将使用无 BOM 的 UTF-8 代码页保存文件。
    Font("字体", 字形, 大小)
      "字体"
        字体, 例如："Courier". "" 表示不改变。
      字形 (下列之一):
        0  忽略.
        1  常规.
        2  粗体.
        3  斜体.
        4  粗斜体.
      大小
        字体大小. 0 表示不改变。
      Font("Courier", 4, 10)
        方法将设置 Courier 粗斜体，大小 10 pt.
    Recode(源编码, 目标编码)
      源编码
      来源代码页。值为 -1 表示自动检测。
      目标编码
      目标代码页。值为 -1 表示自动检测。
      Recode(1252, 437)
        方法将重新编码文字的代码页从 1252 到 437。
    Insert("文字"[, 转义符序列])
      "文字"
        要插入的文字。
      转义符序列:
        0 - "文字" 不包含转义符序列 (默认值)。
        1 - "文字" 包含转义符序列。
           转义符序列集与程序的查找/替换对话框的相同，并且:
           "\s" - 将替换为编辑窗口中的选定区域的文字；
           "\|" - 设置插入点的位置在插入文本之后。
      Insert("一些字符串")
        方法将用指定的文字替换选定区域。
      Insert("<B>\s</B>", 1)
        方法将围起选定区域。
      Insert("\[0031 0032 0033]", 1)
        方法将替换选定区域为 "123"。

示例:
  "重新编码选定区域" Command(4182)
  "" Command(4182)
  "排序行" Call("Format::LineSortStrAsc")
  -"拼写检查" Call("Scripts::Main", 1, "SpellCheck.js", "")
  "语法高亮显示" +Call("Coder::Highlight")
  "注册表编辑器" Exec("regedit.exe")


*** 外部调用 ***

Call("Hotkeys::Main", 1, HOTKEY, *BOOL, *NAME, NAMELENGTH)
  参数:
    1
      检查插件中存在的热键。在 Scripts 插件中使用。
    HOTKEY
      热键码。
    *BOOL
      到一个 BOOL 变量的指针。可以为 NULL。
    *NAME
      指针指向一个接收热键名称的缓存。可以为 NULL。
    NAMELENGTH
      NAME 可以接收的最大符号数。
  例:
    WScript.Echo(GetHotkeyName(118));

    function GetHotkeyName(nHotkey)
    {
      var pHotkeyName="";
      var lpHotkeyName;

      if (lpHotkeyName=AkelPad.MemAlloc(256 * 2 /*sizeof(wchar_t)*/))
      {
        AkelPad.CallW("Hotkeys::Main", 1, nHotkey, 0, lpHotkeyName, 256);
        pHotkeyName=AkelPad.MemRead(lpHotkeyName, 1 /*DT_UNICODE*/);
        AkelPad.MemFree(lpHotkeyName);
      }
      return pHotkeyName;
    }

Call("Hotkeys::Main", 10)
  参数:
    10
      无对话框地启动/停止 插件。

