Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何在VB中打开控制台_Vb.net_Visual Studio 2010_Console - Fatal编程技术网

Vb.net 如何在VB中打开控制台

Vb.net 如何在VB中打开控制台,vb.net,visual-studio-2010,console,Vb.net,Visual Studio 2010,Console,通过使用下图所示的设置,我目前拥有一个控制台应用程序。但是,现在我希望使用控制台打开多个表单,因此我想知道是否可以在Windows表单应用程序中打开多个表单或控制台 表单和控制台应用程序非常不同。因此,一般来说,流程需要是表单或控制台应用程序。表单应用程序是通过消息泵实现的,控制台应用程序是命令行驱动器。在一定程度上可以在控制台中运行表单,反之亦然,但通常不建议这样做。如果你真的需要这两种方法,我强烈建议你使用两种方法 如果您能详细介绍一下您的用例,我们可能会更好地帮助您 @tinstaafl您

通过使用下图所示的设置,我目前拥有一个
控制台应用程序。但是,现在我希望使用
控制台
打开多个表单,因此我想知道是否可以在
Windows表单应用程序中打开多个表单或
控制台


表单和控制台应用程序非常不同。因此,一般来说,流程需要是表单或控制台应用程序。表单应用程序是通过消息泵实现的,控制台应用程序是命令行驱动器。在一定程度上可以在控制台中运行表单,反之亦然,但通常不建议这样做。如果你真的需要这两种方法,我强烈建议你使用两种方法

如果您能详细介绍一下您的用例,我们可能会更好地帮助您


@tinstaafl您可以分享这个额外的编程或链接到 解决方案谢谢

这里有几个链接:

这是第一个的转换。您需要一个带有复选框名称“CheckBox1”的表单:

导入System.Runtime.InteropServices
公开课表格1
私有子表单1_Load(发送方作为对象,e作为事件参数)处理MyBase.Load
端接头
私有子CheckBox1_CheckedChanged(发送方作为对象,e作为事件参数)处理CheckBox1.CheckedChanged
如果复选框1.选中,则
Win32.AllocConsole()
Console.WriteLine(“完成!”)
其他的
Win32.FreeConsole()
如果结束
端接头
末级
公共类Win32
作为布尔值的公共共享函数alloconsole()
端函数
作为布尔值的公共共享函数FreeConsole()
端函数
末级

每次单击复选框时,都会显示或隐藏控制台。您可以像任何控制台应用程序一样进行写入和读取操作。

因此这非常酷。在设计器中,只需使用工具箱公共控件添加一个复选框

然后双击新的“复选框1”,它将自动插入此子程序:

Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged

End Sub
然后,您只需添加以下代码:

    If CheckBox1.Checked Then
        Win32.AllocConsole()
        Console.WriteLine("Done!")
    Else
        Win32.FreeConsole()
    End If
当您运行windows窗体程序并选中该框时,它将自动打开窗口并保持打开状态,直到您取消选中该框为止

将此类添加到程序的底部:

Public Class Win32 

    <DllImport("kernel32.dll")> Public Shared Function AllocConsole() As Boolean

    End Function
    <DllImport("kernel32.dll")> Public Shared Function FreeConsole() As Boolean

    End Function

End Class

如果要打开一个控制台窗口与之交互,并且在关闭控制台时,该操作不会终止windows程序,则可以添加以下两行代码:

将myProcess作为进程


myProcess=Process.Start(“cmd.exe”)

您不能以“Windows窗体应用程序”类型打开控制台。实际上您可以。它需要额外的编程,但可以完成。@Tinstaaff您可以共享此额外编程或指向解决方案的链接吗。谢谢这些链接很好,但是vb.net有什么可以代替c#的吗?否则我需要转换它,这可能需要一段时间。谢谢这很好而且很有效。但是有没有办法通过使用控制台来检查控制台是否被终止,因为当前如果关闭,它会停止我的整个程序?这是可以完成的,但需要对Windows32 API进行更深入的编程。如果您更明确地提到您想要做什么,那么可能有一个比使用控制台更好的解决方案。
Public Class Win32 

    <DllImport("kernel32.dll")> Public Shared Function AllocConsole() As Boolean

    End Function
    <DllImport("kernel32.dll")> Public Shared Function FreeConsole() As Boolean

    End Function

End Class
Imports System.Runtime.InteropServices