★他アプリの画面一部をコピー表示したい
お世話になります。
さて図のように「アプリX」があって、
その画面の一部を自作ソフト「Me」画面に表示したいのです。
(WindowsでVBで作成中)
いろいろ調べると、
http://dobon.net/vb/dotnet/graphics/invokepaint.html
に以下のようなプログラムがありました。
'コントロールの外観を描画するBitmapの作成
Dim bmp As New Bitmap(Me.Width, Me.Height)
'キャプチャする
Me.DrawToBitmap(bmp, New Rectangle(0, 0, Me.Width, Me.Height))
'ファイルに保存する
bmp.Save("C:\test\1.png")
'後始末
bmp.Dispose()
しかしこれはMe自身の画面であって、意味がありません。
それにファイルで保存ではなくMeに表示したいのです。
(これは多分できると思います)
最大の問題は、「アプリX」の“フォーム名”です。
http://dobon.net/vb/dotnet/form/showintaskbar.html
には、「タスクバーにフォームを表示しないようにする」として、
(これもやりたいことの一つですが)
'Form1のインスタンスを作成
Dim f As New Form1()
'タスクバーに表示しない
f.ShowInTaskbar = False
'フォームを表示する
f.Show()
とありますが、「Form1」をどうやって取得するのか書いていません。
つまり「アプリX」のフォーム名が分からないのです。
それをどうやって知ることができるでしょうか?
それとも考え方が根本的におかしい?
よろしくお願い申し上げます m(__)m
お礼
ありがとうございます。 この方法だと全部作りこまないといけないのでたいへんと感じております。 ”デスクトップの表示”の動作と同じように、簡単にできないかと調べている最中です。 アプリケーションへ何かしらのメッセージを送信すればできそうに感じておりますが、なかなか見つからないでおります。
補足
MDI形式に直しました。 Formからのコンポーネントクラスを作成して、Newのときに親フォームのEnabledをFalseにするようにし、DisposeでTrueに戻すようにしました。 通常のShowDialog()のように、戻ってきてから処理するような処理については、コンポーネントクラスにオーバーライド可能な関数を用意し、親の関数を呼び出すなどで対応しました。