Evaluar y enviar comentarios
MSDN
MSDN Library
 CloseMainWindow (Método)
Contraer todo/Expandir todo Contraer todo
Esta página es específica de
Microsoft Visual Studio 2005/.NET Framework 2.0

Hay además otras versiones disponibles para:
Biblioteca de clases de .NET Framework
Process.CloseMainWindow (Método)

Cierra un proceso que contiene una interfaz de usuario mediante el envío de un mensaje de cierre a su ventana principal.

Espacio de nombres: System.Diagnostics
Ensamblado: System (en system.dll)

Visual Basic (Declaración)
Public Function CloseMainWindow As Boolean
Visual Basic (Uso)
Dim instance As Process
Dim returnValue As Boolean

returnValue = instance.CloseMainWindow
C#
public bool CloseMainWindow ()
C++
public:
bool CloseMainWindow ()
J#
public boolean CloseMainWindow ()
JScript
public function CloseMainWindow () : boolean

Valor devuelto

Es true si el mensaje de cierre se envió correctamente; es false si el proceso asociado no tiene una ventana principal o si la ventana principal está deshabilitada (por ejemplo, si se está mostrando un cuadro de diálogo modal).
Tipo de excepciónCondición

PlatformNotSupportedException

La plataforma es Windows 98 o Windows Millennium (Windows Me); establezca el valor de la propiedad ProcessStartInfo.UseShellExecute en false para obtener acceso a esta propiedad en Windows 98 y Windows Me.

Cuando un proceso se está ejecutando, el bucle de mensajes se encuentra en estado de espera. El bucle de mensajes se ejecuta cada vez que el sistema operativo envía un mensaje de Windows al proceso. Cuando se llama a CloseMainWindow, se envía una solicitud para cerrar a la ventana principal que, en una aplicación con formato correcto, cierra las ventanas secundarias y revoca todos los bucles de mensajes en ejecución de la aplicación. Una solicitud de cierre del proceso mediante una llamada a CloseMainWindow no obliga a la aplicación a cerrarse. La aplicación puede pedir la confirmación del usuario antes de finalizar, o evitar su finalización. Para hacer que la aplicación se cierre, hay que utilizar el método Kill. El comportamiento de CloseMainWindow es igual al que se observa cuando el usuario cierra la ventana principal de una aplicación a través del menú del sistema. Por tanto, el hecho de solicitar la salida del proceso cerrando la ventana principal no obliga a la aplicación a salir inmediatamente.

Los datos modificados por el proceso o los recursos asignados al proceso pueden perderse si se llama al método Kill. Kill provoca una terminación anómala del proceso y sólo debe utilizarse cuando sea necesario. CloseMainWindow permite que el proceso termine de forma ordenada y cierra todas las ventanas, por lo que es preferible utilizarlo en el caso de las aplicaciones que disponen de una interfaz. Si CloseMainWindow produce un error, se puede utilizar Kill para terminar el proceso. El uso del método Kill constituye la única forma de terminar los procesos que no tienen interfaces gráficas.

Sólo es posible llamar a los métodos Kill y CloseMainWindow en el caso de aquellos procesos que se ejecuten en el equipo local. No se puede imponer la salida de los procesos que se ejecutan en equipos remotos. Sólo se puede ver la información relacionada con los procesos que se ejecutan en equipos remotos.

Nota de la plataforma Windows 98, Windows Millennium: Esta propiedad no se encuentra disponible en esta plataforma si el proceso se ha iniciado con la propiedad ProcessStartInfo.UseShellExecute establecida en true.

En el siguiente ejemplo se inicia una instancia del Bloc de notas. A continuación, se recupera el uso de memoria física a intervalos de 2 segundos durante 10 segundos como máximo. También se detecta si el proceso termina antes de que transcurran 10 segundos. El proceso se cierra si se sigue ejecutando después de transcurrir 10 segundos.

Visual Basic
Imports System
Imports System.Diagnostics
Imports System.Threading

Namespace Process_Sample
   Class MyProcessClass

      Public Shared Sub Main()
         Try

            Dim myProcess As Process
            myProcess = Process.Start("Notepad.exe")
            ' Display physical memory usage 5 times at intervals of 2 seconds.
            Dim i As Integer
            For i = 0 To 4
               If not myProcess.HasExited Then
               
                  ' Discard cached information about the process.
                  myProcess.Refresh()
                  ' Print working set to console.
                  Console.WriteLine("Physical Memory Usage: " + _
                                              myProcess.WorkingSet.ToString())
                  ' Wait 2 seconds.
                  Thread.Sleep(2000)
               Else 
                  Exit For
               End If
              
            Next i

           ' Close process by sending a close message to its main window.
           myProcess.CloseMainWindow()
           ' Free resources associated with process.
           myProcess.Close()

         Catch e As Exception
            Console.WriteLine("The following exception was raised: ")
            Console.WriteLine(e.Message)
         End Try
      End Sub 'Main
   End Class 'MyProcessClass
End Namespace 'Process_Sample
C#
using System;
using System.Diagnostics;
using System.Threading;

namespace Process_Sample
{
   class MyProcessClass
   {
      public static void Main()
      {
         try
         {
            Process myProcess;
            myProcess = Process.Start("Notepad.exe");
            // Display physical memory usage 5 times at intervals of 2 seconds.
            for (int i = 0;i < 5; i++)
            {
               if (!myProcess.HasExited)
               {
                   // Discard cached information about the process.
                   myProcess.Refresh();
                   // Print working set to console.
                   Console.WriteLine("Physical Memory Usage: " 
                                        + myProcess.WorkingSet.ToString());
                   // Wait 2 seconds.
                   Thread.Sleep(2000);
               }
               else {
                   break;
               } 
            }

            // Close process by sending a close message to its main window.
            myProcess.CloseMainWindow();
            // Free resources associated with process.
            myProcess.Close();

         }
         catch(Exception e)
         {
            Console.WriteLine("The following exception was raised: ");
            Console.WriteLine(e.Message);
         }
      }
   }
}
C++
#using <System.dll>

using namespace System;
using namespace System::Diagnostics;
using namespace System::Threading;
int main()
{
   try
   {
      Process^ myProcess;
      myProcess = Process::Start(  "Notepad.exe" );
      
      // Display physical memory usage 5 times at intervals of 2 seconds.
      for ( int i = 0; i < 5; i++ )
      {
         if (  !myProcess->HasExited )
         {
            
            // Discard cached information about the process.
            myProcess->Refresh();
            
            // Print working set to console.
            Console::WriteLine( "Physical Memory Usage : {0}", myProcess->WorkingSet.ToString() );
            
            // Wait 2 seconds.
            Thread::Sleep( 2000 );
         }
         else
         {
            break;
         }

      }
      myProcess->CloseMainWindow();
      
      // Free resources associated with process.
      myProcess->Close();
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "The following exception was raised: " );
      Console::WriteLine( e->Message );
   }

}

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition

.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.

.NET Framework

Compatible con: 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 2.0
Contenido de la comunidad   ¿Qué es Community Content?
Agregar contenido nuevo RSS  Anotaciones
Processing
© 2012 Microsoft. Reservados todos los derechos. Términos de uso | Marcas Registradas | Privacidad
Page view tracker