Maye Lite Script 基于 JavaScript ,支持 JavaScript 98% 以上的语法。

!!!每个脚本实例中必须包含 mz.exit(); 退出命令,否则脚本实例将会一存在。


简介

Maye Lite Script Framework , 采用多线程调用多进程执行方式(开启minSpareChildProcess),与同类不同之处在于采用不调用退出命令不退自动退出的方式,该方式可随意操控脚本在想要的时候完全退出并释放资源。


代码编辑器

附加快捷键
    Ctrl+S          保存,子窗口生效(以便及时调试使用)
    Ctrl+Alt+Z      自动换行
    Ctrl+D          复制

结构体与常量

// 此处为方便辨别以cpp方式展现,实际使用时自行转换为js方式

const int    NULL    = 0;       // int 类型空值
const string NULLSTR = "";      // string 类型空值
const int    S_OK    = 0;

struct POINT {
    int x;
    int y;
};
struct RECT {
    int left;
    int top;
    int right;
    int bottom;
};
struct SIZE {
    int cx;
    int cy;
};

基础

exit()

// void exit();
// 用作退出脚本实例并释放内存,每个脚本都应存在该命令,否则脚本实例将一直存在并占用内存
mz.exit();

Delay()

// void Delay(int ms);
// 延时,延时执行后续命令
// @param int ms 延迟时间(毫秒)
mz.Delay(1000);

Sleep()

// void Sleep(int ms);
// 延时,延时执行后续命令
// @param int ms 延迟时间(毫秒)
mz.Sleep(1000);

按键

SendString()

// void SendString(string str);
// 模拟输入字符串(适用于大部分游戏)
// @param string str 要输入的字符串
mz.SendString('test');

SendVKeyDown()

// void SendVKeyDown(vk virtualKey);
// 模拟按下指定的VirtualKeyCode。
// @param vk virtualKey 要模拟发送的 VirtualKeyCode (VK.XX) 值
mz.SendVKeyDown(VK.A);

SendVKeyUp()

// void SendVKeyUp(vk virtualKey);
// 模拟释放指定的VirtualKeyCode。
// @param vk virtualKey 要模拟发送的 VirtualKeyCode (VK.XX) 值
mz.SendVKeyUp(VK.A);

SendVKey()

// void SendVKey(vk virtualKey);
// 模拟按下并释放指定的VirtualKeyCode。
// 执行方式为:按下->延时50ms->放开
// @param vk virtualKey 要模拟发送的 VirtualKeyCode (VK.XX) 值
mz.SendVKey(VK.A);

SendVKey2()

// void SendVKey2(vk virtualKey);
// 同SendVKey,但此函数执行按下后无延时
// 执行方式为:按下->放开
// @param vk virtualKey 要模拟发送的 VirtualKeyCode (VK.XX) 值
mz.SendVKey2(VK.A);

SendModifiedVKeys()

// void SendModifiedVKeys(dynamic Modifiers, dynamic Keys);
// 模拟按下组合键,如Ctrl+S,Win+E等。按住修饰键,发送按键,然后释放修饰键。(PS: 其他几个Ex结尾的也支持修饰键与按键一起发送🤣)
// 执行方式为:按下->延时50ms->放开
// @param dynamic Modifiers VirtualKeyCode 修饰符值的单个(VK.XX)或数组([VK.XX,VK.XX])。修饰符包括Control,Alt,Shift和Win键。
// @param dynamic Keys      在按下修饰键后要发送的 VirtualKeyCode 值,可以是单个(VK.XX)或数组([VK.XX,VK.XX])。
mz.SendModifiedVKeys([VK.LCONTROL,VK.LSHIFT],[VK.K]);

SendVKeyDownEx()

// void SendVKeyDownEx(dynamic Keys);
// 同SendVKeyDown
// @param dynamic Keys 要发送的 VirtualKeyCode 值,可以是单个(VK.XX)或数组([VK.XX,VK.XX])。
mz.SendVKeyDownEx([VK.M, VK.Z]);

SendVKeyUpEx()

// void SendVKeyUpEx(dynamic Keys);
// 同SendVKeyUp
// @param dynamic Keys 要发送的 VirtualKeyCode 值,可以是单个(VK.XX)或数组([VK.XX,VK.XX])。
mz.SendVKeyUpEx([VK.M, VK.Z]);

SendVKeyEx()

// void SendVKeyEx(dynamic Keys);
// 同SendVKey
// 执行方式为:按下->延时50ms->放开
// @param dynamic Keys 要发送的 VirtualKeyCode 值,可以是单个(VK.XX)或数组([VK.XX,VK.XX])。
mz.SendVKeyEx([VK.M, VK.Z]);

SendVKeyEx2()

// void SendVKeyEx2(dynamic Keys);
// 同SendVKeyEx,但此函数执行按下后无延时
// 执行方式为:按下->放开
// @param dynamic Keys 要发送的 VirtualKeyCode 值,可以是单个(VK.XX)或数组([VK.XX,VK.XX])。
mz.SendVKeyEx2([VK.M, VK.Z]);

IsKeyDown()

// bool IsKeyDown(vk virtualKey);
// 如果当前按下指定的键,则返回 true。
// @param vk virtualKey 要检查的 VirtualKeyCode (VK.XX) 值
// @return 按下返回true,否则为false
var isAKeyDown = mz.IsKeyDown(VK.A);

SendAltDown()

// void SendAltDown();
// 模拟按下左Alt键
mz.SendAltDown();

