Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1745460
  • 博文数量: 1493
  • 博客积分: 38
  • 博客等级: 民兵
  • 技术积分: 5834
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-19 17:28
文章分类

全部博文(1493)

文章存档

2016年(11)

2015年(38)

2014年(137)

2013年(253)

2012年(1054)

2011年(1)

分类: 敏捷开发

2013-10-10 18:35:09

原文地址:进程 process 库 函数 作者:qqmmcc123

process(.(执行文件,命令行参数,STARTUPINFO) = 运行执行文件或关联文档。\n如果省略所有参数则打开当前进程,如果参数@1为进程ID则忽略其他参数\n\nSTARTUPINFO参数为process.STARTUPINFO()结构体,可选,\n可以使用普通table对象替代启动参数.将自动转换为STARTUPINFO结构体\n\n命令行参数可以是一个数组或字符串,\n省略STARTUPINFO参数则可用多个文本参数表示命令行\n如果命令行参数有多个,则自动合并 - 以空格分隔,单个参数含空格则首尾添加双引号\n如果省略第一个参数,并仅指定命令行,则作为系统命令行启动运行\n\n失败则返回 null,错误信息,错误代码\n
process() = process.
process.find = process.
process.find() = process.
process.getExitCode() = 该函数调用成功有两个返回值:进程退出代码,进程是否已退出
process.free() = 释放进程对象。\n不是关闭进程,仅仅是释放对进程的控制句柄。
process.waitOne() = 等待进程关闭,不阻塞UI消息循环,可选使用一个毫秒值参数设定超时\n超时或失败返回 false,进程已退出则返回值1为true,返回值2为退出代码
process.wait() = 等待进程关闭,可选使用一个毫秒值参数设定超时\n超时或失败返回 false,进程已退出则返回值1为true,返回值2为退出代码
process.query(.(开始地址,结束地址,搜索数据,保护类型,访问类型) = 查找下一个有效内存地址,所有参数可选,\n搜索数据可以是字符串或结构体\n返回值: addr,len,str,i,j,pattern,protect,mtype 
process.eachQuery(开始地址,结束地址,搜索数据,保护类型,访问类型) = @for( addr,len,str,i,j,pattern,protect,mtype\n in ??.eachQuery(  , ,"__/*搜索模式*/" ) ){\n \n} 
process.malloc(.(长度) = 在目标进程分配内存空间
process.malloc(.(长度,访问类型) = 在目标进程分配内存空间
process.malloc(.(长度,访问类型,分配类型) = 在目标进程分配内存空间
process.mfree(.(指针) = 释放malloc成员函数分配的内存指针
process.mfree(.(指针,释放长度,0x4000) = 释放malloc成员函数分配的内存指针\n不建议手工指定长度
process.setAffinity(1) = 指定进程运行的CPU内核
process.readNumber(__/*内存地址*/) = 读取一个int整数,32位
process.readNumber(__/*内存地址*/,"long") = 读取一个long类型整数,64位
process.readNumber(__/*内存地址*/,"word") = 读取一个word类型整数,16位
process.readNumber(__/*内存地址*/,"byte") = 读取一个字节,8位
process.readNumber(__/*内存地址*/,"INT") = 读取一个int整数,32位无符号
process.readNumber(__/*内存地址*/,"LONG") = 读取一个long类型整数,64位无符号
process.readNumber(__/*内存地址*/,"WORD") = 读取一个word类型整数,16位无符号
process.readNumber(__/*内存地址*/,"BYTE") = 读取一个字节,8位无符号
process.write(.(内存地址,任意个字符串或结构体参数) = 写入数据,成功返回写入尾部内存地址,\n失败返回空
process.readString(.(内存地址,长度) = 读取定长字符串
process.readStruct(.(内存地址,结构体) = 读取定义的结构体
process.writeStruct(.(内存地址,结构体) = 写入定义的结构体,\n省略内存地址参数则自动分配内存,\n该函数返回写入内存地址,写入长度
process.writeString(.(内存地址,字符串) = 写入字符串,\n省略内存地址参数则自动分配内存,\n该函数返回写入内存地址,写入长度
process.writeNumber(__/*内存地址*/,0) = 写入一个int整数,32位
process.writeNumber(__/*内存地址*/,0,"long") = 写入一个long类型整数,64位
process.writeNumber(__/*内存地址*/,0,"word") = 写入一个word类型整数,16位
process.writeNumber(__/*内存地址*/,0,"byte") = 写入一个字节,8位
process.writeNumber(__/*内存地址*/,0,"INT") = 写入一个int整数,32位无符号
process.writeNumber(__/*内存地址*/,0,"LONG") = 写入一个long类型整数,64位无符号
process.writeNumber(__/*内存地址*/,0,"WORD") = 写入一个word类型整数,16位无符号
process.writeNumber(__/*内存地址*/,0,"BYTE") = 写入一个字节,8位无符号
process.protect(__/*内存地址*/,0x4/*_PAGE_READWRITE*/,1) = 修改内存保护属性,返回原来的保护属性,\n第三个参数指定内存长度
process.getPriorityClass() = 返回进程优先级
process.setPriorityClass(0x80/*_HIGH_PRIORITY_CLASS*/) = 设置进程优先级 
process.handle = 进程句柄
process.id = 进程ID
process.tid = 进程的主线程ID\n使用process类创建的进程才会有此属性  
process.remoteApi("void()",) = 参数(函数原型,CALL地址)\n用法同 raw.remoteApi,但无需指定进程ID
process.remoteApi("void()", ,"cdecl") = 参数(函数原型,CALL地址,调用约定)\n用法同 raw.remoteApi,但无需指定进程ID
process.remoteApi("void()","文件名->dll","api函数名") =  参数(函数原型,加载DLL模块名,函数名)\n用法同 raw.remoteApi,但无需指定进程ID
process.remoteApi("void()","文件名->dll","api函数名","cdecl,borland") =  参数(函数原型,加载DLL模块名,函数名,调用约定) \n用法同 raw.remoteApi,但无需指定进程ID
process.remoteApi("void(INT thisAddr)", ,"thiscall") =  参数(函数原型,加载DLL模块名,函数名,调用约定)\nthiscall使用第一个参数指定this指针地址\n用法同 raw.remoteApi,但无需指定进程ID
process.resume() = 恢复运行
process.suspend() = 暂停进程
process.terminate() = 强行终止进程\n可在参数中指定退出代码
process.kill() = 杀除进程
process.eachModule = @for moduleEntry in ??.eachModule() { \n__//io.print( moduleEntry.szExePath  )\n \n}
process.eachThread = @for threadEntry in ??.eachThread() { \n__//io.print( threadEntry.th32ThreadID  )\n \n}
process.getPath() = 返回执行程序文件完整路径
process.asm(.(机器码数组,函数原型,调用约定) = 使用table数组指定任意个机器码参数,使用分号隔开,\n机器码可以是字符串,结构体,数值或指针,\n函数原型可省略,调用约定默认为"cdecl"
process.asmCdecl(.(函数原型,任意多个机器码参数) = 写入机器码返回函数对象\n请参考:快手工具->其他编译器->INTEL汇编语言->汇编转机器码
process.asmStdcall(.(函数原型,任意多个机器码参数) = 写入机器码返回函数对象\n请参考:快手工具->其他编译器->INTEL汇编语言->汇编转机器码
process.asmThiscall(.(函数原型,任意多个机器码参数) = 写入机器码返回函数对象\n请参考:快手工具->其他编译器->INTEL汇编语言->汇编转机器码
process.getModuleBaseAddress(.(模块名) = 返回模块基址,\n模块名忽略大小写,\n不指定模块名则返回应用程序基址
process.isWow64() = 进程是否在64位系统上运行的32进程
?process = process.
?process.openWindow = process.
?process.each = processEntry.






execute(.("__", parameters="",operation="open",showCmd,workdir=",hwnd=0,wait="input") = 运行exe应用程序 
execute_wait(.("__", parameters="",operation="open",showCmd,workdir=",hwnd=0) = 运行exe应用程序\n并等待应用程序关闭。
execute_waitInput(.("__", parameters="",operation="open",showCmd,workdir=",hwnd=0) = 运行exe应用程序\n并等待进程初始化完成并接受输入。
explore_select("__/*文件路径*/") = 打开资源管理器,选定该文件
explore("__/*目录路径*/") = 使用资源管理器打开目录
findExe("__/*文件路径*/") = 查找文件关联的可执行程序
isExe("__/*文件路径*/") = 检测目标文件是否可执行文件
find("__/*exe文件名*/") = 查找进程并返回进程对象\n支持模式匹配语法,忽略大小写
kill("__/*exe文件名*/") = 查找所有同名exe文件的进程,并关闭进程\n支持模式匹配语法,忽略大小写
each =  @for processEntry in process.each( ".*.exe" ) { \n//遍历所有进程\n __//io.print( processEntry.szExeFile  )\n \n}
eachModule =  @for moduleEntry in process.eachModule(__/*进程ID*/) { \n//io.print( moduleEntry.szExePath  )\n \n}
eachThread =  @for threadEntry in process.eachThread(__/*进程ID*/) { \n//io.print( threadEntry.th32ThreadID  )\n \n}
getPath(__/*进程ID*/) = 返回执行程序文件完整路径
openWindow(__/*输入窗口句柄*/) = 使用窗口句柄打开进程ID
getId() = 获取当前进程ID
getHandle() = 获取当前进程伪句柄
dup(.(句柄,源进程句柄,目标进程句柄) = 进程句柄参数省略则为当前进程句柄\n函数支持更多可选参数如下:\n(句柄,源进程,目标进程,是否可继承,选项,安全访问级别)\n默认可继承,选项默认为_DUPLICATE_CLOSE_SOURCE | _DUPLICATE_SAME_ACCESS\n如果不指定最后一个参数 
dup(.(句柄,源进程句柄) = 从指定进程复制句柄到当前进程
dup(.(句柄,,目标进程句柄) = 复制句柄到目标进程句柄
 
/**intellisense(startinfo)
desktop = 标识启动应用程序所在的桌面的名字
title = 控制台标题
x = x坐标(子进程使用默认坐标时、或控制台窗口支持)
y = y坐标(子进程使用默认坐标时、或控制台窗口支持)
xSize = 窗口宽(子进程使用默认坐标时、或控制台窗口支持)
ySize = 窗口高(子进程使用默认坐标时、或控制台窗口支持)
xCountChars = 控制台宽度(字符单位)
yCountChars = 控制台高度(字符单位)
fillAttribute = 控制台窗口使用的文本和背景颜色
flags = @.flags = _STARTF_USE__ //指定结构体中哪些成员生效\n
showWindow = 显示参数\n支持以_SW_前缀的常量\n_SW_HIDE表示隐藏窗口(默认值)
stdInput = 标准输入(可用于创建管道)
stdOutput = 标准输出(可用于创建管道)
stdError = 标准错误输出(可用于创建管道) 
waitInputTimeout = 进程启动后等待初始化完成的最大超时\n默认为0xFFFFFFFF(无限等待),设为0则不等待
creationFlag = @.creationFlag = CREATE__ //创建进程的参数,参考API CreateProcess的说明
inheritHandles = 默认值为真,所有有可被继承属性的内核对象都会被复制到子进程(实际上是内核对象引用计数加一)
environment = 新进程的环境块,以键值对组成的字符串表示,\n此参数一般不建议设置
processAttributes = SECURITY_ATTRIBUTES结构体指针,一般不建议设置\n如需设置请使用raw.malloc将结构体转换为指针
threadAttributess = SECURITY_ATTRIBUTES结构体指针,一般不建议设置\n如需设置请使用raw.malloc将结构体转换为指针
workdir = 进程工作目录,一般不建议设置
suspended = 是否休眠创建进程的主线程\n如果为真自动添加_CREATE_SUSPENDED参数
username = 登录用户名
password = 登录密码
domain = 域名
logonFlags = 登录选项,默认为 _LOGON_WITH_PROFILE
end intellisense**/


/*intellisense(processEntry) 
dwSize = 296;
cntUsage = 0;
th32ProcessID = 进程ID,INT数据类型
th32DefaultHeapID =  
th32ModuleID = associated exe
cntThreads = 0;
th32ParentProcessID = 父进程ID,INT数据类型
pcPriClassBase = 进程优先级,INT数据类型
dwFlags = 0;
szExeFile = exe文件路径 
end intellisense*/


/*intellisense(moduleEntry)  
dwSize = 结构体大小
th32ModuleID = 模块ID;
th32ProcessID = 进程ID,INT数据类型
GlblcntUsage =  
ProccntUsage =  
modBaseAddr = 模块基址;
modBaseSize = 
hModule = 模块句柄
szModule = 0;
szExePath = 
end intellisense*/


/*intellisense(threadEntry)  
dwSize = 结构体大小
cntUsage = 引用计数
th32ThreadID = 线程ID
th32OwnerProcessID = Process this thread is associated with
tpBasePri = 
tpDeltaPri = 
dwFlags = 
th32OwnerProcessID = 进程ID
end intellisense*/


/*intellisense(heapEntry)  
dwSize = 结构体大小;
hHandle = Handle of this heap block
dwAddress = Linear address of start of block
dwBlockSize = Size of block in bytes
dwFlags = 
dwLockCount = 
dwResvd = 
th32ProcessID = owning process
th32HeapID = heap block is in
end intellisense*/


/*intellisense(heapList)  
dwSize = 结构体大小; 
th32ProcessID = owning process
th32HeapID = heap (in owning process's context)
dwFlags = 
end intellisense*/





阅读(622) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~