【】Top

【】VB.NET
【】VB6.0

【】メールマガジンの購読
【】メールマガジンの解除






【】会社概要

【】お問い合わせ


姉妹サイト「バーチャルコネクション!」はこちらです。

姉妹サイト「七福神のメールでビンゴ!」はこちらです。

アイネットマコト

●24時間365日の安心をあなたにAT-LINK専用サーバ・サービスお勧めのサーバです。






画面のハードコピーをとる

【注意書き】
●VB.NET を使っているものとします。
●動作環境は、Windows XX を使用しているとします。

●API を使用しています。(SendKeysクラスを使用していません)

.NET でも、画面のハードコピーをとることが可能です。

この機能を使えば、簡単に、画面をキャプチャーし、
別の端末へ送り届けるなどの際などに活用できます。


フォームに次の様なコードを記述します


-----------VB.NETコーディングここから-------------------


1.フォームに、テキストボックスコントロール、
    ボタンコントロール
    を配置します。
    下記は、デフォルトのオブジェクトの名前と配置を示しています。

   ┏━━━━━┓┏━━━━━┓
   ┃Button1   ┃┃Button2   ┃
   ┗━━━━━┛┗━━━━━┛
   ┏━━━━━━━━━━━━┓
   ┃PictureBox1             ┃
   ┃                        ┃
   ┃                        ┃
   ┗━━━━━━━━━━━━┛


2.ボタンコントロールの
    Button1 text プロパティに「画面全体」と記述します。
    Button1 text プロパティに「ウィンドウ」と記述します。

  ※説明用のためです。必須ではありません。

   ┏━━━━━┓┏━━━━━┓
   ┃画面全体  ┃┃ウィンドウ┃
   ┗━━━━━┛┗━━━━━┛
   ┏━━━━━━━━━━━━┓
   ┃PictureBox1             ┃
   ┃                        ┃
   ┃                        ┃
   ┗━━━━━━━━━━━━┛




3.フォームをダブルクリックして、
    フォームロードイベントのコード編集を開始して、
    次のコードを記述します。


    Public Declare Sub keybd_event Lib "user32.dll" _
       (ByVal bVk As Byte, _
        ByVal bScan As Byte, _
        ByVal dwFlags As Long, _
        ByVal dwExtraInfo As Long)

    ' キーコード定数
    Public Const VK_LMENU = &HA4
    Public Const VK_SNAPSHOT = &H2C

    ' キーボードイベントフラグ定数
    Public Const KEYEVENTF_EXTENDEDKEY = &H1
    Public Const KEYEVENTF_KEYUP = &H2

    Private Sub Button1_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button1.Click

        PictureBox1.Image = Get_Hardimg(1)
        PictureBox1.Refresh()

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button2.Click

        PictureBox1.Image = Get_Hardimg(0)
        PictureBox1.Refresh()

    End Sub

    Private Function Get_Hardimg(ByVal dmode As Integer) As Object



        Dim data As IDataObject = Clipboard.GetDataObject()


        If dmode = 1 Then
            '画面

            'SendKeys.Send("{PRTSC}")

            'キーを押す
            keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY, 0)
            Application.DoEvents()
            'キーを離す
            keybd_event(VK_SNAPSHOT, 0, _
            KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0)
        Else
            'ウィンドウ

            'SendKeys.Send("%{PRTSC}")

            'キーを押す
            keybd_event(VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY, 0)
            keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY, 0)
            Application.DoEvents()
            'キーを離す
            keybd_event(VK_LMENU, 0, _
            KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0)
            keybd_event(VK_SNAPSHOT, 0, _
            KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0)
        End If


        Application.DoEvents()

        Get_Hardimg = data.GetData(DataFormats.Bitmap)

    End Function

    Private Sub Form1_Load(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load

        Dim recScr As Rectangle
        'スクリーン構造体
        recScr = Screen.PrimaryScreen.Bounds
        PictureBox1.Width = recScr.Width
        PictureBox1.Height = recScr.Height

    End Sub

4.ビルドして実行します。

5.フォームに表示された
    ボタン「画面全体」を押します。

6.フォームに表示された
    ピクチャボックスに、スクリーンに表示中の
    画面全体のイメージが
    表示されます。
    ※フォームをリサイズしていただくと、広く画面を見れます。

7.フォームに表示された
    ボタン「ウィンドウ」を押します。

8.フォームに表示された
    ピクチャボックスに、スクリーンに表示中の
    自フォーム画面のイメージが
    表示されます。
    ※フォームをリサイズしていただくと、広く画面を見れます。



-----------VB.NETコーディングここまで-------------------

    Alt → %
    PrintScreen → {PRTSC}

            'SendKeys.Send("{PRTSC}")
            'SendKeys.Send("%{PRTSC}")

本サンプルでは
SendKyes クラスを使用せずに、あえてAPIを使用しています。




 

http://anetm.com/dev/d.cgi?SC=DTDTL&o=Ome

Copyright(c)2001-2004 Ai Net Makoto 記事・情報の無断転載を禁止します。

「これがほしかった!厳選サンプルツール集」の注意点
●当サイトはリンクフリーです。
2024/04/25(木)00:05 更新