SendAltUp()

// void SendAltUp();
// 模拟释放左Alt键
mz.SendAltUp();

SendControlDown()

// void SendControlDown();
// 模拟按下左Ctrl键
mz.SendControlDown();

SendControlUp()

// void SendControlUp();
// 模拟释放左Ctrl键
mz.SendControlUp();

SendShiftDown()

// void SendShiftDown();
// 模拟按下左Shift键
mz.SendShiftDown();

SendShiftUp()

// void SendShiftUp();
// 模拟释放左Shift键
mz.SendShiftUp();

SendWinDown()

// void SendWinDown();
// 模拟按下左Win键
mz.SendWinDown();

SendWinUp()

// void SendWinUp();
// 模拟释放左Win键
mz.SendWinUp();

鼠标

MouseCilck()

// void MouseCilck(MouseBtn btn, bool isClick, bool isDown);
// 发送鼠标按键信息
// @param MouseBtn btn      按键信息(MouseBtn.XX)
// @param bool     isClick  是否为单击(默认:true),如果该值为true则跳过isDown
// @param bool     isDown   是否按下(默认:false),true按下,false弹起,如果isClick为true则该值失效
mz.MouseCilck(MouseBtn.Left);

MouseMove()

// void MouseMove(int x, int y, bool isAbsolute);
// 移动鼠标
// @param int  x          水平
// @param int  y          垂直
// @param bool isAbsolute 是否为绝对值,如果为true,则xy相对于桌面左上角,否则xy相对于鼠标当前坐标
mz.MouseMove(-10);

MouseWhell()

// void MouseWhell(int amount, bool isHorizontally);
// 鼠标滚轮
// @param int  amount         滚动量(正负值)
// @param bool isHorizontally 是否水平滚动
mz.MouseWhell(-3);

IsButtonDown()

// bool IsButtonDown(MouseBtn btn);
// 如果当前按下指定的鼠标键,则返回 true。
// @param MouseBtn btn 要检查的 VirtualKeyCode (MouseBtn.XX) 值
// @return 按下返回true,否则为false
var isLeftMouseDown = mz.IsButtonDown(MouseBtn.Left);

GetCurrentMousePoint()

// POINT GetCurrentMousePoint();
// 返回包含当前鼠标位置坐标的点
// @return 返回xy坐标
var currentMouseLocation = mz.GetCurrentMousePoint();

系统

GetTickCount()

// int GetTickCount();
// 检索自系统启动以来已用过的毫秒数,最长为 49.7 天。
// @return 返回值是自系统启动以来已用过的毫秒数。
var r = mz.GetTickCount();

GetTickCount64()

// string GetTickCount64();
// 检索自系统启动以来已用过的毫秒数。
// @return 返回值是自系统启动以来已用过的毫秒数。
var r = mz.GetTickCount64();

QueryRecycleBin()

// int EmptyRecycleBin(string RootPath);
// 查询指定驱动器回收站上的项目数量。
// @param string RootPath  回收站所在的根驱动器的路径,可以包含根驱动器、文件夹和子文件夹(如:C:\windows\system)。如果此值为空或NULLSR,则查询所有驱动器上的所有回收站。
// @return 成功返回项目数,失败返回 0(成功也可能返回0🤣)
var r = mz.QueryRecycleBin('D:\\');

// 查询所有
var r = mz.QueryRecycleBin();

EmptyRecycleBin()

// int EmptyRecycleBin(string RootPath);
// 清空指定驱动器上的回收站。详情参照微软文档
// @param string RootPath  回收站所在的根驱动器的路径,可以包含根驱动器、文件夹和子文件夹(如:C:\windows\system)。如果此值为空或NULLSR,则清空所有驱动器上的所有回收站。
// @return 成功返回S_OK,失败返回 HRESULT 错误代码
var r = mz.EmptyRecycleBin('D:\\');

// 清空所有
var r = mz.EmptyRecycleBin();

ExpandEnvironmentVariables()

// int ExpandEnvironmentVariables(string stringToExpand);
// 展开环境变量字符串,同时支持maye的参数变量。
// @param string stringToExpand  要展开的环境变量字符串。
// @return 成功返回展开后的字符串,失败返回 stringToExpand
var expanded = mz.ExpandEnvironmentVariables('%OS%');

WinExecEx()

// void WinExecEx(string cmdLine, int cmdShow);
// 运行指定程序,该函数原型为 CreateProcess 二次封装而非 WinExec
// @param string cmdLine 要执行的程序命令行 (加入参数)
// @param int cmdShow 不懂可忽略,详情参照微软文档
mz.WinExecEx('C:\\Windows\\system32\\notepad.exe');

Run()

// int Run(RunType Mode, string path, string param, string dir, bool isThread, bool waitRunComplete, bool ignoreError);
// 展开环境变量字符串,同时支持maye的参数变量。
// @param RunType Mode          运行方式 (RunType.XX)
// @param string path           目标
// @param string param          启动参数
// @param string dir            起始位置
// @param bool isThread         是否通过多线程执行 (默认: true)
// @param bool waitRunComplete  等待程序退出后返回 (默认: false)
// @param bool ignoreError      忽略错误警告 (默认: false)
// @return 成功返回 1 如果未开启多线程执行则返回对应的进程PID,失败返回 0
var r = mz.Run(RunType.default, '%ComSpec%', '', 'C:\\', true, false, false);

RunCmeLine()

