件名のままの質問ですが、まずコードを載せます。
コード: 全て選択
Const INPUT_MOUSE = 0
Const INPUT_KEYBOARD = 1
Const INPUT_HARDWARE = 2
Type INPUT
types As DWord
ki As KEYBDINPUT
End Type
Type KEYBDINPUT
wVk As Word
wScan As Word
dwFlags As DWord
time As DWord
dwExtraInfo As ULONG_PTR
End Type
Declare Function SendInput Lib "user32" (ByVal cInputs As DWord, ByRef pInputs As INPUT, ByVal cbSize As Long) As DWord
Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal uCode As DWord, ByVal uMapType As DWord) As DWord
Declare Function GetMessageExtraInfo Lib "user32.dll" () As Long
Sub MainWnd_CommandButton1_Click()
Dim in As INPUT
With in
.types = INPUT_KEYBOARD
.ki.wVk = VK_LWIN
.ki.wScan = MapVirtualKey(VK_LWIN, 0)
.ki.dwFlags = KEYEVENTF_EXTENDEDKEY
.ki.time = 0
.ki.dwExtraInfo = GetMessageExtraInfo()
End With
SendInput( 1, in, SizeOf(INPUT) )
Sleep(500)
in.ki.dwFlags = KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP
SendInput( 1, in, SizeOf(INPUT) )
End Sub
以上の様にして、とりあえず実験でWindowsキーを押してみようとしてるんですが一向に反応が有りません。
他ののキ―も試しましたし、メモ帳やテキストボックスに文字を打つようにしてみましたが変化はありません。
dwExtraInfoの所は0で説明してるページが多いですがGetMessageExtraInfo()で説明してる所もあったので試しましたが変化はありません。
検索して見つけた、個別にSendInputせずにINPUT構造体の配列を作り、まとめてSendInputという方法でも変化はありません。
http://dev.activebasic.com/trac/ablib/changeset/418
AB関連のページ?の様なのですが、気になるところと言えば、
共有体の部分がコメントアウトされていてunion[5] As DWordになっている事です。
AB独自の設定かと思いKEYBDINPUTの内容を順番に入れると
マウスがカーソルが右上に飛んだり、スクリーンセーバーが急に立ち上がったり良く分からない動作になります。
一体どこが間違っているのでしょうか。
どなたかご存知の方は教えていただけるとありがたいです。
AB 4.13 OS Win Xp Home SP3