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

如何通过C语言按PID向运行中的cmd.exe发送回车键触发新命令提示符

修复思路

你的原有代码存在核心逻辑错误:调用WriteConsole写入控制台输出流,写入的内容只会被识别为普通输出文本,根本不会进入cmd进程的输入队列,自然无法触发cmd的回车处理逻辑。
你需要调用WriteConsoleInput向控制台输入缓冲区写入完整的键盘事件,模拟用户真实按下回车键的操作。

修改后的可运行代码

#include <Windows.h>
#include <stdio.h>

// 编译命令:gcc send_enter.c -o send_enter.exe
int main(int argc, char** argv) {
    if (argc < 2) {
        printf("用法:send_enter.exe <目标cmd进程PID>\n");
        return 1;
    }
    DWORD pid = atoi(argv[1]);
    printf("目标PID:%d\n", pid);

    if (!FreeConsole()) {
        DWORD err = GetLastError();
        // 错误码1006表示当前进程没有绑定控制台,属于正常情况,可以忽略
        if (err != ERROR_INVALID_HANDLE) {
            printf("FreeConsole失败,错误码:%d\n", err);
            return 1;
        }
    }

    if (!AttachConsole(pid)) {
        printf("AttachConsole失败,错误码:%d\n", GetLastError());
        return 2;
    }

    HANDLE hConsoleInput = GetStdHandle(STD_INPUT_HANDLE);
    if (hConsoleInput == INVALID_HANDLE_VALUE) {
        printf("获取输入句柄失败,错误码:%d\n", GetLastError());
        FreeConsole();
        return 3;
    }

    INPUT_RECORD ir[2] = {0};
    // 构造回车键按下事件
    ir[0].EventType = KEY_EVENT;
    ir[0].Event.KeyEvent.bKeyDown = TRUE;
    ir[0].Event.KeyEvent.wVirtualKeyCode = VK_RETURN;
    ir[0].Event.KeyEvent.uChar.UnicodeChar = L'\r';
    ir[0].Event.KeyEvent.wRepeatCount = 1;

    // 构造回车键抬起事件
    ir[1].EventType = KEY_EVENT;
    ir[1].Event.KeyEvent.bKeyDown = FALSE;
    ir[1].Event.KeyEvent.wVirtualKeyCode = VK_RETURN;
    ir[1].Event.KeyEvent.uChar.UnicodeChar = L'\r';
    ir[1].Event.KeyEvent.wRepeatCount = 1;

    DWORD dwWritten;
    if (!WriteConsoleInput(hConsoleInput, ir, 2, &dwWritten)) {
        printf("写入输入事件失败,错误码:%d\n", GetLastError());
        FreeConsole();
        return 4;
    }

    printf("已成功发送回车事件\n");
    FreeConsole();
    return 0;
}

注意事项

  • 如果目标cmd是SYSTEM权限的服务进程,你的程序需要以管理员权限运行,且要保证和目标进程处于同一个Windows会话中,否则AttachConsole会报权限错误。
  • 执行成功后目标cmd会立即生成新的命令提示符,和用户手动按回车键效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:27:00