わけあって、App.PreInstanceではなくMutexで排他をかけようとしてます。
でWin32APIをつかって、以下のようなコードを書いてみたんですが、なんでか
排他がかかってないみたいなんです(2つ起動してボタン押したらどちらも"最初"がでてきてしまう)。
CreateMutexとかの指定がわるいんでしょうか?

Dim m_hMutex As Long

Public Function MutexCheck() As Boolean
Dim PrevhMutex As Long

PrevhMutex = OpenMutex(MUTANT_ALL_ACCESS, 0, "MyMutex")
If PrevhMutex Then
CloseHandle PrevhMutex
MutexCheck = False
MsgBox "二重起動"
Exit Function
Else
m_hMutex = CreateMutex(0, 0, "MyMutex")
MsgBox "最初"
MutexCheck = True
End If
End Function

Private Function MutexRelease()
ReleaseMutex m_hMutex
CloseHandle m_hMutex
End Function

Private Sub Command1_Click()
If MutexCheck = False Then
' If App.PrevInstance Then
MsgBox "二重起動"
Else
Sleep (3000)
MsgBox "最初"
End If

' MutexRelease

End Sub