掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
キーコードを文字に変換するには? (ID:17371)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
私も同じようなことを考えたことがあります。 ホットキーを登録するソフトで、 ShiftとかF1とかも押された場合にも キーネームを得る方法。 そのときのコードが参考になれば幸いです。 /////////////////////////////////////////////////////////// procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var strMod : string; Key_Name : array[0..100] of char; lParam : Integer ; begin {RegisterHotKeyに渡すバーチャルキーコード} vk := Key ; {RegisterHotKeyに渡す特殊キー情報の変換} fsModifiers := 0; if ssShift in Shift then begin fsModifiers := fsModifiers + MOD_SHIFT; // +4 end; if ssAlt in Shift then begin fsModifiers := fsModifiers + MOD_ALT; // +1 end; if ssCtrl in Shift then begin fsModifiers := fsModifiers + MOD_CONTROL; // +2 end; {表示処理部分} case fsModifiers of 1: strMod := 'Alt + '; 2: strMod := 'Ctrl + '; 4: strMod := 'Shift + '; 3: strMod := 'Ctrl + Alt + '; 5: strMod := 'Shift + Alt + '; 6: strMod := 'Ctrl + Shift + '; 7: strMod := 'Ctrl + Shift + Alt + '; else strMod := ''; end; {バーチャルキーコードをスキャンコードに変換してからキーネームを得る} lParam := MapVirtualKey(Key, 0) shl 16 ; case Key of // lParamの0から数えて24番目のビットがExtended-Key Flag 33..46,91..93,108,111,144,163,165: lParam := lParam + $1000000 ; // Page Up...LEFT,UP,RIGHT,DOWN...Delete,,Windowsなどなど end; GetKeyNameText(lParam, @Key_Name, 100); //Key_Namewを得る KeyNameStr := String(Key_Name); //Ctrl + Ctrl みたいになるのを防ぐ if KeyNameStr = 'Ctrl' then begin KeyNameStr := ''; end; if KeyNameStr = 'Shift' then begin KeyNameStr := ''; end; if KeyNameStr = 'Alt' then begin KeyNameStr := ''; end; Edit1.Text := ( strMod + KeyNameStr ) ; //表示 end; ///////////////////////////////////////////////////////////
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.