- 題名: プログラムの二重起動について
- 日時: 2007/01/17 12:09:25
- ID: 18799
- この記事の返信元:
- (なし)
- この記事への返信:
- [18800] Re[1]: プログラムの二重起動について2007/01/17 12:20:40
- ツリーを表示
■No18803に返信(ぽぴ王子さんの記事) ありがとうございます。 Protected Shared Sub Main() Dim Loc_Path As String Loc_Path = Application.ExecutablePath If My.Computer.FileSystem.FileExists(Loc_Path) = True Then Dim hMutex As New System.Threading.Mutex(True, Application.ExecutablePath) If hMutex.WaitOne(0, False) = True Then Application.Run(New Form1()) End If GC.KeepAlive(hMutex) hMutex.Close() End If End Sub で試してみましたが、Application.ExecutablePathがSystem.IO.DirectoryNotFoundExceptionでエラーになります。 Dim hMutex As New System.Threading.Mutex(True, Application.ExecutablePath) の記述に問題があるのでしょうか?
■No18808に返信(じゃんぬねっとさんの記事) > 変換するならば、パスとして使用できない文字が望ましいです。 > ('/', など) なるほど。確かにそうですね。 _ に変換してしまうと C:\aa\bb.exe と C:\aa_bb.exe が 同一として見なされてしまいますからね。 フォローありがとうございます。
分類:[.NET]
VB.NETでプログラムを開発しており、プログラムの二重起動で苦戦致しております。
当掲示板に掲載がありました、
Function PrevInstance() As Boolean
If UBound(Diagnostics.Process.GetProcessesByName(Diagnostics.Process.GetCurrentProcess.ProcessName)) > 0 Then
Return True
Else
Return False
End If
End Function
で二重起動は防止できるのですが、同じプロブラムIDのプログラムを
(例)
C:\TEST\test.exe
C:\TEST1\test.exe
と同一端末内の複数箇所にセットした場合、上記処理では全ての処理が起動不可となります。
Process.GetCurrentProcess.MainModule.FileNameで起動場所(C:\TEST\test.exe)は取得できるのですが、判断方法が分かりません。
どなたかご存知ないでしょうか?