4.アプリケーションの2重起動を防止する(04_App_04) (旧、SampleNo.051) |
1.Process.GetProcessesByName メソッドを使用してアプリケーションの2重起動を防止する 2.Mutex コンストラクター を使用してアプリケーションの2重起動を防止する 3. 4. 5. 6. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows 8.1 (Windows 7) / VB2013 (VB2010) / Framework 4.5.1 / 対象の CPU:x86 Option :[Compare Text] [Explicit On] [Infer On] [Strict On] Imports :追加なし 参照設定:追加なし その他 : : このサンプル等の内容を無断で転載、掲載、配布する事はお断りします。(私の修正・改訂・削除等が及ばなくなるので) 必要ならリンクをはるようにして下さい。(引用の場合は引用元のリンクを明記して下さい) |
1.Process.GetProcessesByName メソッドを使用してアプリケーションの2重起動を防止する |
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 'テスト起動 System.Diagnostics.Process.Start("04_App_04.exe") End Sub Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 'Process.ProcessName(プロパティ(プロセスの名前を取得します)) Dim pn As String = Process.GetCurrentProcess.ProcessName 'Process.GetProcessesByName メソッド '指定したプロセス名を共有するリモートコンピューター上の 'すべてのプロセスリソースに関連付けます。 If Process.GetProcessesByName(pn).GetUpperBound(0) > 0 Then MessageBox.Show("同じアプリがすでに起動しています。No.1") Me.Close() End If End Sub |
2.Mutex コンストラクター を使用してアプリケーションの2重起動を防止する |
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 'テスト起動 System.Diagnostics.Process.Start("04_App_04.exe") End Sub Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 'Mutex コンストラクター 'ミューテックスの名前を表す文字列を使用して、 'Mutex クラスの新しいインスタンスを初期化します。 Dim mt As New System.Threading.Mutex(False, Process.GetCurrentProcess.ProcessName) 'WaitHandle.WaitOne メソッド '現在の WaitHandle がシグナルを受信するまで現在のスレッドをブロックします If mt.WaitOne(0, False) = False Then MessageBox.Show("同じアプリがすでに起動しています。No.2") mt.Close() Me.Close() End If End Sub |
3. |
4. |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |
同じアプリがすでに起動しているかどうかを取得 |