// void RunCmeLine(string cmdLine, bool isShow, bool isExit);
// 运行命令行
// @param string cmdLine 要执行的命令行
// @param bool isShow 是否显示窗口(默认:true)
// @param bool isExit 执行完毕是否退出(默认:false不退出)
mz.RunCmeLine('ping 127.0.0.1');

RunCmeLineEx()

// object RunCmeLineEx(string cmdLine);
// 运行命令行,并等待执行完毕。该命令会卡住主线程直道执行完毕。
// @param string cmdLine 要执行的命令行
// @return object{
//              code: -1,       执行返回代码,-1表示执行失败,其他值为命令返回值,尽量别用这个判断是否成功
//              out: '',        命令行输出字符串
//              err: ''         错误信息
//         }
var ret = mz.RunCmeLine('ping 127.0.0.1');

RunItem()

// void RunItem(int id);
// 运行 Maye 项目
// @param int id 项目id,右键编辑标题栏里面的数值就是
mz.RunItem(1001);

GetClipboardText()

// string GetClipboardText();
// 获取剪贴板文本
// @return 成功返回剪辑板文本,失败返回空
var r = mz.GetClipboardText();

SetClipboardText()

// bool SetClipboardText(string text);
// 设置剪贴板文本
// @param string text 欲设置的文本
// @return 成功返回 true,失败返回 false
var r = mz.SetClipboardText('test');

RegisterHotKey()

// bool RegisterHotKey(int id, int fsModifiers, vk vk);
// 注册快捷键(仅多进程生效)。详情参照微软文档
// @param int id          热键的标识符
// @param int fsModifiers 功能键 (MOD_XX)
// @param vk vk           主热键 (VK.XX)
// @return 成功返回 true,失败返回 false
var r = mz.RegisterHotKey(6, MOD_ALT | MOD_NOREPEAT, VK.A);

// 热键例子
mz.RegisterHotKey(6, MOD_ALT | MOD_NOREPEAT, VK.A);// ALT+A
function event_hotkey(id){
    if(id == 6) {
        mz.MsgBox('HotKey-6');
    }
}

UnregisterHotKey()

// bool UnregisterHotKey(int id);
// 卸载快捷性(仅多进程生效)。详情参照微软文档
// @param int id 热键的标识符
// @return 成功返回 true,失败返回 false
var r = mz.UnregisterHotKey(6);

窗口

FindWindow()

// int FindWindow(string ClassName, string WindowName);
// 检索顶级窗口的句柄,该窗口的类名称和窗口名称与指定的字符串匹配。 此函数不搜索子窗口。 此函数不执行区分大小写的搜索。详情参照微软文档
// @param string ClassName  类名    (不使用则传递空字符串)
// @param string WindowName 窗口名  (不使用则传递空字符串)
// @return 成功返回窗口句柄,失败返回0
var hWnd = mz.FindWindow('', 'Maye Lite');

FindWindowEx()

// int FindWindowEx(int hWndParent, int hWndChildAfter, string ClassName, string WindowName);
// 检索一个窗口的句柄,该窗口的类名和窗口名称与指定的字符串匹配。 该函数搜索子窗口,从指定子窗口后面的子窗口开始。 此函数不执行区分大小写的搜索。详情参照微软文档
// @param int hWndParent     父窗口句柄  (不使用则传递0)
// @param int hWndChildAfter 子窗口句柄  (不使用则传递0)
// @param string ClassName   类名       (不使用则传递空字符串)
// @param string WindowName  窗口名     (不使用则传递空字符串)
// @return 成功返回窗口句柄,失败返回0
var hWnd = mz.FindWindowEx(0, 0, '', 'Maye Lite');

GetParent()

// int GetParent(int hWnd);
// 检索指定窗口的父或所有者的句柄。详情参照微软文档
// @param int hWnd     窗口句柄
// @return 成功返回窗口句柄,失败返回0
var hWnd = mz.GetParent(68214);

GetAncestor()

// int GetAncestor(int hWnd, int gaFlags);
// 检索指定窗口的上级句柄。详情参照微软文档
// @param int hWnd     窗口句柄。 如果此参数是桌面窗口,则该函数返回 0
// @param int gaFlags  可选值:(默认:3)
//                            1: 检索父窗口。 这不包括所有者,因为它与 GetParent 函数一样。
//                            2: 通过走父窗口链来检索根窗口。
//                            3: 通过走 GetParent 返回的父窗口和所有者窗口链来检索拥有的根窗口。
// @return 成功返回窗口句柄,失败返回0
var hWnd = mz.GetAncestor(68214);

GetDesktopWindow()

// int GetDesktopWindow();
// 检索桌面窗口的句柄。详情参照微软文档
// @return 成功返回句柄,失败返回0
var hWnd = mz.GetDesktopWindow();

WindowFromPoint()

// int WindowFromPoint(int x, int y);
// 检索包含指定点的窗口的句柄。详情参照微软文档
// @param int  x          水平
// @param int  y          垂直
// @return 成功返回句柄,失败返回0
var hWnd = mz.WindowFromPoint(100,100);

// 如获取鼠标处窗口句柄:
var pt = mz.GetCurrentMousePoint();
var hWnd = mz.WindowFromPoint(pt.x,pt.y);

GetDlgCtrlID()

// int GetDlgCtrlID(int hWnd);
// 检索指定控件的ID。详情参照微软文档
// @param int hWnd 控件的句柄
// @return 成功返回控件ID,失败返回0
var id = mz.GetDlgCtrlID(68214);

GetDlgItem()

