Last Update : 2006/04/xx
キーボード関連のサンプルスクリプトです。HSP3でキーボードに関連した標準命令には、以下のようなものが用意されています。
名称 | 説明 |
getkey命令 | キーボードのキーが押し下げられているかを取得。 |
stick命令 | キーボードのキーが押し下げられたかを取得。 (カーソルキー、Ctrlキー、Shiftキー、Enterキー、ESCキー、TABキーのみ) |
onkey命令 | キーボードのキーが押し下げられていた時のラベルジャンプ先を設定。 |
objmode命令 | TABキーによるオブジェクトのフォーカス移動の設定。 |
Windows API に keybd_event関数 というのがあります。これはキーボードのキーを操作したことにする命令、いわゆる仮想キーの送信、キー押しのシミュレートというようなものです。HSP2にこれと同名のllmod.asモジュール命令が存在しましたが、この関数をそのまま呼び出していただけです。
と言うわけで、この関数を利用したサンプルとして、Windows自体が持っているショートカットキー(Windowsキー + ???)を送信して、少し特殊な処理を行ってみます。
; keybd_event関数サンプルソース (by Kpan) #uselib "user32" #func keybd_event "keybd_event" int, int, int objsize 200 button "すべてのウィンドウを最小化する", *minimize button "「ファイル名を指定して実行」を開く", *filerun button "エクスプローラを開く", *explorer button "ファイルの検索を開く", *filesearch button "ログオン画面に移動する", *logon button "システムのプロパティを開く", *systemproperty button "スタートメニューを開く", *startmenu stop ; すべてのウィンドウを最小化する/元に戻す [Winキー+Mキー] *minimize ; Windowsキー($5B)を押します。第3パラ(省略)が0だと「押す」処理。 keybd_event $5B keybd_event 'M' ; Mキーを押します。 ; Windowsキーを離す必要があります。第3パラが2だと「離す」処理。 keybd_event $5B, , 2 stop ; 「ファイル名を指定して実行」を開く [Winキー+Rキー] *filerun keybd_event $5B keybd_event 'R' keybd_event $5B, , 2 stop ; エクスプローラ(マイコンピュータ)を開く [Winキー+Eキー] *explorer keybd_event $5B keybd_event 'E' keybd_event $5B, , 2 stop ; ファイルの検索を開く [Winキー+Fキー] *filesearch keybd_event $5B keybd_event 'F' keybd_event $5B, , 2 stop ; ログオン画面に移動する [Winキー+Lキー] *logon keybd_event $5B keybd_event 'L' keybd_event $5B, , 2 stop ; システムのプロパティを開く [Winキー+Pauseキー] *systemproperty keybd_event $5B keybd_event 19 ; Break(Pause)キーを押します。 keybd_event $5B, , 2 stop ; スタートメニューを開く [Winキー] ; (わざわざAPIを使わず、標準のsendmsg命令を使って開く方法あり *startmenu keybd_event $5B ; Windowsキーを押して離します。 keybd_event $5B, , 2 stop
キーが押された瞬間、キーが離された瞬間をチェックします。
; WM_KEYDOWN (キーが押された時) oncmd *keydown, $100 ; WM_KEYUP (キーが離された時) oncmd *keyup, $101 stop *keydown ; システム変数 wparam にキーコード が入る mes "押した ("+wparam+")" stop *keyup mes "離した ("+wparam+")" stop
次に、「Alt キー + ??? キー」を押した時のチェックです。
; WM_SYSCHAR (Altキー + ??? キーが押された時) oncmd *syschar, $106 stop *syschar ; システム変数 wparam にキーコード が入る mes "Altキー + 押した ("+wparam+")"
Copyright © 2005-2012 Kpan. All rights reserved.