Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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
C# 应用程序取消关闭_C#_.net_C# 4.0 - Fatal编程技术网

C# 应用程序取消关闭

C# 应用程序取消关闭,c#,.net,c#-4.0,C#,.net,C# 4.0,我的一个应用程序出现问题,它似乎取消了关闭或重新启动我的计算机。 我想这是因为我捕获了表单关闭事件,并按如下方式取消它: private void Main_FormClosing(object sender, FormClosingEventArgs e) { if (!AllowApplicationClose) { e.Cancel = true; this.WindowState = FormWindowState.Minimized;

我的一个应用程序出现问题,它似乎取消了关闭或重新启动我的计算机。 我想这是因为我捕获了表单关闭事件,并按如下方式取消它:

private void Main_FormClosing(object sender, FormClosingEventArgs e)
{
    if (!AllowApplicationClose)
    {
        e.Cancel = true;
        this.WindowState = FormWindowState.Minimized;
    }
}
我这样做是为了使关闭按钮最小化到任务栏。我确实希望能够在不退出应用程序的情况下重新启动。有更好的方法吗?还是一种知道windows是否正在关闭应用程序的方法

编辑:谢谢你的回答。对不起,我只能选一个正确的,我只选了最上面的一个。再次感谢

检查事件参数的属性,如果是
windowshutdown
TaskManagerClosing
,则不执行任何操作,请先检查;仅在用户启动时取消:
CloseReason.UserClosing


请参见此处,了解您可以使用的其他值:

您可以使用它来检测表单是否被用户关闭或更好(在您的情况下)当系统试图注销或关闭/重新启动时,使用-class获取事件,以便在最小化应用程序时也可以关闭应用程序。

使用线程计时器过程,然后使用下面的过程分别关闭windows进程

public void Computer_Shutdown()
        {
            if (this.checkBox.Checked)
            {
                System.Diagnostics.Process[] processes = 
                   System.Diagnostics.Process.GetProcesses();

                foreach (System.Diagnostics.Process 
                           processParent in processes)
                {
                    System.Diagnostics.Process[] processNames = 
                                 System.Diagnostics.Process.
                                 GetProcessesByName
                                 (processParent.ProcessName);

                    foreach (System.Diagnostics.Process 
                            processChild in processNames)
                    {
                        try
                        {
                            System.IntPtr hWnd = 
                                   processChild.MainWindowHandle;

                            if (IsIconic(hWnd))
                            {
                                ShowWindowAsync(hWnd, SW_RESTORE);
                            }

                            SetForegroundWindow(hWnd);

                            if (!(processChild.
                               MainWindowTitle.Equals(this.Text)))
                            {
                                processChild.CloseMainWindow();
                                processChild.Kill();
                                processChild.WaitForExit();
                            }
                        }
                        catch (System.Exception exception)
                        {

                        }
                    }
                }
            }

这将结束过程,我不认为这是原始海报(OP)想要做的。他对windows关闭时不取消关闭应用程序感兴趣。