c ++ GetNumberOfConsoleInputEvents fail =与另一个进程的通信

时间:2016-05-05 05:04:16

标签: c++ c windows qt winapi

我使用QProcess类在Windows上运行外部应用程序。 此外部应用程序在此之后立即崩溃。 这个外部应用程序崩溃在这样的代码上:

    HANDLE sh = GetStdHandle(STD_INPUT_HANDLE);
    if (sh == INVALID_HANDLE_VALUE)
      abort();
    DWORD eventsNum;
    if (!GetNumberOfConsoleInputEvents(sh, &eventsNum))
        abort();

GetNumberOfConsoleInputEvents失败,GetLastError返回6 =无效句柄。所以看起来GetNumberOfConsoleInputEvents不适用于管道? 是否可以以统一的方式使用控制台句柄,因此我可以在stdin中接收可用字节数而不知道这是管道/控制台?

换句话说,我希望我的应用程序适用于两种情况:当我从cmd.exe运行它时,当我从另一个使用管道的应用程序运行它时(或者使用QProcess重定向子项的其他应用程序)标准输入)。

我无法使用FILE *stdin,因为我需要WaitFor...函数来处理stdin。

0 个答案:

没有答案