You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python判断C++控制台程序何时等待输入并自动传入输入?

用Python给Windows控制台C++程序自动传入输入(适配不可预知的输入时机)

在Windows系统下,你可以借助pywin32库调用WinAPI实现需求,核心思路是通过匿名管道重定向C++程序的标准输入,随时向管道写入数据,无论程序何时等待输入都能接收。

步骤1:安装依赖

首先安装pywin32库:

pip install pywin32

步骤2:实现代码

以下是完整示例代码,替换你的C++程序路径即可直接使用:

import win32process
import win32api
import win32con
import win32file
import win32pipe
import time

def send_input(h_write, input_text):
    # Windows控制台默认GBK编码,需匹配C++程序的输入编码
    encoded_data = input_text.encode("gbk") + b"\r\n"  # 追加回车符模拟用户输入回车
    win32file.WriteFile(h_write, encoded_data)

if __name__ == "__main__":
    # 配置进程启动信息,重定向标准输入
    startup_info = win32process.STARTUPINFO()
    startup_info.dwFlags = win32con.STARTF_USESTDHANDLES
    
    # 创建匿名管道,用于向C++程序传递输入
    h_read, h_write = win32pipe.CreatePipe(None, 0)
    startup_info.hStdInput = h_read
    startup_info.hStdOutput = win32file.GetStdHandle(win32file.STD_OUTPUT_HANDLE)
    startup_info.hStdError = win32file.GetStdHandle(win32file.STD_ERROR_HANDLE)

    # 启动目标C++控制台程序,替换为你的程序路径
    cpp_program_path = r"C:\your\cpp\program\path.exe"
    process_info = win32process.CreateProcess(
        None,
        cpp_program_path,
        None,
        None,
        True,  # 允许子进程继承管道句柄
        0,
        None,
        None,
        startup_info
    )
    h_process, h_thread = process_info

    # 模拟在不同时机发送输入(根据实际需求调整)
    time.sleep(3)  # 等待3秒后发送第一个输入
    send_input(h_write, "Hello from Python")
    
    time.sleep(8)  # 再过8秒发送第二个输入
    send_input(h_write, "中文测试")

    # 等待C++程序执行完毕
    win32process.WaitForSingleObject(h_process, win32con.INFINITE)

    # 关闭所有句柄释放资源
    win32api.CloseHandle(h_read)
    win32api.CloseHandle(h_write)
    win32api.CloseHandle(h_process)
    win32api.CloseHandle(h_thread)

关键注意事项

  • 编码匹配:Windows控制台默认使用GBK编码,若你的C++程序指定了UTF-8等其他编码,需修改encode方法的参数。
  • 管道继承:CreateProcess的第五个参数必须设为True,确保子进程能继承管道句柄。
  • 输入缓冲:若程序暂时未等待输入,写入管道的数据会被缓冲,等程序下次读取输入时自动获取,无需担心时机问题。
  • 资源释放:程序结束后务必关闭所有创建的句柄,避免资源泄漏。

内容的提问来源于stack exchange,提问作者Jugert Mucoimaj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 05:42:38