// int GetDlgItem(int hDlg, int nIDDlgItem);
// 检索指定对话框中控件的句柄。详情参照微软文档
// @param int hDlg       父句柄
// @param int nIDDlgItem 要检索的控件的ID
// @return 成功返回句柄,失败返回0
var hWnd = mz.GetDlgItem(68214, 220);

GetWindowRect()

// RECT GetWindowRect(int hWnd);
// 检索指定窗口的边界矩形的尺寸。尺寸以相对于屏幕左上角的屏幕坐标提供。详情参照微软文档
// @param int hWnd 窗口句柄
// @return 成功返回RECT结构体,失败返回false
var rc = mz.GetWindowRect(68214);

GetClientRect()

// RECT GetClientRect(int hWnd);
// 检索窗口工作区的坐标。 客户端坐标指定工作区的左上角和右下角。由于客户端坐标相对于窗口工作区的左上角,左上角的坐标 (0,0) 。详情参照微软文档
// @param int hWnd 窗口句柄
// @return 成功返回RECT结构体,失败返回false
var rc = mz.GetClientRect(68214);

IsChild()

// bool IsChild(int hWndParent, int hWnd);
// 判断一个窗口和另一窗口是否为父子关系。详情参照微软文档
// @param int hWndParent    父窗口句柄
// @param int hWnd          要测试的窗口句柄
// @return 是子窗口返回true,否则返回false
var is = mz.IsChild(68214, 393850);

IsWindow()

// bool IsWindow(int hWnd);
// 确定指定的窗口句柄是否有效。详情参照微软文档
// @param int hWnd 窗口句柄
// @return 成功返回true,失败返回false
var is = mz.IsWindow(68214);

IsWindowVisible()

// bool IsWindowVisible(int hWnd);
// 确定指定窗口的可见性状态。详情参照微软文档
// @param int hWnd 窗口句柄
// @return 成功返回true,失败返回false
var is = mz.IsWindowVisible(68214);

IsWindowTop()

// bool IsWindowTop(int hWnd);
// 窗口是否置顶
// @param int hWnd 窗口句柄
// @return 置顶返回true,否则返回false
var is = mz.IsWindowTop(68214);

IsWindowEnabled()

// bool IsWindowEnabled(int hWnd);
// 判断指定窗口的是否被禁止。详情参照微软文档
// @param int hWnd 窗口句柄
// @return 未禁止返回true,禁止返回false
var is = mz.IsWindowEnabled(68214);

IsWindowActive()

// bool IsWindowActive(int hWnd);
// 窗口是否激活
// @param int hWnd 窗口句柄
// @return 激活返回true,未激活返回false
var is = mz.IsWindowActive(68214);

IsIconic()

// bool IsIconic(int hWnd);
// 窗口是否最小化。详情参照微软文档
// @param int hWnd 窗口句柄
// @return 最小化返回true,否则返回false
var is = mz.IsIconic(68214);

IsZoomed()

// bool IsZoomed(int hWnd);
// 窗口是否最大化。详情参照微软文档
// @param int hWnd 窗口句柄
// @return 最大化返回true,否则返回false
var is = mz.IsZoomed(68214);

IsWindowRespond()

// bool IsWindowRespond(int hWnd);
// 窗口是否响应
// @param int hWnd
// @return 成功返回true(窗口可正常响应),失败返回false(窗口无响应)
var ret = mz.IsWindowRespond(68214);

ShowWindow()

// bool ShowWindow(int hWnd, int nCmdShow);
// 设置指定窗口的显示状态。详情参照微软文档
// @param int hWnd      窗口句柄
// @param int nCmdShow  可选值:(默认:1)
//                            0: 隐藏窗口并激活另一个窗口。
//                            1: 激活并显示窗口。 如果窗口最小化或最大化,系统会将其还原到其原始大小和位置。 首次显示窗口时,应用程序应指定此标志。
//                            2: 激活窗口并将其显示为最小化窗口。
//                            3: 激活窗口并显示最大化的窗口。
//                            4: 在其最近的大小和位置显示一个窗口。 此值类似于 SW_SHOWNORMAL,但窗口未激活。
//                            5: 激活窗口并以当前大小和位置显示窗口。
//                            6: 最小化指定的窗口,并按 Z 顺序激活下一个顶级窗口。
//                            7: 将窗口显示为最小化窗口。 此值类似于 SW_SHOWMINIMIZED,但窗口未激活。
//                            8: 以当前大小和位置显示窗口。 此值类似于 SW_SHOW,但窗口未激活。
//                            9: 激活并显示窗口。 如果窗口最小化或最大化,系统会将其还原到其原始大小和位置。 还原最小化窗口时,应用程序应指定此标志。
//                            10: 根据启动应用程序的程序传递给 CreateProcess 函数的 STARTUPINFO 结构中指定的SW_值设置显示状态。
//                            11: 即使拥有窗口的线程未响应,也会最小化窗口。 仅当将窗口从不同的线程最小化时,才应使用此标志。
// @return 如果窗口以前可见返回true,如果窗口之前已隐藏返回false
var is = mz.ShowWindow(68214, 0);

ShowWindowAsync()

// bool ShowWindowAsync(int hWnd, int nCmdShow);
// 设置窗口的显示状态,而无需等待操作完成。详情参照微软文档
// @param int hWnd      窗口句柄
// @param int nCmdShow  参考 ShowWindow 说明
// @return 如果操作成功返回true,否则返回false
var is = mz.ShowWindowAsync(68214, 0);

