制御 プロシージャからAlt+PrintScreenを取得する

※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。

※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。

Option Explicit

Public Declare Sub keybd_event Lib "User32" _
   (ByVal bVk As ByteByVal bScan As Byte, _
    ByVal dwFlags As LongByVal dwExtraInfo As Long)



Sub GetAltPrintScreen()
'******************************************
'プロシージャからAlt+PrintScreenを取得する
'******************************************
'NT系の場合
'アクティブウィンドウのみ
'参考 http://support.microsoft.com/kb/411704/ja

Call keybd_event(CByte(vbKeyMenu), 0, 0, 0) 'Alt キー
Call keybd_event(CByte(vbKeySnapshot), 0, 0, 0) 'PrintScreen キー
Call keybd_event(CByte(vbKeySnapshot), 0, 2, 0) 'PrintScreen キー
Call keybd_event(CByte(vbKeyMenu), 0, 2, 0) 'Alt キー

'VOID keybd_event(
'  BYTE bVk,               // 仮想キーコード
'  BYTE bScan,             // ハードウェアスキャンコード
'  DWORD dwFlags,          // 関数のオプション
'  ULONG_PTR dwExtraInfo   // 追加のキーストロークデータ
');
End Sub


Sub GetPrintScreen()
'**************************************
'プロシージャからPrintScreenを取得する
'**************************************
'NT系の場合
'画面全体
'参考 http://support.microsoft.com/kb/411704/ja

Call keybd_event(CByte(vbKeySnapshot), 0, 0, 0) 'PrintScreen キー
Call keybd_event(CByte(vbKeySnapshot), 0, 2, 0) 'PrintScreen キー

'VOID keybd_event(
'  BYTE bVk,               // 仮想キーコード
'  BYTE bScan,             // ハードウェアスキャンコード
'  DWORD dwFlags,          // 関数のオプション
'  ULONG_PTR dwExtraInfo   // 追加のキーストロークデータ
');
End Sub

プラットフォーム SDK

keybd_event

  • キーストロークを合成します。システムは、合成されたキーストロークから、 または メッセージを生成します。キーボードドライバの割り込みハンドラは、この関数を呼び出します。
  • Windows NT/2000:この関数は、SendInput 関数に取って代わられています。この関数の代わりに SendInput を使ってください。
  • VOID keybd_event(
    BYTE bVk, // 仮想キーコード
    BYTE bScan, // ハードウェアスキャンコード
    DWORD dwFlags, // 関数のオプション
    ULONG_PTR dwExtraInfo // 追加のキーストロークデータ
    );
  • パラメータ
  • bVk
    • [入力]仮想キーコードを指定します。このコードは、1~254 の範囲内の値でなければなりません。詳細なリストについては、「」を参照してください。
  • bScan
    • このパラメータは未使用です。
  • dwFlags
    • [入力]関数の動作を指定します。次のフラグを任意に組み合わせて指定します。
    • 値 意味
      KEYEVENTF_EXTENDEDKEY
      • このフラグをセットすると、スキャンコードにプリフィックスバイト 0xE0(224)を追加します。
      KEYEVENTF_KEYUP
      • このフラグをセットすると、キーを離す操作になります。セットしない場合、キーを押す操作になります。
  • dwExtraInfo
    • [入力]キーストロークに関連する 32 ビットの追加情報を指定します。
  • 戻り値
    • 戻り値はありません。
  • 解説
    • アプリケーションは画面のスナップショットを取得してクリップボードに記憶させるために、PrintScreen キーの押し下げをシミュレートすることもできます。このような操作を行うには、bVk パラメータを VK_SNAPSHOT に設定して、keybd_event を呼び出します。
    • Windows NT:keybd_event 関数は、NumLock、CapsLock、ScrollLock の各キーをトグルさせる( オンとオフを交互に繰り返す)こともできます。
    • Windows 95:keybd_event 関数がトグルさせることができるのは、CapsLock と ScrollLock の各キーだけです。NUM LOCK キーをトグルさせることはできません。

 

2000年01月01日|[VBサンプルコード]:[制御]