投稿者 るきお  (社会人) 投稿日時 2009/3/13 21:42:57
こんにちは。

ちょっと違いますが、開発環境から実行するときはDebugモード、exeを直接実行するときはReleaseモード(つまり、Releaseモードでビルドしたものを実行する)と使い分ければ、
これで目的を達成できませんか?
    Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click

#If DEBUG Then
        MsgBox("デバッグ実行中です")
#Else
        MsgBox("通常実行中です。")
#End If

    End Sub


>プログラムが現在デバッグ実行中なのか、
>または実行可能ファイルそのものの実行中なのかを調べる方法はありますか?
デバッグ実行でも実行可能ファイル(exeファイル)が実行されています。

また、実行可能ファイルを直接起動しても、後からプロセスをアタッチしてデバッグすることも可能で、
厳密にデバッグ中かどうか判断するのは難しいかなと思っています。

既定の設定であれば次のような手段もあります。
    Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click

        If IsInVisualStudio() Then
            MsgBox("Visual Studio上で実行されています。")
        Else
            MsgBox("直接実行されています。")
        End If

    End Sub

    Private Function IsInVisualStudio() As Boolean

        If AppDomain.CurrentDomain.FriendlyName.Contains(".vshost."Then
            Return True
        Else
            Return False
        End If

    End Function


これは、VB2005以上の場合、既定の設定でVisual Studio上で実行するときはホスティングプロセスを使用していることを利用しています。
この設定はプロジェクトの設定でデバッグページにある「Visual Studio ホスティングプロセスを有効にする」です。通常はオンになっています。

なにか私が見落としているもっといいやり方を知っている人は教えてください。

ホスティングプロセスで判断する方法は今後のバージョン等については何の保証もないので#DEBUGで目的を達成できるのであれば#DEBUGをお奨めします。