SetParent()

// int SetParent(int hWndChild, int hWndNewParent);
// 更改指定子窗口的父窗口。详情参照微软文档
// @param int hWndChild      窗口句柄
// @param int hWndNewParent  新父窗口的句柄,如果此参数为0,桌面将成为新的父窗口
// @return 成功返回上一个父窗口的句柄,否则返回0
var hWnd = mz.SetParent(68214, 0);

GetFocus()

// int GetFocus();
// 如果窗口附加到调用线程的消息队列,则检索具有键盘焦点的窗口的句柄。详情参照微软文档
// @return 返回值是具有键盘焦点的窗口的句柄。 如果调用线程的消息队列没有与键盘焦点关联的窗口,则返回值为 NULL。
var hWnd = mz.GetFocus();

SetFocus()

// int SetFocus(int hWnd);
// 将键盘焦点设置为指定的窗口。 该窗口必须附加到调用线程的消息队列。详情参照微软文档
// @param int hWnd      窗口句柄
// @return 成功返回上一个焦点句柄,否则返回0
var hWnd = mz.SetFocus(68214);

GetActiveWindow()

// int GetActiveWindow();
// 检索附加到调用线程的消息队列的活动窗口的窗口句柄。详情参照微软文档
// @return 成功返回句柄,失败返回0
var hWnd = mz.GetActiveWindow();

SetActiveWindow()

// int SetActiveWindow(HWND hWnd);
// 激活窗口。 窗口必须附加到调用线程的消息队列。详情参照微软文档
// @param HWND hWnd 要激活的顶级窗口的句柄。
// @return 成功返回句柄,失败返回0
var hWnd = mz.SetActiveWindow(68214);

GetForegroundWindow()

// int GetForegroundWindow();
// 检索前台窗口的句柄, (用户当前正在使用的窗口) 。详情参照微软文档
// @return 成功返回句柄,失败返回0
var hWnd = mz.GetForegroundWindow();

SetForegroundWindow()

// bool SetForegroundWindow(int hWnd);
// 将创建指定窗口的线程引入前台并激活窗口。 键盘输入将定向到窗口,并为用户更改各种视觉提示。 系统向创建前台窗口的线程分配略高于其他线程的优先级。详情参照微软文档
// @param int hWnd      窗口句柄
// @return 如果窗口被带到前台返回true,否则返回false
var hWnd = mz.SetForegroundWindow(68214);

GetClassName()

// string GetClassName(int hWnd);
// 检索指定窗口所属的类的名称。详情参照微软文档
// @param int hWnd      窗口句柄
// @return 成功返回类名,否则返回空字符串
var className = mz.GetClassName(68214);

GetWindowText()

// string GetClassName(int hWnd);
// 如果指定窗口有标题栏,则将获取其文本。详情参照微软文档
// @param int hWnd      窗口句柄
// @return 成功返回标题字符串,否则返回空字符串
var str = mz.GetWindowText(68214);

SetWindowText()

// bool SetWindowText(int hWnd, string str);
// 更改指定窗口标题栏的文本。详情参照微软文档
// @param int hWnd      窗口句柄
// @param string str    新标题
// @return 成功返回true,否则返回false
var str = mz.SetWindowText(68214, 'test');

GetSCText()

// string GetSCText(int hWnd);
// 获取控件内容。
// @param int hWnd      窗口句柄
// @return 成功返回标题字符串,否则返回空字符串
var str = mz.GetSCText(68214);

SetSCText()

// bool SetSCText(int hWnd, string str);
// 设置控件内容。
// @param int hWnd      窗口句柄
// @param string str    新内容
// @return 成功返回true,否则返回false
var str = mz.SetSCText(68214, 'test');

WindowTopMost()

// void WindowTopMost(int hWnd, bool isTop);
// 设置窗口置顶状态。
// @param int hWnd      窗口句柄
// @param bool isTop    是否置顶
mz.WindowTopMost(68214, true);

MoveWindow()

// void MoveWindow(int hWnd, int x, int y);
// 移动窗口。
// @param int hWnd      窗口句柄
// @param int x         新的左边距离
// @param int y         新的顶边距离
mz.MoveWindow(68214, 100, 10);

SetWindowSize()

// void SetWindowSize(int hWnd, int cx, int cy);
// 设置窗口尺寸。
// @param int hWnd      窗口句柄
// @param int cx        新的宽度
// @param int cy        新的高度
mz.SetWindowSize(68214, 100, 100);

SetWindowPos()

// bool SetWindowPos(int hWnd, int hWndInsertAfter, int x, int y, int cx, int cy, int uFlags);
// 详情参照微软文档
// @param int hWnd
// @param int hWndInsertAfter
// @param int x
// @param int y
// @param int cx
// @param int cy
// @param int uFlags
// @return
var is = mz.SetWindowPos(68214, 0, 10, 10, 0, 0, 4 | 1);

GetWindowLongPtr()

// int GetWindowLongPtr(int hWnd, int nIndex);
// 详情参照微软文档
// @param int hWnd
// @param int nIndex
// @return 成功返回请求值,失败返回0
var style = mz.GetWindowLongPtr(68214, -16);

SetWindowLongPtr()

// int SetWindowLongPtr(int hWnd, int nIndex, int dwNewLong);
// 详情参照微软文档
// @param int hWnd
// @param int nIndex
// @param int dwNewLong
// @return 成功返回上一个值,失败返回0
var ret = mz.SetWindowLongPtr(68214, -16, 1417740416);

