キーが押されているかどうかを調べる
|
68 |
PressKeyCode |
動作確認 |
Delphi2007 |
更新日 |
2008/01/31(木) |
キーが押されているかどうかをリアルタイムに
調査するにはGetAsyncKeyStateを使います。
次のようにするとキーを押しているかどうかを
調べることができます。
────────────────────
function PressKeyCode(const VirtualKey: Integer): Boolean;
begin
if ((GetAsyncKeyState( VirtualKey ) and $8000) = 0) then
Result := False
else
Result := True;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if PressKeyCode(VK_CONTROL) then
Label1.Caption := 'Ctrlキーを押している'
else
Label1.Caption := 'Ctrlキーを押していない';
if PressKeyCode(VK_SHIFT) then
Label2.Caption := 'Shiftキーを押している'
else
Label2.Caption := 'Shiftキーを押していない';
if PressKeyCode(VK_MENU) then
Label3.Caption := 'Altキーを押している'
else
Label3.Caption := 'Altキーを押していない';
if PressKeyCode(VK_LWIN) then
Label4.Caption := '左Winキーを押している'
else
Label4.Caption := '左Winキーを押していない';
if PressKeyCode(VK_RWIN) then
Label5.Caption := '右Winキーを押している'
else
Label5.Caption := '右Winキーを押していない';
end;
────────────────────
Altキーは VK_MENU になります。
バーチャルキーコード VK_ は Windows.pas に定義されています。
10進数と16進数で表記できるように一覧にしてみました。
左の値が10進数、右の値が16進数です。
VK_LBUTTON 1 01
VK_RBUTTON 2 02
VK_CANCEL 3 03
VK_MBUTTON 4 04
VK_XBUTTON1 5 05
VK_XBUTTON2 6 06
VK_BACK 8 08
VK_TAB 9 09
VK_CLEAR 12 0C
VK_RETURN 13 0D
VK_SHIFT 16 10
VK_CONTROL 17 11
VK_MENU 18 12
VK_PAUSE 19 13
VK_CAPITAL 20 14
VK_KANA 21 15
VK_HANGUL 21 15
VK_JUNJA 23 17
VK_FINAL 24 18
VK_HANJA 25 19
VK_KANJI 25 19
VK_CONVERT 28 1C
VK_NONCONVERT 29 1D
VK_ACCEPT 30 1E
VK_MODECHANGE 31 1F
VK_ESCAPE 27 1B
VK_SPACE 32 20
VK_PRIOR 33 21
VK_NEXT 34 22
VK_END 35 23
VK_HOME 36 24
VK_LEFT 37 25
VK_UP 38 26
VK_RIGHT 39 27
VK_DOWN 40 28
VK_SELECT 41 29
VK_PRINT 42 2A
VK_EXECUTE 43 2B
VK_SNAPSHOT 44 2C
VK_INSERT 45 2D
VK_DELETE 46 2E
VK_HELP 47 2F
{ VK_0 thru VK_9 are the0 same as ASCII '0' thru '9' ($30 - $39) }
{ VK_A thru VK_Z are the0 same as ASCII 'A' thru 'Z' ($41 - $5A) }
VK_LWIN 91 5B
VK_RWIN 92 5C
VK_APPS 93 5D
VK_SLEEP 95 5F
VK_NUMPAD0 96 60
VK_NUMPAD1 97 61
VK_NUMPAD2 98 62
VK_NUMPAD3 99 63
VK_NUMPAD4 100 64
VK_NUMPAD5 101 65
VK_NUMPAD6 102 66
VK_NUMPAD7 103 67
VK_NUMPAD8 104 68
VK_NUMPAD9 105 69
VK_MULTIPLY 106 6A
VK_ADD 107 6B
VK_SEPARATOR 108 6C
VK_SUBTRACT 109 6D
VK_DECIMAL 110 6E
VK_DIVIDE 111 6F
VK_F1 112 70
VK_F2 113 71
VK_F3 114 72
VK_F4 115 73
VK_F5 116 74
VK_F6 117 75
VK_F7 118 76
VK_F8 119 77
VK_F9 120 78
VK_F10 121 79
VK_F11 122 7A
VK_F12 123 7B
VK_F13 124 7C
VK_F14 125 7D
VK_F15 126 7E
VK_F16 127 7F
VK_F17 128 80
VK_F18 129 81
VK_F19 130 82
VK_F20 131 83
VK_F21 132 84
VK_F22 133 85
VK_F23 134 86
VK_F24 135 87
VK_NUMLOCK 144 90
VK_SCROLL 145 91
VK_LSHIFT 160 A0
VK_RSHIFT 161 A1
VK_LCONTROL 162 A2
VK_RCONTROL 163 A3
VK_LMENU 164 A4
VK_RMENU 165 A5
VK_BROWSER_BACK 166 A6
VK_BROWSER_FORWARD 167 A7
VK_BROWSER_REFRESH 168 A8
VK_BROWSER_STOP 169 A9
VK_BROWSER_SEARCH 170 AA
VK_BROWSER_FAVORITES 171 AB
VK_BROWSER_HOME 172 AC
VK_VOLUME_MUTE 173 AD
VK_VOLUME_DOWN 174 AE
VK_VOLUME_UP 175 AF
VK_MEDIA_NEXT_TRACK 176 B0
VK_MEDIA_PREV_TRACK 177 B1
VK_MEDIA_STOP 178 B2
VK_MEDIA_PLAY_PAUSE 179 B3
VK_LAUNCH_MAIL 180 B4
VK_LAUNCH_MEDIA_SELECT 181 B5
VK_LAUNCH_APP1 182 B6
VK_LAUNCH_APP2 183 B7
VK_OEM_1 186 BA
VK_OEM_PLUS 187 BB
VK_OEM_COMMA 188 BC
VK_OEM_MINUS 189 BD
VK_OEM_PERIOD 190 BE
VK_OEM_2 191 BF
VK_OEM_3 192 C0
VK_OEM_4 219 DB
VK_OEM_5 220 DC
VK_OEM_6 221 DD
VK_OEM_7 222 DE
VK_OEM_8 223 DF
VK_OEM_102 226 E2
VK_PACKET 231 E7
VK_PROCESSKEY 229 E5
VK_ATTN 246 F6
VK_CRSEL 247 F7
VK_EXSEL 248 F8
VK_EREOF 249 F9
VK_PLAY 250 FA
VK_ZOOM 251 FB
VK_NONAME 252 FC
VK_PA1 253 FD
VK_OEM_CLEAR 254 FE
参考────────────────────
全ウインドウを最小化する
http://homepage1.nifty.com/MADIA/delphi/Win32API/AllClose.htm
VK_WINとして$5B=91が登録されているが
D2007のWindows.pasには
VK_LWIN = 91;
VK_RWIN = 92;
という定義がある。
http://www.bekkoame.ne.jp/~yamasemi/labo/winkey.txt
仮想キーコードの表がある。
|