Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.95/19: Рейтинг темы: голосов - 19, средняя оценка - 4.95
1 / 1 / 0
Регистрация: 14.10.2012
Сообщений: 95

Сочетание клавиш в программе

16.11.2012, 21:01. Показов 4256. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые знатоки Delphi!
Помогите пожалуйста осуществить следующее:
При наборе слова xaker в программе(ни в компоненте а именно в самой прогамме при нажатии на клавиши клавиатуры) чтобы у меня выходило сообщение к примеру 'активировано'.
Меня интересует как можно это описать.
Ну как в GTA San Andreas там читы же есть, вот я усебя в программе тоже хочу такое сделать.
заранее спасибо.

Добавлено через 4 часа 28 минут
Прошу помогите, если чето не понятно спрашивайте.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.11.2012, 21:01
Ответы с готовыми решениями:

Как программно послать сочетание клавиш?
НА форме есть MsRdpClient (mstscax.dll) нужно этому компоненту послать сочетание клавиш. как это можно сделать? пробовал всей программе...

Хук - как отловить сочетание клавиш?
Долго над этим бьюсь, никак не могу понять, во-первых - lparam меняется только при зажатом Альт, на Шифт и Контрл не реагирует... ...

При нажатии на кнопку вызвать сочетание клавиш
Можно ли сделать так, чтобы при нажатии на кнопку было вызвано сочетание клавиш. Нужно: Ctrl+Del, Insert, esc Заранее благодарю

