Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.08.2010, 15:45
cadil cadil вне форума
Начинающий
 
Регистрация: 24.10.2007
Сообщения: 169
Репутация: 10
По умолчанию Где найти коды виртуальных клавиш

$60...$69 - коды цифр виртуальной клавиатуры. Помогите найти коды букв A...Z в этом же формате.
Спасибо!

Последний раз редактировалось cadil, 26.08.2010 в 16:17.
Ответить с цитированием
  #2  
Старый 26.08.2010, 16:15
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

В модуле Windows определены соотв константы: VK_*
Но у латиницы вроде бы вирт.коды совпадают с ascii ?
Ответить с цитированием
  #3  
Старый 26.08.2010, 16:19
Аватар для timeless
timeless timeless вне форума
Прохожий
 
Регистрация: 27.06.2008
Сообщения: 36
Репутация: 12
По умолчанию

Код:
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	
Space	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
Ответить с цитированием
  #4  
Старый 26.08.2010, 16:31
cadil cadil вне форума
Начинающий
 
Регистрация: 24.10.2007
Сообщения: 169
Репутация: 10
По умолчанию

Цитата:
Сообщение от timeless
Код:
F1	112	$70	VK_F1	
		
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
Спасибо! Это то, что я искал.
Ответить с цитированием
  #5  
Старый 26.08.2010, 16:51
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

настоящий программист программу бы написал для этого:

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  Caption:=IntToStr(Key)+' $'+IntToHex(Key, 2);
end;

end.
Ответить с цитированием
  #6  
Старый 26.08.2010, 17:17
cadil cadil вне форума
Начинающий
 
Регистрация: 24.10.2007
Сообщения: 169
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
настоящий программист программу бы написал для этого:
Спасибо! Вопрос от чайника - как на форме программы отбразить информацию о текущей раскладке клавиатуры? Ответ нашел, но он мне кажется слишком сложным.
Ответить с цитированием
  #7  
Старый 26.08.2010, 17:21
Программер_Х
 
Сообщения: n/a
Счастье

Цитата:
Сообщение от NumLock
настоящий программист программу бы написал для этого:

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  Caption:=IntToStr(Key)+' $'+IntToHex(Key, 2);
end;

end.


например я настоящий
Ответить с цитированием
  #8  
Старый 27.08.2010, 08:04
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от cadil
Спасибо! Вопрос от чайника - как на форме программы отбразить информацию о текущей раскладке клавиатуры? Ответ нашел, но он мне кажется слишком сложным.
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  buf: array [0..$ff] of Char;
begin
  GetKeyboardLayoutName(buf);
  Edit1.Text:=StrPas(buf);
end;
переключить на en:
Код:
LoadKeyboardLayout(PChar('00000409'), KLF_ACTIVATE);
переключить на ru:
Код:
LoadKeyboardLayout(PChar('00000419'), KLF_ACTIVATE);
00000409 - en
00000419 - ru
Ответить с цитированием
  #9  
Старый 27.08.2010, 09:34
cadil cadil вне форума
Начинающий
 
Регистрация: 24.10.2007
Сообщения: 169
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
переключить на en:

переключить на ru:
Похоже, я неточно сформулировал вопрос. Мне не нужно производить активные действия по изменению раскладки, а необходимо продублировать на форме программы информацию о состоянии клавиатуры из трея.
Наверное, в среде Delphi есть отдельные команды, аналогичные, например, команде Date, которые позволяют выполнить эту процедуру.
Ответить с цитированием
  #10  
Старый 27.08.2010, 10:33
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

я же написал:
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  buf: array [0..$ff] of Char;
begin
  GetKeyboardLayoutName(buf);
  Edit1.Text:=StrPas(buf);
end;
если вернет (т.е. в Edit1.Text будет):
00000409 - значит en
00000419 - значит ru
Ответить с цитированием
  #11  
Старый 27.08.2010, 11:24
cadil cadil вне форума
Начинающий
 
Регистрация: 24.10.2007
Сообщения: 169
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
я же написал:
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  buf: array [0..$ff] of Char;
begin
  GetKeyboardLayoutName(buf);
  Edit1.Text:=StrPas(buf);
end;
если вернет (т.е. в Edit1.Text будет):
00000409 - значит en
00000419 - значит ru
Спасибо за помощь. Элегантное решение! Единственное - на en у меня высвечивается 00020409 вместо 00000419.
Код:
  if ((StrPas(buf)= '00020409') or (StrPas(buf)= '00000409')) then LabelK.Caption:='EN';
Какие еще варианты надо предусмотреть? Программа будет установлена на других компьтерах.
Ответить с цитированием
  #12  
Старый 27.08.2010, 11:49
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Language Identifier Constants and Strings
http://msdn.microsoft.com/en-us/libr...(v=VS.85).aspx
Ответить с цитированием
  #13  
Старый 27.08.2010, 12:29
cadil cadil вне форума
Начинающий
 
Регистрация: 24.10.2007
Сообщения: 169
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
Language Identifier Constants and Strings
http://msdn.microsoft.com/en-us/libr...(v=VS.85).aspx
Благодарю!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:08.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter