开启辅助访问

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

取DOS返回值,返回进程ID

查看数: 610 | 评论数: 16 | 收藏 0
关灯 | 提示:支持键盘翻页 & lt;-左 右 ->
    组图打开中,请稍候......
发布时间: 2024-10-22 12:43

正文摘要:

  子程序名返回值类型公开备 注取DOS返回文本1文本型 取出一个dos命令的返回信息。可设置即时回显。注意:该命令会阻塞,[返回值]一直到cmd中的内容执行完毕后才会返回。[取自超级模块]参数名类 型参考 ...

回复

向月亮道晚安   美国 发表于 2024-10-23 08:49:23
千年 发表于 2024-10-22 14:38
本来就是创建一个cmd.exe进程,再从进程里取出

大佬发我看看?
千年   湖南省益阳市 发表于 2024-10-22 14:38:32

本来就是创建一个cmd.exe进程,再从进程里取出
向月亮道晚安   美国 发表于 2024-10-22 14:29:17
千年 发表于 2024-10-22 14:22
这种要不要??、

我想要的是取进程ID

点评

本来就是创建一个cmd.exe进程,再从进程里取出   湖南省益阳市  详情 回复 发表于 2024-10-22 14:38
千年   湖南省益阳市 发表于 2024-10-22 14:22:19


这种要不要??、
向月亮道晚安   美国 发表于 2024-10-22 14:03:23
LEOONL 发表于 2024-10-22 13:44
完整源码,光你这段我运行不了
  
