DOBON.NET DOBON.NETプログラミング掲示板過去ログ

起動中画面のインスタンス

環境/言語:[Windows XP , VB,NET2005]
分類:[.NET]

環境:
Windows XP SP2
Visual Studio 2005(VB)

お世話になります。

あるプロセス(Windowsアプリケーション)内で、
起動中フォームのインスタンス情報を得ることはできないでしょうか?
クラス名など…

どなたか、お知恵を貸してください。
よろしくお願いいたします。
自プロセスですか他プロセスですか?
また「その情報を得て何をしたいのか」が分からないと適切な返答ができません。
>Hongliangさん

情報が不十分で申し訳ございません。

自プロセス内で、起動中のフォームインスタンス情報を取得したいです。

あるフォームから別のフォームを起動しようとした時に、
該当のフォームのインスタンスが起動中であれば、
起動中のフォームインスタンスを最前面に表示する、ということをしたいです。
Class 親フォーム
    Private childForm As 子フォーム

    Private Sub ボタンクリック
        If childForm Is Nothing OrElse childForm.IsDisposed
            childForm = New 子フォーム
        End If
        childForm.Show()
        childForm.Activate()
    End Sub
End Class

こんな感じで十分じゃないですか?
■No24946に返信(smkさんの記事)
> あるプロセス(Windowsアプリケーション)内で、
> 起動中フォームのインスタンス情報を得ることはできないでしょうか?
> クラス名など…

My.Application.OpenForms を利用してみては如何でしょうか。
(フォームの起動方法にもよりますが)


もし、他のプロセスも調査する必要があるなら、[Managed Spy++]とか。
https://www.microsoft.com/japan/msdn/msdnmag/issues/06/04/ManagedSpy/default.aspx
http://msdn.microsoft.com/en-us/magazine/cc163617.aspx
>Hongliangさん、魔界の仮面弁士さん

ご回答ありがとうございます。

起動中のインスタンスはMy.Application.OpenFormsから
Nameプロパティを比較することでチェックできそうです。

画面の最前面表示は、
childForm.Show()
childForm.Activate()
を使わせて頂きます。

大変助かりました。ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板