|
2007/6/3(Sun) 23:48:43|NO.8750
この掲示板の記事検索で「キー情報送信」で探してみてください。
WindowsXP、Windows Vistaと対応が大変ですが、泥縄でよければ
#uselib "user32.dll"
#func SendInput "SendInput" int,int,int
; UINT nInputs, // 入力イベントの数
; LPINPUT pInputs, // 挿入する入力イベントの配列
; int cbSize // 構造体のサイズ
//入力タイプ(type)
#const INPUT_MOUSE $00000000 ;マウスイベント
#const INPUT_KEYBOARD $00000001 ;キーボードイベント
#const INPUT_HARDWARE $00000002 ;ハードウェアイベント
//動作を指定するフラグ(dwFlags)
#const KEYEVENTF_KEYDOWN $00000000 ;KEYEVENTF_KEYUPを指定しなければ押す事になる
#const KEYEVENTF_EXTENDEDKEY $00000001 ;[Shift][矢印キー]等の[拡張キー]を使う場合に指定
#const KEYEVENTF_KEYUP $00000002 ;キーを離す
#const KEYEVENTF_UNICODE $00000004 ;wScanにユニコードを使う時に指定
#const KEYEVENTF_SCANCODE $00000008 ;ハードウェアスキャンコードの方を有効にしたい時に指定
#func MapVirtualKey "MapVirtualKeyA" int,int
; UINT uCode, // 仮想キーコードまたはスキャンコード
; UINT uMapType // 実行したい変換の種類
MapVirtualKey 16, 0 : scan_code=stat : input_struct(0) =INPUT_KEYBOARD,16+(scan_code<<16),KEYEVENTF_KEYDOWN | KEYEVENTF_EXTENDEDKEY,0,0,0,0
MapVirtualKey 17, 0 : scan_code=stat : input_struct(7) =INPUT_KEYBOARD,17+(scan_code<<16),KEYEVENTF_KEYDOWN | KEYEVENTF_EXTENDEDKEY,0,0,0,0
MapVirtualKey 18, 0 : scan_code=stat : input_struct(14)=INPUT_KEYBOARD,18+(scan_code<<16),KEYEVENTF_KEYDOWN | KEYEVENTF_EXTENDEDKEY,0,0,0,0
SendInput 3,varptr(input_struct),28 ; [shift][ctrl][alt]を押下
解除するには
MapVirtualKey 16, 0 : scan_code=stat : input_struct(0) =INPUT_KEYBOARD,16+(scan_code<<16),KEYEVENTF_KEYUP | KEYEVENTF_EXTENDEDKEY,0,0,0,0
MapVirtualKey 17, 0 : scan_code=stat : input_struct(7) =INPUT_KEYBOARD,17+(scan_code<<16),KEYEVENTF_KEYUP | KEYEVENTF_EXTENDEDKEY,0,0,0,0
MapVirtualKey 18, 0 : scan_code=stat : input_struct(14)=INPUT_KEYBOARD,18+(scan_code<<16),KEYEVENTF_KEYUP | KEYEVENTF_EXTENDEDKEY,0,0,0,0
SendInput 3,varptr(input_struct),28 ; [shift][ctrl][alt]を開放
| |