SendMessage()

// int SendMessage(int hWnd, int Msg, int wParam, int lParam);
// 详情参照微软文档
// @param int hWnd
// @param int Msg
// @param int wParam
// @param int lParam
// @return 返回指定消息处理的结果;这取决于发送的消息。
var ret = mz.SendMessage(68214, 16, 0, 0);

SendNotifyMessage()

// bool SendNotifyMessage(int hWnd, int Msg, int wParam, int lParam);
// 详情参照微软文档
// @param int hWnd
// @param int Msg
// @param int wParam
// @param int lParam
// @return 成功返回true,失败返回false
var ret = mz.SendNotifyMessage(68214, 16, 0, 0);

PostMessage()

// bool PostMessage(int hWnd, int Msg, int wParam, int lParam);
// 详情参照微软文档
// @param int hWnd
// @param int Msg
// @param int wParam
// @param int lParam
// @return 成功返回true,失败返回false
var ret = mz.PostMessage(68214, 16, 0, 0);

UpdateWindow()

// bool UpdateWindow(int hWnd);
// 更新窗口。详情参照微软文档
// @param int hWnd
// @return 成功返回true,失败返回false
var ret = mz.UpdateWindow(68214);

InvalidateRect()

// bool InvalidateRect(int hWnd, bool Erase);
// 更新窗口。详情参照微软文档
// @param int hWnd
// @param bool Erase 处理更新区域时是否要擦除更新区域中的背景
// @return 成功返回true,失败返回false
var ret = mz.InvalidateRect(68214, true);

GetWindowProcessId()

// int GetWindowProcessId(int hWnd);
// 通过窗口句柄获取进程PID
// @param int hWnd 窗口句柄
// @return 成功返回PID,否则返回0
var pid = mz.GetWindowProcessId(68214);

GetCaretRECT()

// dynamic GetCaretRECT();
// 获取插入符号的RECT。
// @return 成功返回RECT,失败返回false
var rc = mz.GetCaretRECT();

进程

GetNameProcessId()

// array GetNameProcessId(string name);
// 通过进程名获取进程PID
// @param string name 进程名
// @return 成功返回进程PID Array,否则返回空 Array
var ret = mz.GetNameProcessId('test.exe');

GetProcessIdName()

// string GetProcessIdName(int PID);
// 通过进程PID获取进程名称
// @param int PID 进程ID
// @return 成功返回进程名,否则返回0
var ret = mz.GetProcessIdName(6553);

GetProcessIdPath()

// string GetProcessIdPath(int PID);
// 通过进程PID获取进程路径
// @param int PID 进程ID
// @return 成功返回进程路径,否则返回空
var ret = mz.GetProcessIdPath(6553);

GetChildProcessId()

// array GetChildProcessId(int PID);
// 通过进程PID获取所有子进程PID
// @param int PID 进程ID
// @return 成功返回子进程ID Array,否则返回空Array
var ret = mz.GetChildProcessId(6553);

GetProcessIdThreads()

// int GetProcessIdThreads(int PID);
// 通过进程PID获取进程使用的线程数
// @param int PID 进程ID
// @return 成功返回线程数,否则返回0
var ret = mz.GetProcessIdThreads(6553);

IsProcessIdExists()

// bool IsProcessIdExists(int PID);
// 判断进程PID是否有效
// @param int PID 进程ID
// @return 有效返回true,否则返回false
var ret = mz.IsProcessIdExists(6553);

TerminateProcess()

// int TerminateProcess(int PID);
// 结束指定进程
// @param int PID 进程ID
// @return 成功返回true,否则返回false
var ret = mz.TerminateProcess(5112);

SuspendProcess()

// void SuspendProcess(int PID, bool state);
// 将指定进程暂停
// @param int PID    进程ID
// @param bool state 状态,true暂停,false恢复
mz.SuspendProcess(5112, true);

GetPriorityClass()

// int GetPriorityClass(int PID);
// 获取进程优先级
// @param int PID 进程ID
// @return 成功返回优先级别(0:高; 1:高于正常; 3: 正常; 4: 低于正常; 5: 低; 2: 实时;),否则返回-1
var ret = mz.GetPriorityClass(5112);

SetPriorityClass()

// bool SetPriorityClass(int PID, int level);
// 设置进程优先级
// @param int PID   进程ID
// @param int level 优先级(0:高; 1:高于正常; 3: 正常; 4: 低于正常; 5: 低; 2: 实时[如果权限不够则会设置为高于正常];)
// @return 成功返回true,否则返回false
var ret = mz.SetPriorityClass(5112);

文件目录

ReadFile()

// string ReadFile(string fileName);
// 读入文件
// @param string fileName 文件名
// @return 成功返回文件内容,失败返回空
var ret = mz.ReadFile('C:\\123.txt');

WriteFile()

// bool WriteFile(string fileName, string str);
// 写到文件
// @param string fileName   文件名
// @param string str        要写出的数据,需要转换为字符串
// @return 成功返回true,失败返回false
var ret = mz.WriteFile('C:\\123.txt', 'test\nabc');

FindFile()

// string FindFile(string fileName, FILE_ATTRIBUTE FileAttributes);
// 寻找文件
// @param string fileName                   文件名或目录名。可以被省略。可以使用多字符 (*) 和单字符 (?) 通配符来指定多重文件。在非首次寻找文件时,参数值必须为空或被省略。
// @param FILE_ATTRIBUTE FileAttributes     要找文件的属性。可以被省略。参数值可以为一个或多个相加。如果省略本参数,默认为搜寻除子目录外的所有文件。
// @return 成功返回文件内容,失败返回空
var ret = mz.FindFile('C:\\*');