40
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
16.11.2012, 23:37
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от antikiler_ Посмотреть сообщение
Для этого у формы есть специальное событие OnShortCut
А если у приложения несколько форм?
0
1085 / 571 / 79
Регистрация: 07.04.2011
Сообщений: 971
Записей в блоге: 2
16.11.2012, 23:41
Цитата Сообщение от gorfil Посмотреть сообщение
А если у приложения несколько форм?
Судя по тому, что нужно ТС
ну так вот как запретить ввод этого кода на титульнике?
это то что нужно
0
1 / 1 / 0
Регистрация: 14.10.2012
Сообщений: 95
16.11.2012, 23:48  [ТС]
Antikiller ваш вариант не работает(
А вот gorfil'а работает, помогите убрать возможность кода на титульнике.
0
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
16.11.2012, 23:52
Цитата Сообщение от antikiler_ Посмотреть сообщение
Судя по тому, что нужно ТС

это то что нужно
Не видел последнего сообщения.
Тогда согласен.

Добавлено через 3 минуты
Цитата Сообщение от hardik Посмотреть сообщение
Antikiller ваш вариант не работает(
А вот gorfil'а работает, помогите убрать возможность кода на титульнике.
Как вариант, пропиши Application.OnMessage := AppMessage; в обработчике события OnClose формы титульника.

P.S. Кстати, вариант, предложенный Antikiller, у меня работает даже на форме с компонентами. Только в нем int вместо i.
0
1085 / 571 / 79
Регистрация: 07.04.2011
Сообщений: 971
Записей в блоге: 2
16.11.2012, 23:58
Цитата Сообщение от hardik Посмотреть сообщение
Antikiller ваш вариант не работает(
Я всегда проверяю, прежде чем что-то выкладывать...
0
1 / 1 / 0
Регистрация: 14.10.2012
Сообщений: 95
17.11.2012, 00:08  [ТС]
Не сомневаюсь.
Сейчас ещё раз проверил не робит, помогите убрать ввод кода с титульной формы пожалуйста.

Как вариант, пропиши Application.OnMessage := AppMessage; в обработчике события OnClose формы титульника.
Это не робит.
0
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
17.11.2012, 00:10
Цитата Сообщение от hardik Посмотреть сообщение
Не сомневаюсь.
Сейчас ещё раз проверил не робит, помогите убрать ввод кода с титульной формы пожалуйста.

Как вариант, пропиши Application.OnMessage := AppMessage; в обработчике события OnClose формы титульника.
Это не робит.
Application.OnMessage := Form1.AppMessage;
0
1085 / 571 / 79
Регистрация: 07.04.2011
Сообщений: 971
Записей в блоге: 2
17.11.2012, 00:24
Давай по порядку:
1. В той форме в которой ты хочешь вводить слово, открываешь ее,переходишь в инспекторе объектов на вкладку
Events, находишь событие onShortCut, два раза мышкой по этой строчке. Откроется загатовка кода под это событие.
В него вставляешь это:
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
if msg.Result = 0 then exit;
 
    case Chr(Msg.CharCode) of
      'X':
        if i = 0 then
          inc(i)
        else
          i := 0;
      'A':
        if i = 1 then
          inc(i)
        else
          i := 0;
      'K':
        if i = 2 then
          inc(i)
        else
          i := 0;
      'E':
        if i = 3 then
          inc(i)
        else
          i := 0;
      'R':
        if i = 4 then
          begin
            ShowMessage('xaker');
            i := 0;
          end
        else
          i := 0;
    end;
Копируй и вставляй. Глобальнная переменная I. Все.
1
1 / 1 / 0
Регистрация: 14.10.2012
Сообщений: 95
17.11.2012, 16:42  [ТС]
Цитата Сообщение от gorfil Посмотреть сообщение
Application.OnMessage := Form1.AppMessage;
да так и делал не помогает.

Добавлено через 1 минуту
Цитата Сообщение от antikiler_ Посмотреть сообщение
Давай по порядку:
1. В той форме в которой ты хочешь вводить слово, открываешь ее,переходишь в инспекторе объектов на вкладку
Events, находишь событие onShortCut, два раза мышкой по этой строчке. Откроется загатовка кода под это событие.
В него вставляешь это:
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
if msg.Result = 0 then exit;
 
    case Chr(Msg.CharCode) of
      'X':
        if i = 0 then
          inc(i)
        else
          i := 0;
      'A':
        if i = 1 then
          inc(i)
        else
          i := 0;
      'K':
        if i = 2 then
          inc(i)
        else
          i := 0;
      'E':
        if i = 3 then
          inc(i)
        else
          i := 0;
      'R':
        if i = 4 then
          begin
            ShowMessage('xaker');
            i := 0;
          end
        else
          i := 0;
    end;
Копируй и вставляй. Глобальнная переменная I. Все.
именно так и делал! да знаю я что int это i. Всеравно не работает(
Может нужно ещё вызывать onmessage для этой процедуры?)
0
1085 / 571 / 79
Регистрация: 07.04.2011
Сообщений: 971
Записей в блоге: 2
17.11.2012, 17:58
Выложи проект. Надо посмотреть...
0
1 / 1 / 0
Регистрация: 14.10.2012
Сообщений: 95
17.11.2012, 19:36  [ТС]
Нет, слишком конфиденциально, других вариантов нет?

Добавлено через 53 секунды
Дайте свой скайп, если конечно это не запрещено на форуме. Там обсудим.
0
 Аватар для HanDi
898 / 345 / 65
Регистрация: 11.02.2012
Сообщений: 1,502
17.11.2012, 20:24
Цитата Сообщение от hardik Посмотреть сообщение
Дайте свой скайп, если конечно это не запрещено на форуме. Там обсудим.
запрещено

Не по теме:

Цитата Сообщение от hardik Посмотреть сообщение
Нет, слишком конфиденциально, других вариантов нет?
АХАХХА

0
1 / 1 / 0
Регистрация: 14.10.2012
Сообщений: 95
17.11.2012, 20:40  [ТС]
Цитата Сообщение от HanDi Посмотреть сообщение
запрещено

Не по теме:


АХАХХА

Я сказал что-то смешное? я не хочу выкладывать свой проект на обозрение.
0
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
17.11.2012, 22:02
Цитата Сообщение от hardik Посмотреть сообщение
да так и делал не помогает.
Вот вариант который у меня работает:
Delphi
1
2
3
4
5
6
procedure TForm1.FormShow(Sender: TObject);
begin
  Form2 := TForm2.Create(Application); // Çàñòàâêà
  Form2.ShowModal;
  Application.OnMessage := AppMessage; // Ïåðåõâàò÷èê ñîáûòèé
end;
Сначала выводится заставка, а после назначается процедура для перехвата.
0
1 / 1 / 0
Регистрация: 14.10.2012
Сообщений: 95
17.11.2012, 23:16  [ТС]
Цитата Сообщение от gorfil Посмотреть сообщение
Вот вариант который у меня работает:
Delphi
1
2
3
4
5
6
procedure TForm1.FormShow(Sender: TObject);
begin
  Form2 := TForm2.Create(Application); // Çàñòàâêà
  Form2.ShowModal;
  Application.OnMessage := AppMessage; // Ïåðåõâàò÷èê ñîáûòèé
end;
Сначала выводится заставка, а после назначается процедура для перехвата.
Тоже не работает(
Как можно OnMessage отключить на одной форме а на другой оставить, подскажите пожалуйста.
0
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
17.11.2012, 23:33
Надо код смотреть. Вырежи все секреты, а остальное выложи.
0
1 / 1 / 0
Регистрация: 14.10.2012
Сообщений: 95
18.11.2012, 01:26  [ТС]
Цитата Сообщение от gorfil Посмотреть сообщение
Вот вариант который у меня работает:
Delphi
1
2
3
4
5
6
procedure TForm1.FormShow(Sender: TObject);
begin
  Form2 := TForm2.Create(Application); // Çàñòàâêà
  Form2.ShowModal;
  Application.OnMessage := AppMessage; // Ïåðåõâàò÷èê ñîáûòèé
end;
Сначала выводится заставка, а после назначается процедура для перехвата.
А скиньте код, может хоть так разберусь.
0
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
18.11.2012, 01:43
В примере оба представленных здесь решения. Оба работают.
Вложения
Тип файла: rar Перехват нажатия клавишь.rar (182.4 Кб, 10 просмотров)
1
1 / 1 / 0
Регистрация: 14.10.2012
Сообщений: 95
18.11.2012, 14:18  [ТС]
Ясно, а подскажите плиз как вы осуществили что при запуске delphi первой появляется 1 форма хотя при запуске экзешника запускается form2.
0
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
18.11.2012, 14:42
Цитата Сообщение от hardik Посмотреть сообщение
Ясно, а подскажите плиз как вы осуществили что при запуске delphi первой появляется 1 форма хотя при запуске экзешника запускается form2.
Файл .dpr:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
program Project1;
 
uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Form2};
 
{$R *.res}
 
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1); // создается Form1
  //  Application.CreateForm(TForm2, Form2); // Form2 здесь не создаем
  Application.Run;
end.
Form2 создается по событию OnShow Form1:
Delphi
1
2
3
4
5
6
procedure TForm1.FormShow(Sender: TObject);
begin
  Form2 := TForm2.Create(Application); // Заставка
  Form2.ShowModal;
  Application.OnMessage := AppMessage; // Перехватчик событий
end;
и после ее закрытия (Form2) назначается процедура перехвата событий:
Delphi
1
Application.OnMessage := AppMessage;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.11.2012, 14:42

Как отменить сочетание клавиш в RichEdit, Delphi 7
На форме есть кнопка и у свойства ShortCut этой кнопки стоит сочетание клавиш Ctrl + Z. Но когда я нажимаю Ctrl+Z в RichEdit, то делается...

Как сделать сочетание "горячих клавиш" на клик по кнопке?
Доброго времени суток! Нужен такой результат: по нажатию определённого сочетания клавиш на клавиатуре производится событие клика по кнопке...

Нажатие клавиш в другой программе по PID
Приветствую всех:) сразу прошу прощения если написал некорректно или не в той теме:) собсна сам вопрос:) как отправить нажатия...

Как реализовать несколько горячих клавиш в программе?
Это моя первая программа на Delphi, я нашёл в интернете способ использования назначаемой из хоткея горячей клавиши, всё прекрасно работало,...

Как можно блокировать сочетание клавиш?
Как с помошью Delphi7 можно отключить сочетание клавиш alt+ctrl+delete?


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru