Process.CloseMainWindow メソッドとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > Process.CloseMainWindow メソッドの意味・解説 

Process.CloseMainWindow メソッド

メイン ウィンドウにクローズ メッセージを送信して、ユーザー インターフェイスがあるプロセスを終了します。

名前空間: System.Diagnostics
アセンブリ: System (system.dll 内)
構文構文

例外例外
例外の種類条件

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 );
   }

}

.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

Process.CloseMainWindow メソッドのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Process.CloseMainWindow メソッドのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS