画面のハードコピー(スクリーンキャプチャ)を撮って、自動で印刷したくて、(画面ハードコピーツール)エクセルのマクロを作ったときにちょっとはまった。
多くの参考Web上では、第2パラメタを「使用しないので、常に0を指定。」としていることが多いのですが、私が参考にしたのはちょっと違いました。
多い解説
Sub 全画面()
keybd_event &H2C, 0, 0, 0 'Print screen押す
keybd_event &H2C, 0, 2, 0 'Print screen上げる
End Sub
Sub アクティブウインドウのみ()
keybd_event &H12, 0, 0, 0 'ALT押す
keybd_event &H2C, 0, 0, 0 'Print screen押す
keybd_event &H2C, 0, 2, 0 'Print screen上げる
keybd_event &H12C, 0, 2, 0 'Print screen上げる
End Sub
この第2パラメタを「1」にすれば、「ALT」を押しながら「PrintScreen」=アクティブウインドウのみになります。
Sub アクティブウインドウのみ()
keybd_event &H2C, 1, 0, 0 'Print screen押す
keybd_event &H2C, 1, 2, 0 'Print screen上げる
End Sub
'MSの解説の意訳
keybd_event bVk, bScan, dwFlags, dwExtraInfo
bVk=仮想キーコード(16進のキーコード)
bScan=キーのハードウェア スキャン コード(意味は不明だが、PrintScreenの時はとりあえず使える。)
dwFlags=関数操作のさまざまな側面を制御します。 このパラメーターには、次の 1 つ以上の値を指定できます(意味は不明だが、「0」を指定すれば、キーを押し下げ、「1」を指定すれば、押している(指定した)キーを放します。)
dwExtraInfo=意味不明かつ使い道不明