
比如,我调用 cmd.exe 来执行“ipconfig”命令,如何才能获取到返回呢?
例如:
import win32process def main(): exePath = "cmd.exe" param = "ipconfig" param = exePath + " " + param handle = win32process.CreateProcess(exePath, param, None, None, 0, win32process.CREATE_NEW_CONSOLE, None, None, win32process.STARTUPINFO()) ''' 此处如何获取 handle 的返回结果?: D:\>ipconfig Windows IP 配置 以太网适配器 本地连接: 连接特定的 DNS 后缀 . . . . . . . : 本地链接 IPv6 地址. . . . . . . . : fe80::8...%11 IPv4 地址 . . . . . . . . . . . . : 192....1.3 子网掩码 . . . . . . . . . . . . : 255.2...5.0 默认网关. . . . . . . . . . . . . : fe80...11 19....1 ''' if '__main__' == __name__: main() 1 zk8802 2020 年 3 月 25 日 via iPhone 可以用 subprocess.Popen()。 |
2 xiaolinjia 2020 年 3 月 25 日 不是 import subprocess subprocess.call('ipconfig') 就可以了么。 |
4 mingl0280 2020 年 3 月 25 日 via Android CreateProcess 调完后(CreateProcess 有个很长的参数列表,最后一个是 PROCESS_INFO &pInfo)调 WaitForSingleObject(pInfo.hProcess),然后调 GetExitCodeProcess(pInfo.hProcess),wfso 和 gecp 参数你自己查一下 MSDN 。 |
5 cz5424 2020 年 3 月 25 日 via iPhone 直接通过 socket 接口获取信息不好吗?这个绕了一大圈 |
6 jinsongzhao 2020 年 3 月 25 日 via Android 调用的进程通过什么方式返回,就用什么方式取。比如麻烦点的,创建进程时,参数结构体中提供一个标准输出句柄,调用进程通过 print 到标准输出 stdout 。还可以共享内存,可以文件,可以 socket |
7 xupefei 2020 年 3 月 25 日 via iPhone |
8 hx1997 2020 年 3 月 25 日 难道不是……管道吗…… CreateProcess 可以重定向输出的吧 |
9 wnpllrzodiac 2020 年 3 月 25 日 via Android 管道,获取 ffmpeg 转码进度就是这么玩的。需要的可以祥询 |
10 loginv2 2020 年 3 月 25 日 管道重定向到本程序的标准输出 |
11 ysc3839 2020 年 3 月 25 日 通过管道获取。 不过既然用的是 Python,为什么不使用 Python 自带的跨平台的 subprocess 呢?会简单很多。 |
12 ysc3839 2020 年 3 月 25 日 > 参数中有特殊字符,用这两个都报错 估计你的代码设置了使用 shell 执行吧? shell 需要进行一些转义,尝试不要使用 shell 。 |
13 g00001 2020 年 3 月 26 日 Python 跨平台有时候还是会有些负担, Windows 上用 aardio 搞这些东西就很容易,转义都自动处理,管道读写也简单。 import win; import process.popen; var ipcOnfig= process.popen("ipconfig","/all"); var str = ipconfig.read(-1); win.msgbox(str); |