Цитата:
Сообщение от Scream
а можнопо подробнее насчет RegisterHotKey()
|
Можно. RegisterHotKey() регистрирует горячие системные клавиши. Для того, чтобы это сделать, необходимо указать виртуальные коды клавиш и идентификатор. Например, чтобы зарегистрировать сочетание ctrl+y можно использовать такой код:
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
id1 := GlobalAddAtom('Hotkey1');
RegisterHotKey(Handle, id1, VK_CONTROL, MapVirtualKey(VkKeyScan('y'),0));
....
end;
Если все пройдет успешно то функция вернет true. Соответственно, чтобы перехватывать нажати клавиш и что-то выполнять в программе, необходимо отлавливать сообщение WM_HOTKEY. Делается это так (для того же сочетания ctrl+y):
Код:
private
id1: Integer;
procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;
{.....}
implementation
{$R *.DFM}
procedure TForm1.WMHotKey(var Msg: TWMHotKey);
begin
if Msg.HotKey = id1 then
begin
{что-то делаем в программе}
end
end;
Подобным образом можно отлавливать всё, что угодно, любое сочетание клавиш. На всякий случай поясню некоторые функции:
VkKeyScan('y') - определяет скан-код клавиши
MapVirtualKey(VkKeyScan('y'),0) - переводит скан-код в виртульный код
Константы типа VK_... описаны в модуле Windows.
Вроде бы все. Если что-то непонятно - не стесняйтесь, спрашивайте. Попробую ответить более развернуто
Чуть не забыл. При выключении программы необходимо снимать свои горячие системные клавиши функцией (для нашего примера):
Код:
UnregisterHotKey(Handle, id1)