首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >管道通过命令后控制台重定向的问题

管道通过命令后控制台重定向的问题
EN

Stack Overflow用户
提问于 2019-11-06 08:48:01
回答 1查看 41关注 0票数 0

我试图创建一个菜单,它可以管道数据到,所以它会自动生成菜单,问题是控制台的输入被重定向,无法找到任何方法把它重新设置为默认情况下再读取键盘输入。

我试过:

代码语言:javascript
复制
Console.SetIn(New IO.StreamReader(Console.OpenStandardInput))

..。在生成列表后重新获得控制权,但没有用。

我还试图在生成列表后保存console.in状态并还原它,但再次失败。

*守则

代码语言:javascript
复制
sub main()

  Dim lista As New List(Of String)
        Do
            Dim line = Console.ReadLine()
            Select Case line
                Case vbNullString
                    Exit Do
                Case Else
                    lista.Add(line)
            End Select
        Loop

        For Each linea As String In lista
            Console.WriteLine(linea)
        Next

        Console.ReadKey()
end sub ()

让我们假设我们将代码编译成program.exe并执行以下操作:

代码语言:javascript
复制
dir /b | program.exe

所有代码都执行ok,直到console.readkey ()将其转换为错误:

System.InvalidOperationException:控制台从文件重定向

……或者类似的东西(我的电脑是用另一种语言写的,所以没有准确的翻译)

我的问题是:如何重新控制重定向的console.in,以便读取输入键进行选择?

EN

Stack Overflow用户

回答已采纳

发布于 2019-11-06 18:01:36

好的,我找到了解决办法!

定义这些win32 api调用:

代码语言:javascript
复制
Private Declare Function FreeConsole Lib "kernel32" () As Long
Private Declare Function AttachConsole Lib "kernel32" (ByVal consoleid As Long) As Long

如果您想重新获得控制台的控制权,请添加以下内容:

代码语言:javascript
复制
  FreeConsole() ' free current attached console
  AttachConsole(-1) ' regain control of parent console

就是这样。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58726192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档