窗口程序集名保 留  保 留备 注
窗口程序集_窗口1   
子程序名返回值类型公开备 注
_按钮1_被单击  
变量名类 型静态数组备 注
ID整数型 
ID = 取DOS返回文本1 (编辑框2.内容, &信息回调)
调试输出 (ID)
子程序名返回值类型公开备 注
信息回调  
参数名类 型参考可空数组备 注
文本文本型
编辑框3.加入文本 (文本 + #换行符 )
子程序名返回值类型公开备 注
取DOS返回文本1整数型 取出一个dos命令的返回信息。可设置即时回显。注意:该命令会阻塞,[返回值]一直到cmd中的内容执行完毕后才会返回。[取自超级模块]
参数名类 型参考可空数组备 注
命令行文本文本型欲执行的命令行文本
即时回显子程序指针DOS即时回显信息回调函数 回调DOS函数(回显信息) 返回逻辑值,真:停止,假:继续
变量名类 型静态数组备 注
SECURITY_ATTRIBUTESSECURITY_ATTRIBUTES 
STARTUPINFOSTARTUPINFO_短整数 
PROCESS_INFORMATION_进程结构 
txt字节集 
len整数型 
hWrite整数型 
hRead整数型 
EXIT整数型 
返回值文本型 
临时文本型 
参数整数型1
进程ID整数型 
如果真 (命令行文本 = “”)
返回 (0)

SECURITY_ATTRIBUTES.nLength = 12
SECURITY_ATTRIBUTES.lpSecurityDescriptor = 0
SECURITY_ATTRIBUTES.bInheritHandle = 1
CreatePipe (hRead, hWrite, SECURITY_ATTRIBUTES, 0)  ' 创建一个CMD匿名管道
STARTUPINFO.cb = 68
STARTUPINFO.dwFlags = 位或 ( #STARTF_USESHOWWINDOW, #STARTF_USESTDHANDLES )
STARTUPINFO.wShowWindow = #SW_HIDE
STARTUPINFO.hStdOutput = hWrite
STARTUPINFO.hStdError = hWrite
如果 (取操作系统类别 () ≤ 2)
进程ID=_创建新进程_短整数 (0, “command.com /c ” + 命令行文本, 0, 0, 真, 0, 0, 0, STARTUPINFO, PROCESS_INFORMATION)  ' 创建一个新进程,并且设置读写管道,创建成功后,进程会自动再创建一个写管道端口
进程ID=_创建新进程_短整数 (0, “cmd.exe /c ” + 命令行文本, 0, 0, 真, 0, 0, 0, STARTUPINFO, PROCESS_INFORMATION)  ' 创建一个新进程,并且设置读写管道,创建成功后,进程会自动再创建一个写管道端口

_关闭对象 (hWrite)  ' 因为我们开始已经创建了一个写管道端口,现在进程创键时又自动创键了一个写管道端口,所以应关闭多余的管道写端口
判断循环首 (len ≠ -1)  ' 制造一个无限循环
PeekNamedPipe (hRead, 0, 0, 0, len, 0)  ' 查看管道中是否有数据
如果 (len ≠ 0)
txt = 取空白字节集 (1024)
_读出文件中数据 (hRead, txt, 1023, len, 0)  ' 从管道中读取数据
临时 = 取字节集数据 (txt, #文本型, )
如果真 (是否为空 (即时回显))
参数 [1]_取指针_文本型 (临时, 临时, 0)
如果真 (_动态调用子程序 ( #动态调用代码, 即时回显, 参数, 1, ))
' ====图片字节集: #动态调用代码 ==== API动态调用子程序
' *** 缩略程序块 ***
' 动态调用代码 =  {85,139,236,86,139,117,16,141,78,255,133,201,124,21,139,69,12,141,4,136,65,139,16,137,85,16,255,117,16,131,232,4,73,117,242,255,85,8,137,69,12,139,69,20,133,192,116,13,141,4,181,0,0,0,0,137,69,16,3,101,16,139,69,12,94,93,194,16,0}
' 【汇编码】:
' push ebp
' mov ebp, esp
' push esi
' mov esi, dword ptr [ebp+10h]
' lea ecx, dword ptr [esi-01h]
' test ecx, ecx
' jl Label1
' mov eax, dword ptr [ebp+0Ch]
' lea eax, dword ptr [eax+ecx*4]
' inc ecx
' Label2:
' mov edx, dword ptr [eax]
' mov dword ptr [ebp+10h], edx
' push dword ptr [ebp+10h]
' sub eax, 04h
' dec ecx
' jne Label2
' Label1:
' call dword ptr [ebp+08h]
' mov dword ptr [ebp+0Ch], eax
' mov eax, dword ptr [ebp+14h]
' test eax, eax
' je Label3
' lea eax, dword ptr [00000000h+esi*4]
' mov dword ptr [ebp+10h], eax
' add esp, dword ptr [ebp+10h]
' Label3:
' mov eax, dword ptr [ebp+0Ch]
' pop esi
' pop ebp
' retn 0010h
_关闭对象 (hRead)
跳出循环 ()

返回值 = 返回值 + 临时
_取中断进程退出代码 (PROCESS_INFORMATION.进程句柄, EXIT)  ' 查看指定进程是否已结束
如果真 (EXIT ≠ #STILL_ACTIVE )  ' 因为会有程序退出来了,但管道中还有数据的情况,所以必须在管道中没有数据的情况下判断程序是否已结束,这时才能中止循环!
_关闭对象 (hRead)  ' 关闭管道
跳出循环 ()

处理事件 ()
判断循环尾 ()
返回 (进程ID)


i支持库列表   支持库注释   
spec特殊功能支持库


全部的代码就这么多了
LEOONL   四川省宜宾市 发表于 2024-10-22 13:44:52
向月亮道晚安 发表于 2024-10-22 13:35
就改了

如果真 (命令行文本 = “”)

完整源码,光你这段我运行不了
向月亮道晚安   美国 发表于 2024-10-22 13:35:11
LEOONL 发表于 2024-10-22 13:28
放完整源码看看

就改了

如果真 (命令行文本 = “”)
返回 (0)

这里
向月亮道晚安   美国 发表于 2024-10-22 13:34:52
LEOONL 发表于 2024-10-22 13:28
放完整源码看看

我的取DOS3就是你的这个
LEOONL   四川省宜宾市 发表于 2024-10-22 13:28:01
向月亮道晚安 发表于 2024-10-22 13:24
返回的都是1,而且命令返回也只有一行了

放完整源码看看
发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:[email protected]
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表