Process.CloseMainWindow メソッド
アセンブリ: System (system.dll 内)

Dim instance As Process Dim returnValue As Boolean returnValue = instance.CloseMainWindow
クローズ メッセージが正常に送信された場合は true。関連付けられたプロセスにメイン ウィンドウがない場合、またはメイン ウィンドウが無効の場合 (モーダル ダイアログ ボックスが表示されているときなど) は false。

例外の種類 | 条件 |
---|---|
PlatformNotSupportedException | プラットフォームが Windows 98 または Windows Millennium Edition (Windows Me) です。Windows 98 や Windows Me でこのプロパティにアクセスするには、ProcessStartInfo.UseShellExecute を false に設定します。 |

プロセスの実行中、メッセージ ループは待機状態です。メッセージ ループは、オペレーティング システムによって Windows メッセージがプロセスに送信されるたびに実行されます。CloseMainWindow を呼び出すと、メイン ウィンドウを閉じる要求が送信されます。適切に構成されたアプリケーションでは、これにより子ウィンドウも閉じられ、そのアプリケーションのために実行されているすべてのメッセージ ループが終了します。CloseMainWindow を呼び出してプロセスの終了を要求しても、アプリケーションは強制終了されません。アプリケーションでは、終了前にユーザーに確認を求めたり、終了を拒否できます。アプリケーションを強制的に終了するには、Kill メソッドを使用します。CloseMainWindow の動作は、システム メニューを使用してアプリケーションのメイン ウィンドウを閉じるときと同じです。そのため、メイン ウィンドウを閉じてプロセスの終了を要求しても、アプリケーションはすぐには強制的に終了されません。
プロセスによって編集されたデータまたはプロセスに割り当てられたリソースは、Kill を呼び出すと失われることがあります。Kill はプロセスの異常終了を発生させるため、必要なときにだけ使用してください。CloseMainWindow を使用すると、プロセスを手順に従って終了させ、すべてのウィンドウを閉じることができるため、インターフェイスのあるアプリケーションにはより適切です。CloseMainWindow が失敗した場合は、Kill を使用してプロセスを終了できます。グラフィカル インターフェイスのないプロセスを終了させるには、Kill が唯一の方法です。
Kill と CloseMainWindow を呼び出すことができるのは、ローカル コンピュータで実行されているプロセスだけです。リモート コンピュータ上のプロセスは終了できません。リモート コンピュータ上で実行中のプロセスは、情報の表示だけができます。
Windows 98, Windows Millennium Edition プラットフォームメモ : ProcessStartInfo.UseShellExecute に true を設定してプロセスを開始した場合、このプロパティは、このプラットフォームでは利用できません。

メモ帳のインスタンスを起動する例を次に示します。このコードは、インスタンスが起動すると、2 秒間隔で最大 10 秒間、関連付けられているプロセスの物理メモリ使用量を取得します。また、10 秒が経過する前にプロセスが終了したかどうかを検知します。10 秒経過した後もプロセスが実行中である場合は、プロセスを終了します。
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 ); } }


Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からProcess.CloseMainWindow メソッドを検索する場合は、下記のリンクをクリックしてください。

- Process.CloseMainWindow メソッドのページへのリンク