投稿日 | : 2003/02/05(Wed) 18:31 |
投稿者 | : たけ |
URL | : |
タイトル | : SendInputの使い方 |
SendInputを使ってESCを押したようにしたいのですが、うまくいきません。
SPY++でみても、ESCメッセージが出ていませんでした。
どなたか、どこが悪いのか教えてください。
' ユーザーインプットを合成する関数の宣言
Declare Function SendInput Lib "user32.dll" (ByVal nInputs As Long, pInputs As tagINPUT, ByVal cbSize As Long) As Long
' キーストローク情報を含む構造体
Type tagKEYBDINPUT
wVk As Integer
wScan As Integer
dwFlags As Long
time As Long
dwExtraInfo As Long
bytUnusedPadding(7) As Byte
End Type
' ユーザーインプットを合成する情報を保存する構造体
Type tagINPUT
type As Long
ki As tagKEYBDINPUT
End Type
' インプットイベントの種類を示す定数の宣言
'ublic Const INPUT_MOUSE = 0
Public Const INPUT_KEYBOARD = 1
'ublic Const INPUT_HARDWARE = 2
Public Const VK_ESCAPE = &H1B&
Private Sub Command1_Click()
'***************************************************************************
Dim udtInputEvent(2) As tagINPUT
Dim lngWin32apiResultCode As Long
With udtInputEvent(0)
' インプットイベントの種類を指定
.type = INPUT_KEYBOARD
With .ki
' 仮想キーコードを指定
.wVk = VK_ESCAPE
End With
End With
With udtInputEvent(1)
' インプットイベントの種類を指定
.type = INPUT_KEYBOARD
With .ki
' 仮想キーコードを指定
.wVk = VK_ESCAPE
' 動作を指定
.dwFlags = KEYEVENTF_KEYUP
End With
End With
' キー ストロークを合成
lngWin32apiResultCode = SendInput(2, udtInputEvent(0), Len(udtInputEvent(0)))
'***************************************************************************
End Sub