// 简单例子(搜索 'D:\123\' 下的所有子目录)
let path = mz.FindFile('D:\\123\\*', FILE_ATTRIBUTE.DIRECTORY),
    out = ''
    ;
while (path != '') {
    out += path + '\n';
    path = mz.FindFile('', FILE_ATTRIBUTE.DIRECTORY);
}
alert(`[${out}]`);

PathFileExists()

// bool PathFileExists(string fileName);
// 判断指定文件或目录的路径是否有效
// @param string fileName 文件名
// @return 成功返回true,失败返回false
var ret = mz.PathFileExists('C:\\123.txt');

GetFileSize()

// int GetFileSize(string fileName);
// 获取文件尺寸,大于4G文件会失去精度
// @param string fileName 文件名
// @return 成功返回文件尺寸,失败返回-1
var ret = mz.GetFileSize('C:\\123.txt');

GetFileSizeEx()

// string GetFileSizeEx(string fileName);
// 获取文件尺寸,支持大文件(该函数返回值为字符串)
// @param string fileName 文件名
// @return 成功返回文件尺寸,失败返回-1
var ret = mz.GetFileSizeEx('C:\\123.txt');

CopyFile()

// bool CopyFile(string ExistingFileName, string NewFileName, bool FailIfExists);
// 将现有文件复制到新文件(不支持目录)。详情参照微软文档
// @param string ExistingFileName   现有文件的名
// @param string NewFileName        新文件的名
// @param bool FailIfExists         存在则不覆盖(默认:false)
// @return 成功返回true,失败返回false
var ret = mz.CopyFile('C:\\1.txt', 'C:\\2.txt');

MoveFile()

// bool MoveFile(string ExistingFileName, string NewFileName, bool FailIfExists);
// 移动现有文件或目录(包括子文件或目录)。详情参照微软文档
// @param string ExistingFileName   现有文件的名
// @param string NewFileName        新文件的名
// @param bool FailIfExists         存在则不覆盖(默认:false)
// @return 成功返回true,失败返回false
var ret = mz.MoveFile('C:\\1.txt', 'D:\\2.txt');

ReNameFile()

// bool ReNameFile(string ExistingFileName, string NewFileName);
// 更改现有文件或目录名称,如果新文件名父路径变更将会执行移动操作
// @param string ExistingFileName   现有文件的名(完整路径)
// @param string NewFileName        新文件的名(完整路径)
// @return 成功返回true,失败返回false
var ret = mz.ReNameFile('C:\\1.txt', 'C:\\2.txt');

DeleteFile()

// bool DeleteFile(string FileName);
// 删除文件(不支持目录)。详情参照微软文档
// @param string FileName 要删除的文件的名
// @return 成功返回true,失败返回false
var ret = mz.DeleteFile('C:\\1.txt');

CreateDirectory()

// bool CreateDirectory(string PathName);
// 创建目录(不支持多级创建)。详情参照微软文档
// @param string PathName 要创建的目录的路径
// @return 成功返回true,失败返回false
var ret = mz.CreateDirectory('C:\\123');

CreateDirectoryEX2()

// bool CreateDirectoryEX2(string PathName);
// 创建多级目录
// @param string PathName 要创建的目录的路径(字符串最大长度为248)
// @return 成功返回true,失败返回false
var ret = mz.CreateDirectoryEX2('C:\\123\\456\\789');

DeleteDirectory()

// bool DeleteDirectory(string PathName);
// 删除目录(同时删除子文件或子目录)
// @param string PathName 要删除的目录的路径
// @return 成功返回true,失败返回false
var ret = mz.DeleteDirectory('C:\\123');

PathIsDirectory()

// bool PathIsDirectory(string PathName);
// 验证路径是否为有效目录。详情参照微软文档
// @param string PathName 目录路径
// @return 成功返回true,失败返回false
var ret = mz.PathIsDirectory('C:\\123');

PathIsDirectoryEmpty()

// bool PathIsDirectoryEmpty(string PathName);
// 确定指定的路径是否为空目录(目录不存在也会返回false)。详情参照微软文档
// @param string PathName 目录路径
// @return 成功返回true,失败返回false
var ret = mz.PathIsDirectoryEmpty('C:\\123');

GetCurrentDirectory()

// string GetCurrentDirectory();
// 获取当前目录(Maye Lite的目录)
// @return 成功返回当前目录(如 C:\123\)
var ret = mz.GetCurrentDirectory();

输入与显示

MsgBox()

// void MsgBox(string msg, string title);
// 显示一个消息框
// @param string msg    消息框内容
// @param string title  消息框标题
mz.MsgBox('msg');

Confirm()

// bool Confirm(string msg, string title);
// 显示一个确认框
// @param string msg    确认框内容
// @param string title  确认框标题
// @return 点击Yes按钮返回true,否则返回false
var ret = mz.Confirm('msg');

InputBox()

// object InputBox(string initialText, string title);
// 显示一个确认框
// @param string initialText 输入框初始字符串
// @param string title       输入框标题
// @return object{
//              code: -1,       执行返回代码,-1表示取消输入,1表示确认输入
//              text: ''        输入的字符串
//         }
var ret = mz.InputBox();

InputBoxEx()

