透明なウィンドウを作る
実行画面 |
<スクリーンキャプチャの応用>
宣 言 |
(Private) Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) |
※Privateは必要に応じて削除またはPublicに変更
引 数 説 明 |
KeyNumber |
Byte |
仮想キーコード |
bScan |
Byte |
KeyNumberのOEMスキャンコード(今回は1) |
サ ン プ ル プ ロ グ ラ ム |
まずフォームの「BorderStyle」プロパティを「0−なし」に指定します。そしてフォームにテキストボックス及びピクチャーボックスを配置し、コードを張りつけて実行します。すると、テキストボックスだけが表示されます。
動作確認:Visual Basic 5.0,Windows98
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_load() Form1.Hide keybd_event &H2C, 1, 0, 0 'PrintScreenキーの発行 DoEvents Picture1.Picture = Clipboard.GetData Picture1.Top = -Form1.Top - (Screen.TwipsPerPixelY * 2) Picture1.Left = -Form1.Left - (Screen.TwipsPerPixelX * 2) Picture1.Height = Form1.Top + Form1.Height + (Screen.TwipsPerPixelY * 4) Picture1.Width = Form1.Left + Form1.Width + (Screen.TwipsPerPixelX * 4) Text1.Top = - Picture1.Top Text1.Left = - Picture1.Left Form1.Show End Sub |
備 考 |
これはクリップボードを通じてスクリーンキャプチャを行っているので、一回フォームを消去してからでないと後ろのものがキャプチャできないので不便です。またアクティブウィンドウが変化すると変になります。そこで、「CreateDC+BitBlt」で定期的に同様の動作をさせると便利です。