我试图创建一个菜单,它可以管道数据到,所以它会自动生成菜单,问题是控制台的输入被重定向,无法找到任何方法把它重新设置为默认情况下再读取键盘输入。
我试过:
Console.SetIn(New IO.StreamReader(Console.OpenStandardInput))..。在生成列表后重新获得控制权,但没有用。
我还试图在生成列表后保存console.in状态并还原它,但再次失败。
*守则
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并执行以下操作:
dir /b | program.exe所有代码都执行ok,直到console.readkey ()将其转换为错误:
System.InvalidOperationException:控制台从文件重定向
……或者类似的东西(我的电脑是用另一种语言写的,所以没有准确的翻译)
我的问题是:如何重新控制重定向的console.in,以便读取输入键进行选择?
发布于 2019-11-06 18:01:36
好的,我找到了解决办法!
定义这些win32 api调用:
Private Declare Function FreeConsole Lib "kernel32" () As Long
Private Declare Function AttachConsole Lib "kernel32" (ByVal consoleid As Long) As Long如果您想重新获得控制台的控制权,请添加以下内容:
FreeConsole() ' free current attached console
AttachConsole(-1) ' regain control of parent console就是这样。
https://stackoverflow.com/questions/58726192
复制相似问题