Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Schließt einen Prozess mit einer Benutzeroberfläche, indem eine Meldung zum Schließen an das Hauptfenster gesendet wird.
Namespace: System.Diagnostics
Assembly: System (in system.dll)
Syntax
'Declaration
Public Function CloseMainWindow As Boolean
'Usage
Dim instance As Process
Dim returnValue As Boolean
returnValue = instance.CloseMainWindow
public bool CloseMainWindow ()
public:
bool CloseMainWindow ()
public boolean CloseMainWindow ()
public function CloseMainWindow () : boolean
Rückgabewert
true, wenn die Meldung zum Schließen erfolgreich gesendet wurde. false, wenn der zugeordnete Prozess nicht über ein Hauptfenster verfügt oder wenn das Hauptfenster deaktiviert ist (z. B., wenn ein modales Dialogfeld angezeigt wird).
Ausnahmen
| Ausnahmetyp | Bedingung |
|---|---|
Die Plattform ist Windows 98 oder Windows Millennium Edition (Windows Me). Legen Sie die ProcessStartInfo.UseShellExecute-Eigenschaft auf false fest, um auf diese Eigenschaft unter Windows 98 und Windows Me zuzugreifen. |
Hinweise
Wenn ein Prozess ausgeführt wird, befindet sich seine Meldungsschleife im Wartezustand. Die Meldungsschleife wird jedes Mal ausgeführt, wenn vom Betriebssystem eine Windows-Meldung an den Prozess gesendet wird. Beim Aufrufen von CloseMainWindow wird eine Anforderung zum Schließen des Hauptfensters gesendet, die in einer wohlgeformten Anwendung alle untergeordneten Fenster schließt und alle aktiven Meldungsschleifen der Anwendung widerruft. Die Anforderung zum Beenden des Prozesses durch Aufrufen von CloseMainWindow erzwingt nicht die Beendigung der Anwendung. Die Anwendung kann vor dem Beenden eine Bestätigung durch den Benutzer anfordern, oder sie kann die Beendigung verweigern. Wenn Sie die Beendigung der Anwendung erzwingen möchten, verwenden Sie die Kill-Methode. Das Verhalten von CloseMainWindow entspricht dem Schließen des Hauptfensters einer Anwendung durch den Benutzer über das Systemmenü. Daher wird durch die Anforderung, den Prozess durch Schließen des Hauptfensters zu beenden, nicht die unmittelbare Beendigung der Anwendung erzwungen.
Daten, die vom Prozess oder von den für den Prozess reservierten Ressourcen bearbeitet werden, können bei einem Aufruf von Kill verloren gehen. Kill verursacht eine nicht ordnungsgemäße Prozessbeendigung und darf nur bei zwingender Notwendigkeit verwendet werden. CloseMainWindow aktiviert eine ordnungsgemäße Beendigung des Prozesses und schließt alle Fenster und ist somit für Anwendungen mit einer Oberfläche besser geeignet. Wenn CloseMainWindow fehlschlägt, können Sie den Prozess mit Kill beenden. Kill stellt die einzige Möglichkeit zum Beenden von Prozessen dar, die keine grafischen Oberflächen aufweisen.
Sie können Kill und CloseMainWindow nur für Prozesse aufrufen, die auf dem lokalen Computer ausgeführt werden. Sie können keine Prozesse auf Remotecomputern beenden. Für auf Remotecomputern ausgeführte Prozesse können Sie lediglich Informationen anzeigen lassen.
Hinweis zu Windows 98, Windows Millennium Edition: Diese Eigenschaft ist auf dieser Plattform nicht verfügbar, wenn beim Starten des Prozesses ProcessStartInfo.UseShellExecute auf true festgelegt ist.
Beispiel
Im folgenden Beispiel wird eine Instanz von Editor gestartet. Anschließend wird die Auslastung des physikalischen Speichers durch den zugeordneten Prozess in Intervallen von zwei Sekunden für maximal zehn Sekunden abgerufen. Dabei wird ermittelt, ob der Prozess vor Ablauf von zehn Sekunden beendet wird. Im Beispiel wird der Prozess beendet, wenn er nach zehn Sekunden weiterhin ausgeführt wird.
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
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);
}
}
}
}
#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 );
}
}
.NET Framework-Sicherheit
- SecurityPermission zum Aufrufen von Process-Membern. Anforderungswert: LinkDemand; Benannte Berechtigungssätze: FullTrust.
Plattformen
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
.NET Compact Framework
Unterstützt in: 2.0