相关疑难解决方法(0)

捕获控制台出口C#

我有一个包含很多线程的控制台应用程序.有些线程可以监视某些条件,如果它们是真的则终止程序.这种终止可以随时发生.

我需要一个可以在程序关闭时触发的事件,以便我可以清理所有其他线程并正确关闭所有文件句柄和连接.我不确定.NET框架中是否已经内置了一个,所以我在编写自己的框架之前就已经问过了.

我想知道是否有一个事件:

MyConsoleProgram.OnExit += CleanupBeforeExit;
Run Code Online (Sandbox Code Playgroud)

.net c# console events exit

88
推荐指数
4
解决办法
8万
查看次数

在Windows Web Server 2008中的事件CTRL_CLOSE_EVENT上未调用CtrlHandler

我有一个控制台应用程序,用于SetConsoleCtrlHandler设置处理和处理的处理程序CTRL_CLOSE_EVENT.处理程序简单的返回TRUE,这将导致一个对话框出现,并提示用户继续关闭或取消.

该软件在Windows XP SP3和Windows Web Server 2008 SP2上运行.

在XP中,当单击控制台窗口中的"X"时,我的控制处理程序被调用,并预期会出现提示.在Server 2008上关闭控制台窗口不会调用我的控制处理程序,应用程序将关闭而不会提示.

要检查控制处理程序是否正确设置,我已添加了一个案例CTRL_C_EVENT.我可以看到为Ctrl-C调用代码.

Server 2008中处理关闭事件的方式有什么不同吗?好像他们根本没有通过ctrl处理程序.

编辑:看一下MSDN页面SetConsoleCtrlHandler约我无法找到任何信息CTRL_CLOSE_EVENT不再在Vista和更高版本正在处理.

如果你正在使用Windows处理(HWND),而不是控制台CTRL事件,是有可能得到发送到控制台窗口中的关闭消息,并处理这个问题?

c++ console winapi console-application event-handling

6
推荐指数
1
解决办法
2355
查看次数

在控制台关闭时阻止Windows窗体应用程序关闭

我有一个标准的Windows窗体应用程序,我需要一个解决方案来打开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

' ...

Win32.AllocConsole()
Console.WriteLine("Test")
Run Code Online (Sandbox Code Playgroud)

使用上面的P/Invoke函数,我可以打开一个控制台,而我的应用程序不是"控制台应用程序".

我现在遇到的问题是,当我关闭控制台窗口时,它退出我的程序并关闭所有窗体和Windows.有没有办法阻止用户关闭控制台窗口,或者在控制台窗口关闭时阻止程序退出?(我可以使用以编程方式关闭控制台Win32.FreeConsole().)

vb.net console

6
推荐指数
1
解决办法
1068
查看次数

在控制台关闭时阻止应用程序退出

我用来AllocConsole()在winform应用程序中打开一个控制台.

如何在控制台关闭时阻止应用程序退出?

编辑

我不希望在控制台中显示完成百分比的更新

    void bkpDBFull_PercentComplete(object sender, PercentCompleteEventArgs e)
    {
        AllocConsole();
        Console.Clear();
        Console.WriteLine("Percent completed: {0}%.", e.Percent);
    }
Run Code Online (Sandbox Code Playgroud)

我尝试使用richtextBox作为替代方案

       s =(e.Percent.ToString());
       richTextBox1.Clear();
       richTextBox1.AppendText("Percent completed:  " +s +"%");
Run Code Online (Sandbox Code Playgroud)

但我无法及时看到完成百分比更新.它仅在100%完成时出现.

还有其他选择

c# console winforms

5
推荐指数
1
解决办法
1087
查看次数

在 WPF 应用程序中,您如何覆盖控制台关闭命令?

在我的 WPF 应用程序中,我使用控制台窗口作为调试/消息窗口 - 我有选项设置来根据用户的需要显示和隐藏窗口,一切都很好。唯一的问题是,当用户关闭控制台窗口时,它会退出整个程序。如何覆盖它,以便当用户单击 X 时它只是隐藏控制台而不是退出应用程序?

这是我到目前为止:

const int SW_HIDE = 0;
const int SW_SHOW = 5;
public static bool ConsoleVisible { get; private set; }

[DllImport("kernel32.dll")]
static extern IntPtr GetConsoleWindow();

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


public static void HideConsole()
{
    var handle = GetConsoleWindow();
    ShowWindow(handle, SW_HIDE);
    ConsoleVisible = false;

}
public static void ShowConsole()
{
    var handle = GetConsoleWindow();
    ShowWindow(handle, SW_SHOW);
    ConsoleVisible = true;
}
Run Code Online (Sandbox Code Playgroud)

** 对于想要使用它的人,您需要: using System.Runtime.InteropServices;

此代码源自此答案:https : //stackoverflow.com/a/3571628/649382

** 编辑 …

c# wpf console

3
推荐指数
1
解决办法
1219
查看次数

检测控制台何时关闭?

我用谷歌搜索,发现Console.CancelKeyPress哪些是有用的,但很多次我通过关闭窗口关闭我的控制台.使用右上角的X. Console.CancelKeyPress检测到ctrl + c,如何通过点击X来检测关闭?

.net c# console

0
推荐指数
1
解决办法
4910
查看次数

标签 统计

console ×6

c# ×4

.net ×2

c++ ×1

console-application ×1

event-handling ×1

events ×1

exit ×1

vb.net ×1

winapi ×1

winforms ×1

wpf ×1