TC官方合作论坛
标题:
【批处理】匿名管道,执行CMD命令返回 回显内容。(源码)
[打印本页]
作者:
剑仙十号
时间:
2017-10-6 12:03
标题:
【批处理】匿名管道,执行CMD命令返回 回显内容。(源码)
本帖最后由 剑仙十号 于 2018-3-22 20:29 编辑
【批处理】匿名管道,执行CMD命令返回 回显内容。(源码)
var 线程ID
功能 执行()
变量 str
str = PipeCmd("cmd /c date 2017-10-05")
str = PipeCmd("cmd /c time 10:10:10")
str = PipeCmd("cmd /c ipconfig")
调试输出("内网ip:" & str)
str = PipeCmd("cmd /c dir c:")
调试输出("遍历结果:" & str)
//
结束
功能 启动_热键()
var bool = 线程获取状态(线程ID)
if(bool == false)
线程ID = 线程开启("执行", "")
end
结束
功能 终止_热键()
线程关闭(线程ID)
结束
【批处理】匿名管道,执行CMD命令返回 回显内容。(编写原理)
作者:
剑仙十号
时间:
2017-10-6 12:04
//匿名管道_定义部分
//用管道执行_批处理命令。禁止执行带交互的命令,可能会卡死。
//cmdstr 执行的命令
//time_out 命令执行的超时时间,防止卡死
function PipeCmd(cmdstr, time_out = 51000)
var sa = SECURITY_ATTRIBUTES()
sa["nLength"]["value"] = structlen(sa)
sa["bInheritHandle"]["value"] = true
//创建管道
var hRead, hWrite
if(!CreatePipe(hRead, hWrite, sa, 0))
traceprint(getlasterror(1))
traceprint("创建管道失败")
return ""
end
var si = STARTUPINFO()
var pi = PROCESS_INFORMATION()
si["cb"]["value"] = structlen(si)
GetStartupInfo(si) //引用传参.
si["hStdError"]["value"] = hWrite
si["hStdOutput"]["value"] = hWrite
si["wShowWindow"]["value"] = 0
si["dwFlags"]["value"] = #00000101
//创建进程 与管道相关联
if(!CreateProcess(0, cmdstr, 0, 0, 1, 0, 0, 0, si, pi))
traceprint(getlasterror(1))
traceprint("创建进程失败")
return ""
end
CloseHandle(hWrite)
var nSize = 1024
var buffer = new(1024)
memset(buffer, 0, 1024 + 1)
var nReadSize = 0
var string
var time1 = gettickcount()
while(ReadFile(hRead, buffer, 1024, nReadSize, 0))
//内存溢出
if(nReadSize > 1024)
break
end
//超时
var time2 = gettickcount()
if(time2 - time1 > time_out)
break
end
string = string & addressvalue(buffer, "char *")
sleep(1, 0)
memset(buffer, 0, 1024 + 1)
end
delete(buffer) //之前漏掉了这处代码,程序有内存泄漏
CloseHandle(hRead)
return string
end
作者:
剑仙十号
时间:
2017-10-6 12:05
//win32_api定义部分。
//申请内存地址
function new(nSize)
var string = array()
string["str"] = array("char" = nSize + 1, "value" = "")
return structmalloc(string)
end
//释放内存
function delete(address)
structfree(address)
end
//重置一段内存中值
function memset(address, value, nSize)
return dllcall("kernel32.dll", "long", "RtlFillMemory", "long", address, "long", nSize, "long", value)
end
function SECURITY_ATTRIBUTES()
var sa0 = array() //定义SECURITY_ATTRIBUTES结构.
sa0["nLength"] = array("long" = 1, "value" = 0)
sa0["lpSecurityDescriptor"] = array("long" = 1, "value" = 0)
sa0["bInheritHandle"] = array("long" = 1, "value" = 0)
return sa0
end
function STARTUPINFO()
var si0 = array() //定义STARTUP_INFO结构.
si0["cb"] = array("long" = 1, "value" = 0)
si0["lpReserved"] = array("long" = 1, "value" = 0)
si0["lpDesktop"] = array("long" = 1, "value" = 0)
si0["lpTitle"] = array("long" = 1, "value" = 0)
si0["dwX"] = array("long" = 1, "value" = 0)
si0["dwY"] = array("long" = 1, "value" = 0)
si0["dwXSize"] = array("long" = 1, "value" = 0)
si0["dwYSize"] = array("long" = 1, "value" = 0)
si0["dwXCountChars"] = array("long" = 1, "value" = 0)
si0["dwYCountChars"] = array("long" = 1, "value" = 0)
si0["dwFillAttribute"] = array("long" = 1, "value" = 0)
si0["dwFlags"] = array("long" = 1, "value" = 0)
si0["wShowWindow"] = array("short" = 1, "value" = 0)
si0["cbReserved2"] = array("short" = 1, "value" = 0)
si0["lpReserved2"] = array("long" = 1, "value" = 0)
si0["hStdInput"] = array("long" = 1, "value" = 0)
si0["hStdOutput"] = array("long" = 1, "value" = 0)
si0["hStdError"] = array("long" = 1, "value" = 0)
return si0
end
function PROCESS_INFORMATION()
var pi0 = array() //定义PROCESS_INFORMATION结构.
pi0["hProcess"] = array("long" = 1, "value" = 0)
pi0["hThread"] = array("long" = 1, "value" = 0)
pi0["dwProcessId"] = array("long" = 1, "value" = 0)
pi0["dwThreadId"] = array("long" = 1, "value" = 0)
return pi0
end
//创建管道
function CreatePipe(&readPipe, &writePipe, &lpPipeAttributes, nSize)
return dllcall("kernel32.dll", "long", "CreatePipe", "plong", readPipe, "plong", writePipe, "pstruct", lpPipeAttributes, "long", nSize)
end
//返回当前进程,在启动时,被指定的STARTUPINFO结构信息.
function GetStartupInfo(&STARTUPINFO) //引用传参.
return dllcall("kernel32.dll", "long", "GetStartupInfo", "pstruct", STARTUPINFO)
end
//创建新进程
function CreateProcess(lpApplicationName, lpCommandLine, lpProcessAttributes, lpThreadAttributes, bInheritHandles, dwCreationFlags, lpEnvironment, lpCurrentDirectory, &lpStartupInfo, &lpProcessInformation)
return dllcall("kernel32.dll", "long", "CreateProcessW", "long", lpApplicationName, "wchar *", lpCommandLine, "long", lpProcessAttributes, "long", lpThreadAttributes, "long", bInheritHandles, "long", dwCreationFlags, "long", lpEnvironment, "long", lpCurrentDirectory, "pstruct", lpStartupInfo, "pstruct", lpProcessInformation)
end
//关闭句柄
function CloseHandle(handle)
return dllcall("kernel32.dll", "long", "CloseHandle", "long", handle)
end
//读文件句柄,可以文件,管理,io这一系列的句柄内容
function ReadFile(hFile, lpBuffer, nNumberOfBytesToRead, &lpNumberOfBytesRead, lpOverlapped = 0)
return dllcall("kernel32.dll", "long", "ReadFile", "long", hFile, "long", lpBuffer, "long", nNumberOfBytesToRead, "plong", lpNumberOfBytesRead, "long", lpOverlapped)
end
作者:
lilm36
时间:
2018-3-28 21:56
匿名管道,执行CMD命令返回 回显内容
作者:
guozhaoti
时间:
2018-4-1 14:38
PipeCmd
作者:
追寻的梦
时间:
2018-4-3 21:07
222222222222222222222
作者:
q979033318
时间:
2018-4-5 12:08
作者:
asdhkjhjk
时间:
2018-4-5 16:29
··················
作者:
q765758576
时间:
2018-4-9 09:23
取全部模拟器
作者:
清风流水2060
时间:
2018-4-22 23:24
作者:
cxmin123456
时间:
2018-5-5 17:46
...............................
作者:
y407546712
时间:
2018-5-23 11:03
【批处理】匿名管道,执行CMD命令返回 回显内容
作者:
peanut0213
时间:
2018-5-24 14:58
谢谢楼主分享
作者:
hujie1005
时间:
2018-5-28 16:11
非常需要这个功能,期待
作者:
61026410
时间:
2018-6-10 17:46
多谢分享
作者:
2018789023
时间:
2018-7-8 17:48
addddddddddddddddd
作者:
2018789023
时间:
2018-7-8 18:08
这个dll放哪里的啊
作者:
forever43
时间:
2018-7-14 21:44
222222222222222222222
作者:
蓝骷髅
时间:
2018-7-17 13:35
顶顶顶顶顶顶顶顶顶顶顶顶顶顶
作者:
bobo198573
时间:
2018-8-1 11:42
111111111111111
作者:
zhangxiaod1
时间:
2018-8-5 16:35
看看是什么东西
作者:
qq297329239
时间:
2018-8-8 17:47
呀呀呀呀呀呀晕晕晕晕晕晕晕晕晕
作者:
a3220303
时间:
2018-8-13 00:54
学习借用下
作者:
tfcpzr97536
时间:
2018-8-27 19:15
说都没说清楚 到底在说什么
作者:
ZYZYUANG
时间:
2018-9-1 07:16
CMD命令
作者:
sunshadow_ja
时间:
2018-9-4 20:52
666666666666
作者:
fhjym
时间:
2018-9-18 09:17
爱爱爱啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
作者:
xyn3007
时间:
2018-9-18 11:50
ttp://bbs.tyuyan.net/forum.php?mod=viewthread&tid=69228&mobile=no
作者:
buycdkey
时间:
2018-9-18 22:53
阿斯顿发斯蒂芬
作者:
元芳
时间:
2018-9-20 03:14
1111111111111
作者:
88979825
时间:
2018-9-22 17:31
66666666666666666666
欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/)
Powered by Discuz! X3.1