Imports System.Threading Public Class Form1 Inherits System.Windows.Forms.Form #Region " Windows フォーム デザイナで生成されたコード " Public Sub New() MyBase.New() ' この呼び出しは Windows フォーム デザイナで必要です。 InitializeComponent() ' InitializeComponent() 呼び出しの後に初期化を追加します。 End Sub ' Form は、コンポーネント一覧に後処理を実行するために dispose をオーバーライドします。 Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub ' Windows フォーム デザイナで必要です。 Private components As System.ComponentModel.IContainer ' メモ : 以下のプロシージャは、Windows フォーム デザイナで必要です。 'Windows フォーム デザイナを使って変更してください。 ' コード エディタを使って変更しないでください。 Private Sub InitializeComponent() ' 'Form1 ' Me.AutoScaleBaseSize = New System.Drawing.Size(5, 12) Me.ClientSize = New System.Drawing.Size(142, 116) Me.Name = "Form1" Me.Text = "Form1" End Sub #End Region ' アプリケーション固定名 Private Shared strAppConstName As String = "daSampleApp" ' 二重起動を防止するミューテックス Private Shared mutexObject As Mutex ' アプリケーションのメイン・エントリ・ポイントです。 _ Shared Sub Main() ' Windows 2000(NT 5.0)以降のみグローバル・ミューテックス利用可 Dim os As OperatingSystem = Environment.OSVersion If ((os.Platform = PlatformID.Win32NT) And (os.Version.Major >= 5)) Then strAppConstName = "Global\" + strAppConstName End If Try ' ミューテックスを生成する mutexObject = New Mutex(False, strAppConstName) Catch e As ApplicationException ' グローバル・ミューテックスの多重起動防止 MessageBox.Show("すでに起動しています。2つ同時には起動できません。", "多重起動防止") Return End Try ' ミューテックスを取得する If (mutexObject.WaitOne(0, False)) Then ' アプリケーションを実行 Application.Run(New Form1) ' ミューテックスを解放する mutexObject.ReleaseMutex() Else ' 警告を表示して終了 MessageBox.Show("すでに起動しています。2つ同時には起動できません。", "二重起動防止") End If ' ミューテックスを破棄する mutexObject.Close() End Sub End Class