【问题标题】:When closing Console Window its close the all application关闭控制台窗口时关闭所有应用程序
【发布时间】:2013-02-27 11:47:12
【问题描述】:

我正在使用 Windows 窗体,并且我有一个主 窗体,当我单击某个按钮时,他会打开一个 控制台窗口,它会做一些工作以及何时完成我想关闭控制台而不关闭所有应用程序(主窗体)。我尝试使用Environment.Exit(1) 或属于Destroy()Create() 控制台窗口的函数Destroy() 关闭控制台。 Environment.Exit(1)Destroy() 都关闭了控制台,但也关闭了表单。 我想知道是否有办法只关闭控制台而不关闭整个应用程序

编辑

    private void btSync_Click(object sender, EventArgs e)
    {
        Create();
        ServerSync sycs=new ServerSync();
        Thread sync = new Thread(new ThreadStart(sycs.run));
        sync.Start();
    }

Create() 打开一个运行Socket() 线程的控制台窗口。

问题已解决 当我启动线程时,我在代码末尾添加 ThreadName.Abort 并在线程外部检查 ThreadName.IsAlived==false 和是否在 Hide() 控制台内,然后 Destroy() 和它的工作原理!

来自AppDeveloper 答案的Hide() 方法。 感谢您的帮助!

【问题讨论】:

  • 请贴出打开控制台窗口的代码来做一些工作。
  • 请发void main()的代码

标签: c#


【解决方案1】:

而不是使用Environment.Exit() 隐藏Console Window

using System.Runtime.InteropServices;
[DllImport("kernel32.dll")]
static extern IntPtr GetConsoleWindow();

[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

const int SW_HIDE = 0x0;
const int SW_SHOW = 0x5;

public static void HideConsoleWindow()
{
    var handle = GetConsoleWindow();
    ShowWindow(handle, SW_HIDE);

}

【讨论】:

  • 但是我需要关闭控制台,因为当套接字关闭时我想关闭控制台并让用户在需要时再次打开控制台。
  • 你可以关闭socket的句柄,并清除控制台窗口,它会看起来像新的一样!
【解决方案2】:

也许有一个 console.hide() 选项?可以试试看。

【讨论】:

  • 没有。通常人们将答案作为答案发布。如果这是一个猜测也许只是评论:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-21
  • 1970-01-01
  • 1970-01-01
  • 2014-02-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多