Connect to the system api in the easiest way (win-api)
npm install hmc-win32
npm i hmc-win32
`
$3
`javascript
let HMC = require("hmc-win32");
console.log("App:Admin=>",HMC.isAdmin())
//App:Admin=> true
console.log("SystemIdleTime=>",HMC.getSystemIdleTime())
//SystemIdleTime=> 25
console.log("escapeEnvVariable=>",HMC.escapeEnvVariable("%AppData%\hmc-win32"))
//escapeEnvVariable=> C:\Users\...\AppData\Roaming\hmc-win32
console.log("Clipboard=>",setClipboardFilePaths(["D:/1.jpg"]),HMC.getClipboardFilePaths())
//Clipboard=> true , ["D:/1.jpg"]
`
$3
`typescript
import HMC = require("hmc-win32");
`
功能概览
$3
----------------------------------
- closedHandle 关闭句柄
- setWindowMode 设置窗口位置大小
- getWindowRect 获取窗口位置大小
- getDeviceCaps 获取屏幕大小
- getPointWindow 获取鼠标所在窗口的句柄
- getPointWindowName 获取鼠标所在窗口的进程名
- getPointWindowProcessId 获取鼠标所在窗口的进程id
- getPointWindowMain 获取鼠标所在窗口的父窗口
- getPointWindowMain 获取鼠标所在窗口的父窗口
- getWindowProcess 获取句柄对应的进程id
- getProcessWindow 获取进程对应的主进程/线程的窗口句柄
- getWindowTitle 获取此句柄的标题
- setWindowTitle 设置此句柄的标题
- setShowWindow 通过句柄设置窗口显示状态
- isWindowVisible 判断此句柄是否是正在活动中的窗口
- closeWindow 关闭此句柄对应的窗口
- getForegroundWindow 获取活动窗口句柄
- getAllWindows 获取所有窗口的信息
- getMainWindow 获取该句柄下的父窗口
- setWindowTop 顶设窗口
- isWindowTop 窗口是否被顶设
- setWindowShake 窗口抖动
- updateWindow 刷新窗口
- setWindowFocus 设置窗口聚焦
- setWindowEnabled 设置窗口是否支持响应事件(鼠标键盘点击)
- isEnabled 判断窗口是否支持响应事件(鼠标键盘点击)
- SetWindowInTaskbarVisible 是否在状态栏显示该图标
- setHandleTransparent 设置窗口不透明度
- SetBlockInput 阻止键盘和鼠标输入事件到达应用程序。
- WatchWindowPoint 当鼠标所在的窗口变更的时候发生回调
- WatchWindowForeground 当聚集的窗口变更的时候发生回调
- getAllWindowsHandle 获取所有句柄 并返回一个HWND 的伪数字方法集 (getAllWindows 的替代 获取 200000次进程无影响)
- HWND (类) Number(伪)
- HWND number
- closed 强制结束句柄
- close 向窗口发送关闭的消息
- rect 窗口位置 (访问时自动获取)
- title 标题 (访问时自动获取)
- setTitle 设置标题
- exists 句柄是否有效 (访问时自动获取)
- isHandle 句柄是否有效 (访问时自动获取)
- pid 句柄的附属进程id (访问时自动获取)
- MianPid 句柄的 主线程/主进程 id (访问时自动获取)
- MainHandle 主句柄
- isVisible 可见性
- kill 结束 主进程/主线程
- hide 隐藏
- show 显示
- setMin 最小化
- setMax 最大化
- setRestore 恢复最近的状态
- setFocus 聚集
- setEnabled 禁用
- isEnabled 是否禁用
- setJitter 窗口抖动
- isTop 是否顶设
- setTopOrCancel 取消顶设 / 设置顶设
- setOpacity 设置 不透明度 0-100 / 0.0-1.0
- setTransparent 设置 不透明度 0-255 (alpha)
- enumChildWindows 枚举句柄的子窗口
- setWindowTitleIcon 设置标题窗口图标icon
- getWindowClassName 获取窗口类名
- getAllWindowsHandle 获取所有窗口的句柄 增加一个参数 是否要求必须为窗口
- setForegroundWindow 设置窗口聚焦
- getAllWindows 默认使用 isWindows 为true
- getWindowStyle 获取窗口类关联代码
- setWindowIconForExtract 通过可执行文件或者带有图标的文件设置窗口图标
$3
----------------------------------
- killProcess 结束该pid进程
- sleep 同步阻塞(进程)
- openApp 打开程序
- getProcessList 获取进程列表
- getDetailsProcessList 获取详细进程列表(慢20ms)
- getProcessWindow 获取进程对应的主进程/线程的窗口句柄
- getProcessName 获取进程名
- getProcessFilePath 获取进程可执行文件位置
- getForegroundWindowProcessID 获取活动窗口的进程id
- getWindowProcess 获取句柄对应的进程id
- isProcess 判断进程id 是否存在
- hasProcess 判断进程id 是否存在
- killProcessName 结束该名称 /(正则)匹配的 进程
- processWatchdog 当监察的进程结束时候执行回调
- getProcessNameList 获取该名称 /正则匹配的进程列表
- getDetailsProcessNameList 获取该名称 /正则匹配的进程列表 带执行文件路径 慢20ms
- getModulePathList 查询进程加载的模块
- getProcessThreadList 枚举进程的线程id
- getProcessParentProcessID 获取进程的主进程
- getSubProcessID 获取子进程id列表
- enumProcessHandle 枚举进程id的句柄
- enumAllProcessHandle 枚举所有进程id的句柄
- findProcess 搜索进程
- getProcessStartTime 获取进程启动时间 (ms)
- 尾部带有2的为2.0api 均支持异步(2 / 2Sync ):**
- 异步 Promise
- 异步 callback
- 异步 Promise
- 均支持并发
- findProcess2 搜索进程 异步
- findProcess2Sync 搜索进程 同步
- getAllProcessList2 异步 获取进程列表(枚举) 枚举是最快的也不受应用是32位系统64位导致无法枚举到 但是信息不够细
- pid 进程id
- name 由镜像路径解析
- path 镜像路径
- getAllProcessList2Sync 同步 获取进程列表(枚举)
- getAllProcessList2Snp 异步 获取进程列表 (快照) 请注意 如果可执行文件是32位而系统是64位将获取不到64位进程的信息
- pid 进程id
- name 由镜像路径解析
- ppid 父进程id
- ... : cntThreads cntUsage dwFlags dwSize pcPriClassBase th32DefaultHeapID th32ModuleID
getAllProcessListSnp2Sync 同步 获取进程列表 (快照)
- getAllProcessListNt2 异步 获取进程列表 (内核)
- pid 进程id
- name 软件名称
- BasePriority NextEntryOffset NumberOfThreads PagefileUsage pcPriClassBase PeakPagefileUsage PeakWorkingSetSize QuotaNonPagedPoolUsage Reserved [1-6]
- getAllProcessListNt2Sync 同步 获取进程列表 (内核)
- getProcessCpuUsage2 异步 获取进程占用的cpu
- getProcessCpuUsage2Sync 同步 获取进程占用的cpu
- getProcessNameSnp2Sync 同步 获取进程的名称(快照)
- getProcessNameSnp2 异步 获取进程的命令行(快照)
- getProcessNameNt2Sync 同步 获取进程的名称(内核)
- getProcessNameNt2 异步 获取进程的命令行(内核)
- getProcessName2Sync 同步 获取进程的名称(正常)
- getProcessName2 异步 获取进程的命令行(正常)
- getProcessCommand2 异步 获取指定进程的启动命令行
- getProcessCommand2Sync 同步 获取指定进程的工作目录
- getProcessCwd2 异步 获取指定进程的工作目录
- getProcessCwd2Sync 同步 获取指定进程的启动命令行
$3
----------------------------------
- getTrayList 获取托盘图标
- closedHandle 关闭托盘图标(提交句柄)
$3
----------------------------------
- SetSystemHOOK (禁用/启用系统键盘鼠标钩子 (高级api) )
- getHidUsbList 获取所有HidUsb设备(仅限HID设备)
- getShortcutLink 获取快捷方式内容
- setShortcutLink 设置快捷方式内容
- isSystemX64 判断当前系统是否是x64
- messageBox 消息窗口(调用 win-api)
- getSystemMenu 设置系统右键菜单 例如win自带的系统菜单就很丑还不能禁用 使用这个禁用
- clearClipboard 清空剪贴版
- setClipboardText 设置剪贴板文本
- getClipboardText 获取剪贴板文本
- setClipboardFilePaths 向剪贴板写入文件列表
- getClipboardFilePaths 向剪贴板读取文件列表
- openApp 打开程序
- isAdmin 判断当前软件是否拥有管理员权限
- getSystemIdleTime 系统空闲时间
- systemStartTime 系统启动到现在的时间
- system 同 C++/C 的system
- alert 方法用于显示带有一条指定消息和一个 确认 按钮的警告框
- confirm 方法用于显示带有一条指定消息和 确认 和取消 的按钮的消息框
- MessageStop 方法用于显示带有一条指定消息和一个 确认 按钮的和❌(X)的消息框
- MessageError 方法用于显示带有一条指定消息和一个 确认 按钮的错误框 附带有❗ 感叹号。
- systemChcp 当前系统shell的chcp信息
- deleteFile 将文件放入回收站
- trash 将文件放入回收站
- getClipboardSequenceNumber 获取当前剪贴板内容的id(如果被重新写入了该id会变动)
- watchClipboard 当剪贴板内容变更后发生回调
- watchUSB 当驱动器添加或者移除后发生回调
- keyboardHook 低级键盘输入变化获取
- mouseHook 低级鼠标位置变化获取
- freePort 获取一个空闲可用的端口号
- hasPortTCP 判断TCP(服务)端口号正在使用/系统占用 (反向理解:为true的话不能创建端口绑定)
- hasPortUDP 判断UDP端口号正在使用/系统占用(反向理解:为true的话不能创建端口绑定)
- _popen 创建管道并执行命令
- popen 创建管道并执行命令
- formatVolumePath 格式化 驱动器路径 ('\\Device\\HarddiskVolume2' => "D:\\")
- getVolumeList 获取当前文件系统的驱动器名称及路径
- getTCPPortProcessID 获取指定TCP端口的pid
- getTCPPortProcessID 获取指定UDP端口的pid
- createMutex 创建进程互斥体(全局)
- hasMutex 判断进程互斥体(全局)
$3
----------------------------------
- systemStartTime 系统启动到现在的时间
- shutMonitors 关闭显示器
- showMonitors 恢复显示器
- powerControl 电源控制
* 1001 关机
* 1002 重启
* 1003 注销
* 1005 锁定
* shutDown 关机
* restart 重启
* cancellation 注销
* lock 锁定
$3
----------------------------------
- hasRegistrKey 判断键值是否存在
- getStringRegKey 获取内容(文本)
- removeStringRegKey 删除数据
- setRegistrKey 设置键值对
- createPathRegistr 创建新的路径
- enumRegistrKey 枚举键值
- getRegistrBuffValue 获取内容(二进制 Buffer)
- openRegKey 打开该路径并返回方法的封装
- listRegistrPath 将该路径下的内容以objcet 的方式显示
- removeStringRegKeyWalk 删除一个文件夹键值
- removeStringRegKey 删除一个文件夹key
- removeStringRegValue 删除一个值
- setRegistrDword 设置一个32位数字
- setRegistrQword 设置一个64位数字
- getRegistrDword 获取一个32位数字
- getRegistrQword 获取一个64位数字
- registr 注册表处理的集合
- analysisDirectPath 将一条完整的注册表路径 转为 数组 拆分为 [ HKEY: HKEY, Path: string, key?: string]
- has
- get
- remove
- keys
- list
- create
- open
$3
----------------------------------
- getHidUsbList 获取所有HidUsb设备(仅限HID设备)
- setCursorPos 设置鼠标位置
- mouse 自定义鼠标事件
- hasKeyActivate 判断该按键是否被按下
- leftClick 左键点击
- rightClick 右键点击
- getBasicKeys 获取四大按钮是否按下
- getMouseMovePoints 获取鼠标之前64个位置
- getUsbDevsInfo 获取所有usb驱动器(不包含HUD)
- keyboardHook 低级的键盘变化监听构造函数
- mouseHook 低级的鼠标变化监听构造函数
- sendBasicKeys 向系统发送标准的快捷键 例如 : ctrl+win+C
- getColor 获取指定位置的颜色
- captureBmpToFile 截图指定位置并且写入文件 (BMP)
- sendKeyboard 发送键盘事件
- sendKeyboardSequence 发送键盘事件序列
- sendKeyT2CSync 同步执行t2c 脚本 (一种快捷的 更加符合人类编写键鼠操作的文本微脚本)
- sendKeyT2C 异步执行t2c 脚本 (一种快捷的 更加符合人类编写键鼠操作的文本微脚本)
- getCursorPos 获取鼠标光标所在位置的坐标
- hasMouseLeftActivate 判断鼠标左键是否被按下
- hasMouseRightActivate 判断鼠标右键是否被按下
- hasMouseMiddleActivate 判断鼠标中键是否被按下
- hasMouseBtnActivate 判断鼠标的按钮按下状态
- setLimitMouseRange 设置鼠标坐标到指定位置 并且限制在一定范围内(时间ms)
$3
----------------------------------
- createSymlink 创建一个软链接
- createDirSymlink 创建一个文件夹软链接
- createHardLink 创建一个硬链接
$3
----------------------------------
- getWebView2Info 当前安装的WebView2 信息
- hasWebView2 当前电脑是否安装了 WebView2
- WebView2OnlineInstall 在线安装WebView2
$3
----------------------------------
- Environment 合集
- hasKeyExists 判断变量中是否存在指定值 用户 系统
- hasUseKeyExists 判断变量中是否存在指定值 用户
- hasSysKeyExists 判断变量中是否存在指定值 系统
- escapeEnvVariable 通过当前的变量对变量内容进行解析(不受进程变量影响)实时
- HMC_x64.escapeEnvVariable("%AppData%\\hmc-win32") log -> 'C:\\Users\\...\\AppData\\Roaming\\hmc-win32'
- removeUserVariable 删除一个用户变量 用户
- removeVariable 删除一个用户变量 用户 系统
- removeSystemVariable 删除一个用户变量 系统
- getSystemVariable 获取一个在系统变量中的值 系统
- transMean %AppData%\\hmc-win32 -> 'C:\\Users\\...\\AppData\\Roaming\\hmc-win32'
- transMean %AppData%\\hmc-win32 -> '%AppData%\\hmc-win32'
- getUserVariable 获取一个在用户变量中的值 用户
- transMean %AppData%\\hmc-win32 -> 'C:\\Users\\...\\AppData\\Roaming\\hmc-win32'
- transMean %AppData%\\hmc-win32 -> '%AppData%\\hmc-win32'
- getVariableAnalysis 获取一个在用户变量中的值 用户 系统
- putSystemVariable 添加一个系统变量 (请注意 win进程获取的优先级: 进程变量 -> 用户变量 -> *系统变量) path变量不受此影响(win定义)
- append 添加到尾部 而不是替换 "ddd" -> "oid...;ddd"
- transMean 转义 "%AppData%\\hmc-win32" -> 'C:\\Users\\...\\AppData\\Roaming\\hmc-win32'
- putUserVariable 添加一个系统变量 (请注意 win进程获取的优先级: 进程变量 -> 用户变量 -> *系统变量) path变量不受此影响(win定义)
- append 添加到尾部 而不是替换 "ddd" -> "oid...;ddd"
- transMean 转义 "%AppData%\\hmc-win32" -> 'C:\\Users\\...\\AppData\\Roaming\\hmc-win32'
- getVariableAll 获取所有的值 从环境读取 (进程环境)
- getRealGlobalVariableList 获取所有的值 从注册表读取 (配置环境)
- getUserKeyList 获取用户变量的键列表用户
- getSystemKeyList 获取系统变量的键列表 系统
- updateThis 同步系统(全局)变量到当前进程
$3
------------------------------
- ipv4 获取本机局域网的ip(v4)
- ip 获取本机局域网的ip(适配器,v4,v6)
- adapterIP 获取本机局域网的ip(适配器,v4,v6)
- public_ip 获取本机公网ip
- getNetParams 获取主机网络信息
- freePort 获取一个tcp空闲端口 (服务)
- freePortTCP 获取一个空闲的tcp端口
- freePortUDP 获取一个空闲的udp端口
- hasPortUDP 判断此udp端口是否空闲
- hasPortTCP判断此TCP端口是否空闲
- getSystemProxyServer 获取系统代理链接(仅在启用系统代理时)
- getSystemProxyPac 获取系统代理pac脚本链接
- getDomainIPaddress 从默认dns(联网)解析域名主机ip
- getHostsPath 获取hosts文件的路径
- getTCPv6PortProcessID 获取此端口被哪个进程占用了
- getUDPv6PortProcessID 获取此端口被哪个进程占用了
- getUDPv4PortProcessID 获取此端口被哪个进程占用了
- getTCPv4PortProcessID 获取此端口被哪个进程占用了
- getConnectNetList 枚举此电脑中的 端口 ipv4 and ipv6 的 TCP,UDP 端口信息
- killProcess 结束该pid进程(低权利 如果需要高权限的kill请使用hmc-win32)
- sleep 同步阻塞(进程)
- Sleep 异步阻塞(进程)
- PortWatchdog 检测端口变化如果关闭或者启用时发起回调
- getProcessidFilePath 获取进程可执行文件位置
- isAdmin 判断当前软件是否拥有管理员权限
$3
----------------------------------
- ref 转换
- bool 将布尔内容转为安全的 bool 类型布尔
- string 将文本/伪文本内容转为安全的文本
- int 将数字/伪数字内容转为安全的int数字
- HKEY 所有注册表的 HKEY 对象
- Sleep 异步的阻塞
- default 映射整个功能组(兼容ejs)
- hmc 映射整个功能组(兼容局部导出)
- native 直接连接HMC.node的原生方法 (不建议使用)
$3
$3
HMC所有API采用winapi+nodeapi实现,因此无需重新编译(允许运行在node8以上环境 node6.14.2 需要自行使用esbuld编译),如果您需要对源代码进行修改请使用node-gyp rebuild` 进行编译,这需要有一定的C/C++基础,编译工具使用node-gyp即可,需要使用到的工具如下: