Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > коды клавиатурных клавиш


Автор: buian 30.3.2005, 12:46
выложите здесь коды клавиатурных клавиш или дайте ссылку!

т.е. коды:

Enter - #13 и.т.д.

или скажите почему когда я пробую для теста проверять клавиши:

при событии формы OnKeyPress

пишу

if Key=#13 then
Form1.Close;

ето работает!

if Key=Chr(vk_Up) then
Form1.Close;

не работает!

может че не так

Автор: Girder 30.3.2005, 13:31
Цитата(buian @ 30.3.2005, 13:46)
выложите здесь коды клавиатурных клавиш или дайте ссылку!
Подвесь к Memo... smile
Код
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
 Memo1.Lines.Add('#'+IntToStr(ord(Key)));
 Key:=#0;
end;


Цитата(buian @ 30.3.2005, 13:46)
может че не так
Что есть vk_Up? smile

Автор: Dr.No_xXx 30.3.2005, 13:41
Vk_up это клавиша вверх.

F1 112 $70 VK_F1
F2 113 $71 VK_F2
F3 114 $72 VK_F3
F4 115 $73 VK_F4
F5 116 $74 VK_F5
F6 117 $75 VK_F6
F7 118 $76 VK_F7
F8 119 $77 VK_F8
F9 120 $78 VK_F9
F10 121 $79 VK_F10
пробел 32 $20 VK_SPACE
BackSpace 8 $8 VK_BACK
Tab 9 $9 VK_TAB
Enter 13 $0D VK_RETURN
Shift 16 $10 VK_SHIFT
Ctrl 17 $11 VK_CONTROL
Alt 18 $12 VK_MENU
CapsLock 20 $14 VK_CAPITAL
Esc 27 $1B VK_ESCAPE
Insert 45 $2D VK_INSERT
PageUp 33 $21 VK_PRIOR
PageDown 34 $22 VK_NEXT
End 35 $23 VK_END
Home 36 $24 VK_HOME
37 $25 VK_LEFT
38 $26 VK_UP
39 $27 VK_RIGHT
40 $28 VK_DOWN
Delete 46 $2E VK_DELETE
PrintScreen 44 $2C VK_SNAPSHOT
ScrollLock 145 $91 VK_SCROLL
Pause 19 $13 VK_PAUSE
NumLock 144 $90 VK_NUMLOCK
0,) 48 $30 ord('0')
1 ! 49 $31 ord('1')
2 @ 50 $32 ord('2')
3 # 51 $33 ord('3')
4 $ 52 $34 ord('4')
5 % 53 $35 ord('5')
6 ^ 54 $36 ord('6')
7 & 55 $37 ord('7')
8 * 56 $38 ord('8')
9 ( 57 $39 ord('9')
` ~ 192 $C0
- _ 189 $BD
= + 187 $BB
[ { 219 $DB
] } 221 $DD
; : 186 $BA
' " 222 $DE
\ | 220 $DC
, < 188 $BC
. > 190 $BE
/ ? 191 $BF
a,A 65 $41 ord('A')
b,B 66 $42 ord('B')
c,C 67 $43 ord('C')
d,D 68 $44 ord('D')
e,E 69 $45 ord('E')
f,F 70 $46 ord('F')
g,G 71 $47 ord('G')
h,H 72 $48 ord('H')
i,I 73 $49 ord('I')
j,J 74 $4A ord('J')
k,K 75 $4B ord('K')
l,L 76 $4C ord('L')
m,M 77 $4D ord('M')
n,N 78 $4E ord('N')
o,O 79 $4F ord('O')
p,P 80 $50 ord('P')
q,Q 81 $51 ord('Q')
r,R 82 $52 ord('R')
s,S 83 $53 ord('S')
t,T 84 $54 ord('T')
u,U 85 $55 ord('U')
v,V 86 $56 ord('V')
w,W 87 $57 ord('W')
x,X 88 $58 ord('X')
y,Y 89 $59 ord('Y')
z,Z 90 $5A ord('Z')
На правой клавиатуре при выключенной NumLock
0 96 $60 VK_NUMPAD0
1 97 $61 VK_NUMPAD1
2 98 $62 VK_NUMPAD2
3 99 $63 VK_NUMPAD3
4 100 $64 VK_NUMPAD4
5 101 $65 VK_NUMPAD5
6 102 $66 VK_NUMPAD6
7 103 $67 VK_NUMPAD7
8 104 $68 VK_NUMPAD8
9 105 $69 VK_NUMPAD9
* 106 $6A VK_MULTIPLY
+ 107 $6B VK_ADD
- 109 $6D VK_SUBTRACT
. 110 $6E VK_DECIMAL
/ 111 $6F VK_DIVIDE

Автор: Girder 30.3.2005, 13:54
Цитата(Dr @ 30.3.2005, 14:41)
Vk_up это клавиша вверх.

Код
procedure TForm1.KeyUpDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 if Key=38 then close;
end;

Автор: Dr.No_xXx 30.3.2005, 13:57
А ну да чето торможу.
38 $26 VK_UP

Автор: oleg1973 30.3.2005, 16:10
не так нада делать
как спец в кейлогерах авторитетно заявляю smile
нада использовать
GetKeyboardState
ToAscii
и будет вам счастье

Автор: Dr.No_xXx 30.3.2005, 16:12
Поясни please.

Автор: Girder 30.3.2005, 16:36
Цитата(Dr @ 30.3.2005, 17:12)
Поясни please.
Код
procedure TForm1.Timer1Timer(Sender: TObject);
var m:TKeyboardState;
begin
 GetKeyboardState(m);
 if m[38]<>0 then close;
end;

procedure TForm1.FormCreate(Sender: TObject);
var m:TKeyboardState;
begin
 m[38]:=0;
 SetKeyboardState(m);
end;


Автор: Poseidon 30.3.2005, 21:03
Цитата(buian @ 30.3.2005, 12:46)
выложите здесь коды клавиатурных клавиш или дайте ссылку!

т.е. коды:

Enter - #13 и.т.д.
А так не пойдет?
Код
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
Label1.Caption:= '#'+IntToStr(ord(key));
end;


На форме только label1

Автор: buian 2.4.2005, 07:19
так! конечно всем спасибо! но вот что - с клаввишами enter, space, ESC ....
все понятно ! также понятно с клавишами букв. Но вот клавиши Shift, Alt... клавиши стрелок такими спосоами не работают! Я чето слышал про рассшаренные коды! вроде как этиклавиши туды относятся ! но как использовать не знаю! если кто знает напишите плз..

Автор: Poseidon 3.4.2005, 01:22
Цитата(buian @ 2.4.2005, 07:19)
Но вот клавиши Shift, Alt... клавиши стрелок такими спосоами не работают
Тебе же Dr.No_xXx выложил коды всех клавишь. Что еще нужно? И Shift, и Alt там есть. Что конкретно тебе нужно? В какой ситуации ты это хочешь применить?

Автор: buian 3.4.2005, 07:46
! ну напримет я просто вот такой пример: ShowMessage(IntToStr(Ord(Key)));
короче срабатывает когда нажимаешь на ентер, бакспайс....

а вот клавиши алт, контрл ни канаают! даже в люьой ситуации не получается!

Автор: Poseidon 4.4.2005, 00:34
Цитата(buian @ 3.4.2005, 07:46)
а вот клавиши алт, контрл ни канаают!
А эти клавишь по отдельности и не должны обрабатываться. Система обрабатывает их нажатие совместно с какой-либо другой клавишей. Попробуй в своем примере нажать какую-нибудь клавишу, а потом нажать эту же клавишу в сочетнии с тем же контролом или шифтом. Результат будет разным.

Клавиша Alt ввобще предназначена для доступа к меню программы (MainMenu) и никакие другие компоненты ее нажатие отдельно не отлавливают.

Автор: buian 4.4.2005, 17:48
а как на счет стрелок: вверх, вниз, влево, впарво

Автор: Poseidon 5.4.2005, 00:59
Цитата(buian @ 4.4.2005, 17:48)
а как на счет стрелок: вверх, вниз, влево, впарво

Цитата(Dr @ 30.3.2005, 13:41)
Vk_up это клавиша вверх.


От себя могу добавить:
VK_LEFT в лево
VK_RIGHT в право
VK_DOWN в низ

Процедура OnKeyPress (и подобные) их тоже не отлавливает. Это нужно делать самостоятельно.

Добавлено @ 01:03
Вот пример обработки нажатия этих клавиш:
Код
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);

begin
  if Key in [VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT]
  then
    ShowMessage('нажата стрелка')
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)