【】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 記事・情報の無断転載を禁止します。
|
|
|
|
|
|
|