スクリーンキャプチャを実行<アクティブウィンドウ>
キーボードにある「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に変更
引 数 説 明 |
KeyNumber |
Byte |
仮想キーコード |
ScanCode |
Byte |
KeyNumberのOEMスキャンコード(今回は1) |
dwFlags,dwExtraInfo |
Long |
今回は0に設定 |
・MapVirtualKey
wCode |
Long |
変換前の文字またはスキャンコード。 このデータ型はwMapTypeで指定する必要がある | ||||||
wMapType |
Long |
変換タイプを指定(下記)
|
サ ン プ ル プ ロ グ ラ ム |
プログラムを張りつけ実行し、フォームをクリックすると現在のアクティブウィンドウの画像をフォームに表示します。
動作確認: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)は名前のとおりキーをソフト的に発行するものです。
応用すればソフトウェアキーボードなども作れます。