// object InputBoxEx(string initialText, string title, string Msg, int InputMode, bool MultiLineEdit, int MsgHeight, string btnTextOK, string btnTextCancel, int hWnd);
// 显示一个确认框
// @param string initialText    输入框初始字符串
// @param string title          输入框标题
// @param string Msg            提示信息,如果提示信息太长或行数过多,可通过设置MsgHeight来保证全部显示。
// @param int InputMode         输入方式,参数值可以为以下值: 1、输入文本; 2、输入整数; 3、输入小数(未实现); 4、输入密码。
// @param bool MultiLineEdit    是否使用多行编辑框
// @param int MsgHeight         提示信息高度,默认:45
// @param string btnTextOK      确认按钮标题,默认:确认输入(&O)
// @param string btnTextCancel  取消按钮标题,默认:取消(&C)
// @param int hWnd              父窗口句柄
// @return object{
//              code: -1,       执行返回代码,-1表示取消输入,1表示确认输入
//              text: ''        输入的字符串
//         }
var ret = mz.InputBoxEx('初始字符', '标题', '提示信息', NULL, true, 25, '输入(&O)', '取消(&C)', NULL);

HTML窗口(仅多进程生效)

调用 sf.Create() 命令创建窗口后才可调用其他 sf.***() 命令
如果窗口被关闭将立即结束脚本进程。

sf.Create()

// int sf.Create(object val);
// 创建一个窗口,窗口创建后为隐藏状态,需调用 sf.Show() 显示。(该命令限制创建一次)
// 参数值必须与类型完全相等,否则返回-4(参数类型不正确)
// @param object val {
//                  html: '',                   // [string] 默认HTML(body内,后续可通过DOM随意建立)
//                  isUI: false,                // [bool] 是否加载UI库,包含 jQuery(3.5.1),ZUI(1.10.0-标准版)
//                  isTransparent: false,       // [bool] 是否为透明窗口
//                  isTop: false,               // [bool] 是否置顶
//                  IsKillFocuHide: false,      // [bool] 是否失去焦点后隐藏
//                  isMaxBtn: true,             // [bool] 是否显示最大化按钮(不支持透明窗口)
//                  isMinBtn: true,             // [bool] 是否显示最小化按钮(不支持透明窗口)
//                  isSizingBorder: true,       // [bool] 是否为可调边框
//                  isAppWindow: true,          // [bool] 是否在任务栏显示
//                  isDrag: false,              // [bool] 是否接受拖放(需自行处理drop,dragleave,dragover,dragenter等事件)
//                  cx: 400,                    // [int] 窗口宽度
//                  cy: 300,                    // [int] 窗口高度
//                  x: -1,                      // [int] 窗口左边 (xy 均为-1则窗口居中)
//                  y: -1,                      // [int] 窗口顶边
//                  style: 0,                   // [int] 窗口附加style
//                  styleEx: 0,                 // [int] 窗口附加styleEx
//               }
// @return 成功返回窗口句柄,失败返回错误代码(小于0)
var ret = mz.sf.Create({ html: '<b>test</b>', isTop: true });

sf.Show()

// int sf.Show(bool isShow);
// 显示或隐藏已创建窗口
// @param bool isShow 是否显示已创建窗口
// @return 成功返回值大于0,失败返回错误代码(小于0)
var ret = mz.sf.Show(true);

sf.GetHWnd()

// int sf.GetHWnd();
// 获取窗口句柄
// @return 成功返回窗口句柄,失败返回错误代码(小于0)
var ret = mz.sf.GetHWnd();

sf.Movevent()

// int sf.Movevent();
// 移动事件
// @return 成功返回值大于0,失败返回错误代码(小于0)
var ret = mz.sf.Show();

// 按下移动
mz.sf.Create('<button type="button" onmousedown="mz.sf.Movevent();">按下移动</button><style>body{background-color: #fff;}</style>', true);
mz.sf.Show(true);

sf.Move()

// dynamic sf.Move(dynamic pt);
// 获取或设置窗口位置。
// @param dynamic pt 如果参数值为 POINT 则设置窗口位置,空白则获取窗口位置
// @return 成功返回当前位置类型为POINT,失败返回错误代码(小于0)
var ret = mz.sf.Move({ x: 100, y: 300 });

// 获取窗口位置
var pt = mz.sf.Move();
// 设置窗口位置
var pt = mz.sf.Move({ y: 150 });

sf.Size()

// dynamic sf.Size(dynamic size);
// 获取或设置窗口尺寸。
// @param dynamic size 如果参数值为 SIZE 则设置窗口尺寸,空白则获取窗口尺寸
// @return 成功返回当前尺寸类型为SIZE,失败返回错误代码(小于0)
var ret = mz.sf.Size({ cx: 100, cy: 300 });

// 获取窗口尺寸
var size = mz.sf.Size();
// 设置窗口尺寸
var size = mz.sf.Size({ cy: 150 });

sf.SetWindowText()

// int sf.SetWindowText(string str);
// 设置窗口标题,仅非透明窗口生效
// @param string str    新标题
// @return 成功返回true,否则返回false
var ret = mz.sf.SetWindowText('new title');

sf.SetFocus()

// int sf.SetFocus();
// 获取焦点
// @return 成功返回true,否则返回false
var ret = mz.sf.SetFocus();

更多功能陆续添加中….

/*

TODO:
    注册表
    配置项
    内存读写搜索

*/
最后修改:2023 年 11 月 25 日
如果觉得我的文章对你有用,请随意赞赏