スクリーンキャプチャを実行<アクティブウィンドウ>

キーボードにある「PrintScreen+Alt」キーを押すと現在のアクティブウィンドウの画面がビットマップとしてクリップボードにコピーされます。それをソフトウェア的に再現してみます。

<スクリーンの内容を取り込みます>

宣 言

(Private) Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
(Private) Declare Function MapVirtualKey& Lib "user32" Alias "MapVirtualKeyA" _
(ByVal wCode As Long, ByVal wMapType As Long)

※Privateは必要に応じて削除またはPublicに変更

引 数 説 明


keybd_event

KeyNumber

Byte

仮想キーコード

ScanCode

Byte

KeyNumberのOEMスキャンコード(今回は1)

dwFlags,dwExtraInfo

Long

今回は0に設定

・MapVirtualKey

wCode

Long

変換前の文字またはスキャンコード。 このデータ型はwMapTypeで指定する必要がある
wMapType

Long

変換タイプを指定(下記)

0

wCodeは仮想キーコード、戻り値は対応するスキャンコード。

1

wCodeはスキャンコード、戻り値は対応する仮想キーコード。

2

wCodeは仮想キーコード、戻り値は対応するASCIIコード(シフトされていないもの)。


サ ン プ ル プ ロ グ ラ ム

プログラムを張りつけ実行し、フォームをクリックすると現在のアクティブウィンドウの画像をフォームに表示します。

動作確認:Visual Basic 5.0,Windows98

Private Declare Function MapVirtualKey& Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long)
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Private Sub Form_Click()
keybd_event &H12, MapVirtualKey(&H12, 0), 0, 0'Altキーを押す
keybd_event &H2C, 0, 0, 0'PrintScreenキーを押す
keybd_event &H12, MapVirtualKey(&H12, 0), &H2, 0'Altキーを離す
DoEvents
Form1.Picture = Clipboard.GetData
End Sub

このAPI(Keybd_events)は名前のとおりキーをソフト的に発行するものです。
応用すればソフトウェアキーボードなども作れます。

トップに戻る
Visual Basicワンポイントテクニック目次に戻る

楽天モバイル[UNLIMITが今なら1円] ECナビでポインと Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!


無料ホームページ 無料のクレジットカード 海外格安航空券 解約手数料0円【あしたでんき】 海外旅行保険が無料! 海外ホテル