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 日
如果觉得我的文章对你有用,请随意赞赏