Maye Nano Script 基于 JavaScript ,支持 JavaScript 基本语法。

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


简介

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


代码编辑器

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

结构体与常量

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

const int    NULL    = 0;       // int 类型空值
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();
// 用作退出脚本实例并释放内存,每个脚本都应存在该命令,否则脚本实例将一直存在并占用内存
mn.exit();

Delay()

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

Sleep()

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

EventDispatch()

// void EventDispatch();
// 事件处理
// 处理消息队列事件
mn.EventDispatch();

for(;;){
	mn.EventDispatch();
	mn.Delay(1);
}

按键

SendString()

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

SendVKey()

// void SendVKey(vk virtualKey, bool isDown);
// 发送按键信息
// @param vk virtualKey 要模拟发送的 VirtualKeyCode (VK.XX) 值
// @param isDown 是否按下,true按下,false弹起
mn.SendVKey(VK.A, true);

SendVKeyClick()

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

SendVKeyDown()

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

SendVKeyUp()

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

IsKeyDown()

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

鼠标

MouseCilck()

// void MouseCilck(MouseBtn btn, bool isDown);
// 发送鼠标按键信息
// @param MouseBtn btn      按键信息(MouseBtn.XX)
// @param isDown 是否按下,true按下,false弹起
mn.MouseCilck(MouseBtn.Left, true);

MouseMove()

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

MouseWhell()

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

IsButtonDown()

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

GetCurrentMousePoint()

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

系统

GetTickCount64()

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

QueryRecycleBin()

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

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

EmptyRecycleBin()

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

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

ExpandEnvironmentVariables()

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

WinExecEx()

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

Run()

// int Run(RunType Mode, string path, string param, string dir, bool nShow, bool waitRunComplete, bool ignoreError);
// 展开环境变量字符串,同时支持maye的参数变量。
// @param RunType Mode          运行方式 (RunType.XX)
// @param string path           目标
// @param string param          启动参数
// @param string dir            起始位置
// @param int nShow             窗口显示方式 SW_* (默认: SW_SHOWDEFAULT) 更多参考:https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-showwindow
// @param bool waitRunComplete  等待程序退出后返回 (默认: false)
// @param bool ignoreError      忽略错误警告 (默认: false)
// @return 成功返回 1 如果未开启多线程执行则返回对应的进程PID,失败返回 0
var r = mn.Run(RunType.open, '%ComSpec%', '', 'C:\\', SW_SHOWDEFAULT, false, false);

RunCmeLine()

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

RunCmeLineEx()

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

RunItem()

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

GetClipboardText()

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

SetClipboardText()

// bool SetClipboardText(string text);
// 设置剪贴板文本
// @param string text 欲设置的文本
// @return 成功返回 true,失败返回 false
var r = mn.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 void
mn.RegisterHotKey(6, MOD_ALT | MOD_NOREPEAT, VK.A);

// 热键例子
mn.RegisterHotKey(6, MOD_ALT | MOD_NOREPEAT, VK.A);// ALT+A
// 事件回调
function event_hotkey(id){
    if(id == 6) {
        mn.MsgBox('HotKey-6');
    }
}
// 处理事件
for(;;){
	mn.EventDispatch();
	mn.Delay(1);
}

UnregisterHotKey()

// bool UnregisterHotKey(int id);
// 卸载快捷性。详情参照微软文档
// @param int id 热键的标识符
// @return void
mn.UnregisterHotKey(6);

窗口

FindWindow()

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

GetParent()

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

GetDesktopWindow()

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

WindowFromPoint()

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

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

GetDlgCtrlID()

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

GetDlgItem()

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

GetWindowRect()

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

GetClientRect()

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

IsChild()

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

IsWindow()

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

IsWindowVisible()

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

IsWindowTop()

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

IsWindowEnabled()

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

IsWindowActive()

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

IsIconic()

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

IsZoomed()

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

IsWindowRespond()

// bool IsWindowRespond(int hWnd);
// 窗口是否响应
// @param int hWnd
// @return 成功返回true(窗口可正常响应),失败返回false(窗口无响应)
var ret = mn.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 = mn.ShowWindow(68214, 0);

ShowWindowAsync()

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

SetParent()

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

GetFocus()

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

SetFocus()

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

GetActiveWindow()

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

SetActiveWindow()

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

GetForegroundWindow()

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

SetForegroundWindow()

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

GetClassName()

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

GetWindowText()

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

SetWindowText()

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

GetSCText()

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

SetSCText()

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

WindowTopMost()

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

MoveWindow()

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

SetWindowSize()

// void SetWindowSize(int hWnd, int cx, int cy);
// 设置窗口尺寸。
// @param int hWnd      窗口句柄
// @param int cx        新的宽度
// @param int cy        新的高度
mn.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 = mn.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 = mn.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 = mn.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 = mn.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 = mn.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 = mn.PostMessage(68214, 16, 0, 0);

UpdateWindow()

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

InvalidateRect()

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

GetWindowProcessId()

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

GetCaretRECT()

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

进程

GetNameProcessId()

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

GetProcessIdName()

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

GetProcessIdPath()

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

GetChildProcessId()

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

GetProcessIdThreads()

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

IsProcessIdExists()

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

TerminateProcess()

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

SuspendProcess()

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

GetPriorityClass()

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

文件目录

ReadFile()

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

WriteFile()

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

FindFile()

// string FindFile(string fileName);
// 寻找文件
// @param string fileName                   文件名或目录名。可以使用多字符 (*) 和单字符 (?) 通配符来指定多重文件。
// @return array WIN32_FIND_DATA
var ret = mn.FindFile('C:\\*');

PathFileExists()

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

GetFileSize()

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

GetFileSizeEx()

// string GetFileSizeEx(string fileName);
// 获取文件尺寸,支持大文件(该函数返回值为字符串)
// @param string fileName 文件名
// @return 成功返回文件尺寸,失败返回-1
var ret = mn.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 = mn.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 = mn.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 = mn.ReNameFile('C:\\1.txt', 'C:\\2.txt');

DeleteFile()

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

CreateDirectory()

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

CreateDirectoryEX2()

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

DeleteDirectory()

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

PathIsDirectory()

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

PathIsDirectoryEmpty()

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

GetCurrentDirectory()

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

输入与显示

MsgBox()

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

Confirm()

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

InputBox() [未实现]

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

更多功能陆续添加中….

/*

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

*/

最后修改:2026 年 02 月 24 日
如果觉得我的文章对你有用,请随意赞赏