*****************************************************************
***                   HexSel AkelPad plugin v7.2              ***
*****************************************************************

2006-2018 Shengalts Aleksander aka Instructor (Shengalts@mail.ru)


*** 描述 ***

转换文本为 16/10/8 进制码，反之亦然。


*** 函数 ***

HexSel::Main
主对话框。


*** 外部调用 ***

Call("HexSel::Main", 1, FLAGS, "PREFIX", "SUFFIX", "INPUT", INPUTLEN, INPUTCODEPAGE, **OUTPUT, *OUTPUTLEN)
  参数:
    1
      转换选定区域或指定文本。
    FLAGS (下列数字之和):
       1  文本转换为 16 进制码。
       2  16 进制码转换为文本。
       4  单字节转换 (Ansi)。
       8  双字节转换 (Unicode)。
      16  选择转换结果。
     256  十进制转换。
     512  八进制转换。
     4096  仅转换到输出窗口。
     默认值: 8+16=24。

    "PREFIX"
      在符号代码之前的字串。默认情况使用当前设置。
    "SUFFIX"
      在符号代码之后的字串。默认情况使用当前设置。
    "INPUT"
      要转换的文本。
    INPUTLEN
      文本长度 (默认值为 -1)。如果值为 -1，文本字符串将在遇到 NULL 符号时终止。
    INPUTCODEPAGE (for Win9x/Me)
      要转换文本的代码页。默认使用 ANSI 系统代码页。
    **OUTPUT
      指针指向一个接收转换结果的缓存。字串类型为 Unicode。
    *OUTPUTLEN
      指针指向一个接收转换结果的字符数的变量。
  备注
    如果未指定标记 1 和 2，将使用文本转换的自动方向。
    在 Scripts 插件中使用 OUTPUT 参数之后，必须使用 AkelPad.MemFree 来释放。
  例，转换选定区域 (1+4+16=21):
    Call("HexSel::Main", 1, 21, "\x", "")
  例，转换文本并粘贴到编辑窗口 (8+16=24):
    Call("HexSel::Main", 1, 24, "\x", "", "MyText")
  例，获得转换结果 (脚本):
    WScript.Echo(GetHex("MyText", "", ""));

    function GetHex(pInput, pPrefix, pSuffix)
    {
      var pOutput="";
      var lpOutput;
      var lpOutputLen;
      var lpOutputPtr;

      if (pInput)
      {
        if (lpOutput=AkelPad.MemAlloc(_X64?8:4 /*sizeof(wchar_t *)*/))
        {
          AkelPad.Call("HexSel::Main", 1, 9 /*1+8*/, pPrefix, pSuffix, pInput, pInput.length, 0, lpOutput);
          lpOutputPtr=AkelPad.MemRead(lpOutput, 2 /*DT_QWORD*/);
          pOutput=AkelPad.MemRead(lpOutputPtr, 1 /*DT_UNICODE*/);
          AkelPad.MemFree(lpOutputPtr);
          AkelPad.MemFree(lpOutput);
        }
      }
      return pOutput;
    }

Call("HexSel::Main", 2, FLAGS, "PREFIX", "SUFFIX", ANSICODEPAGE, UNICODECODEPAGE, "INPUT", INPUTLEN, INPUTCODEPAGE, **OUTPUT, *OUTPUTLEN)
  参数:
    2
      与 1 相同，但有更多的参数: ANSICODEPAGE、UNICODECODEPAGE。
    ANSICODEPAGE
      对于单字节转换的代码页 (Ansi)。
      如果为 -1，自动选择代码页。
      如果为 -2，使用当前插件设置。
      默认值: -2。
    UNICODECODEPAGE
      对于双字节转换的代码页 (Unicode)。
      如果为 -2，使用当前插件设置。
      默认值: -2。
