tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル サブモニタのキャプチャ方法
投稿日: 2010/02/04(Thu) 10:29
投稿者camputer

 こんにちは、質問させていただきます。

 開発環境:XP+VB2008
 VB歴約1年でございます。どうぞよろしくお願いいたします。

 モニタ上の好きな部分(Form内外問わず、デスクトップ、
ステータスバーなどすべて)をキャプチャできるようにしたつもりなのですが、
サブモニタ上でうまく動作いたしません。

 メインモニタ側はなんとか完成いたしましたが、以下のようになります。
  Form1の「Btnキャプチャ開始」クリック
 →Form2をWindowState = Maximizedで表示し、それにデスクトップの画像
   を貼り付けておく。(e.Graphics.DrawImage(screenImage, 0, 0))
 →Me.MouseDown, Me.MouseMove, Me.MouseUp 中にマウスドラッグ範囲を四角形で描画

ただこの方法を当初の目的でございました別のPC(メインモニタ+サブモニタ)に
持って行きましたところ、Form2がサブモニタ側まで広がってくれず、
キャプチャできません。。。

 そこで、以前花ちゃんさまからご教示いただいた方法にトライしてみて、
Form2外のマウスイベントを検知するところまで成功したのですが、
    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
        MyBase.WndProc(m)

        If m.Msg = &H201 Then '&H201:マウスの左ボタンを押した
            mouseStart = New Point(Cursor.Position.X, Cursor.Position.Y)
            Me.Capture = True
            Me.Tag = "MouseDown"
        ElseIf m.Msg = &H200 And Me.Tag = "MouseDown" Then '&H200:マウスが移動した
            mouseEnd = New Point(Cursor.Position.X, Cursor.Position.Y)
            Invalidate()
            Me.Capture = True
        ElseIf m.Msg = &H202 Then '&H202:マウスの左ボタンが解放された
            Me.Capture = True
            Me.Tag = "MouseUp"
            Close()
        End If
    End Sub

しかしForm外に四角形(選択領域)を表示する方法と、そこの画像を
キャプチャする方法が分かりません。。

 一番早いのは、Form2をサブモニタにも入れることができることなのですが、
何かキャプチャのよさそうな方法をひらめかれる方がいらっしゃいましたら、
是非ともアドバイスいただきたくお願いいたします。
 どうぞよろしくお願いいたします。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。