|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
02.09.2007, 23:46 | #1 |
Старожил
Регистрация: 06.08.2007
Сообщений: 2,183
|
Как использовать компонент HotKey ?
Как использовать компонент HotKey для регистрации системных горячих клавиш ?
Очень надо, колличество сочетаний клавиш от 2 до 3 (Например: Ctrl+F1, Ctrl+Shift+R ). Как обычно сохранять выбранные комбинации HotKey`ев в файл, для дальнейшей регистрации в системе при старте. |
03.09.2007, 08:31 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Этот компонент не регистрит клавиши а просто формирует выбранное тобой сочетание клавиш, которые потом можно зарегистрировать
У него есть свойство HotKey, которое содержит выбранное тобой сочетание, его и сохраняй
I'm learning to live...
|
03.09.2007, 11:13 | #3 |
Участник клуба
Регистрация: 07.07.2007
Сообщений: 1,518
|
Если в свойствах HotKey нет нужных клавиш, напиши код при создании формы, например
HotKey1.HotKey:=49217; //ctrl+alt+a Узнать все коды клавиш можешь так procedure TForm1.HotKey1Change(Sender: TObject); begin Form1.Caption:=IntToStr(HotKey1.Hot Key) end; |
03.09.2007, 16:28 | #4 | |
Старожил
Регистрация: 06.08.2007
Сообщений: 2,183
|
Цитата:
Как их потом использовать в function RegisterHotKey(hWnd: HWND; id: Integer; fsModifiers, vk: UINT): BOOL; или можно проверять значения всех Message с кодом в компоненте HotKey? Примерно так можно ?? procedure TForm1.WMHotkey( var msg: TWMHotkey ); begin if msg.hotkey = HotKey1.HotKey then begin Close; end; end; |
|
03.09.2007, 16:39 | #5 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Не обязательно через RegisterHotKey, можно еще через TAction.
I'm learning to live...
|
03.09.2007, 16:46 | #6 |
Старожил
Регистрация: 06.08.2007
Сообщений: 2,183
|
А примерчик можно с применением TAction. Чтобы иметь о нём представление.
|
05.09.2007, 23:36 | #7 |
Старожил
Регистрация: 06.08.2007
Сообщений: 2,183
|
Ужас
Что-то неполучается зарегистрировать в системе выбраные в HotKey компоненте клавиши. Что делать?? По всякому пробывал, недопонимаю как в других программах их создают во время работы программы.
Идеи, предложения. Ждём. |
06.09.2007, 09:20 | #8 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Далее открой ActionManager кликнув по нему два раза и создай New Action по соответствующей кнопке (читай хинты если не знаеш где она) Далее опиши для этого Action1, который создастся событие OnExecute ^ procedure TForm1.Action1Execute(Sender: TObject); begin ShowMessage('qweqwewq'); end; Далее опиши OnChange для HotKey : procedure TForm1.HotKey1Change(Sender: TObject); begin Action1.ShortCut:=HotKey1.HotKey; end; Этот код свяжет шорткут актиона и того что ты там введеш в ХотКее. Все. Эдит на форму мы кинули для красоты, и чтоб на нем проверять. Итак: Запусти, стань на HotKey и набери нужную тебе Горячую клавишу. Далее перейди в Эдит и нажми выбраную тобой комбинацию - должен сработать твой action1 (см. код выше) Все просто.
I'm learning to live...
|
|
06.09.2007, 09:23 | #9 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
А еще чуть не забыл - вот весь код на всякий случай :
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ActnList, ActnMan, ComCtrls, StdCtrls; type TForm1 = class(TForm) ActionManager1: TActionManager; Action1: TAction; HotKey1: THotKey; Edit1: TEdit; procedure Action1Execute(Sender: TObject); procedure HotKey1Change(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Action1Execute(Sender: TObject); begin ShowMessage('qweqwewq'); end; procedure TForm1.HotKey1Change(Sender: TObject); begin Action1.ShortCut:=HotKey1.HotKey; end; procedure TForm1.FormCreate(Sender: TObject); begin end; end.
I'm learning to live...
|
06.09.2007, 17:03 | #10 | |
Старожил
Регистрация: 06.08.2007
Сообщений: 2,183
|
ГЛОБАЛЬНЫЕ СИСТЕМНЫЕ ГОРЯЧИИ КЛАВИШИ!
Цитата:
Но работает не так как надо: 1) Реагирует на назначенный HotKey только тогда когда программа имеет фокус или активна. 2) Надо чтобы программа свёрнутая в трей реагировала на назначенные HotKey, даже тогда когда программа вообще нигде невидна и неимеет никакого фокуса. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
HotKey | Simply-Art | Win Api | 16 | 15.08.2008 12:10 |
KOL HotKey | Simply-Art | Помощь студентам | 6 | 13.08.2008 11:01 |
Какой компонент использовать? | XPAiN | БД в Delphi | 3 | 05.05.2008 08:45 |
Потомок от HotKey | Alter | Компоненты Delphi | 4 | 03.01.2008 15:47 |
как зарегестрировать горячую клавишу с помощью HotKey | GAGARIN-NEW | Компоненты Delphi | 3 | 09.11.2007 08:22 |