HSP3 あれこれ <キーボード>

Last Update : 2006/04/xx

◆ キーボード

 キーボード関連のサンプルスクリプトです。HSP3でキーボードに関連した標準命令には、以下のようなものが用意されています。

名称 説明
getkey命令 キーボードのキーが押し下げられているかを取得。
stick命令 キーボードのキーが押し下げられたかを取得。
(カーソルキー、Ctrlキー、Shiftキー、Enterキー、ESCキー、TABキーのみ)
onkey命令 キーボードのキーが押し下げられていた時のラベルジャンプ先を設定。
objmode命令 TABキーによるオブジェクトのフォーカス移動の設定。

↑TOP↑

仮想キーの利用

 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

↑TOP↑

キー押しのチェック

 キーが押された瞬間、キーが離された瞬間をチェックします。

;	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+")"

↑TOP↑

〜HSP3 あれこれ〜
ウィンドウ | オブジェクト | ファイル | フォルダ | キーボード | マウス | メニュー | システム | 文字列 | COM | その他

Copyright © 2005-2012 . All rights reserved.