Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2013, 15:04   #1
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию Обработка нажатия клавиши F1

Здравствуйте, возможно ли обработать нажатие клавиши f1 в любое время работы программы? И на всех формах (у меня Form1,Form2), чтобы при нажатии на f1 выполнялась команда, открывающая файл через shellexecute?

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShellExecute(Handle, nil, PChar(ExtractFilePath(ParamStr(0))+'проектделфи.pptx'), nil, nil, SW_SHOWNORMAL);
end;
То есть мне надо чтобы этот код выполнялся по нажатию клавиши F1
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 15.12.2013, 15:11   #2
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,451
По умолчанию

можно таk: (глобальная горячая клавиша)
Код:
  private
    { Private declarations }
    id1: Integer;
    procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;
//////////////

procedure TForm1.WMHotKey(var Msg: TWMHotKey);
 begin
   if Msg.HotKey = id1 then
   ShellExecute(Handle, nil, PChar(ExtractFilePath(ParamStr(0))+'проектделфи.pptx'), nil, nil, SW_SHOWNORMAL);
end;

procedure TForm1.FormCreate(Sender: TObject);
const
     VK_F1Ex    = $70;
begin
   // Register Hotkey F1
  id1 := GlobalAddAtom('Hotkey1');
  RegisterHotKey(Handle, id1, 0,VK_F1Ex);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 UnRegisterHotKey(Handle, id1);
end;

Последний раз редактировалось beegl; 15.12.2013 в 15:18.
beegl вне форума Ответить с цитированием
Старый 15.12.2013, 15:12   #3
Winexcel
Форумчанин
 
Регистрация: 26.08.2013
Сообщений: 187
По умолчанию

Оптимальный вариант
Код:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if key=VK_F1
then
ShellExecute(Handle, nil, PChar(ExtractFilePath(ParamStr(0))+'проектделфи.pptx'), nil, nil, SW_SHOWNORMAL);

end;
Winexcel вне форума Ответить с цитированием
Старый 15.12.2013, 15:25   #4
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Спасибо большое))) а можете вкратце объяснить как это работает?
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 15.12.2013, 16:01   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Это работает так: Выставляешь KeyPreview:=true для формы. И прописываешь этот обработчик. Если форма (или любой ее компонент) получает нажатие клавиши F1 сработает ShellExecute, который запустит файл pptx средствами винды.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.12.2013, 19:47   #6
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

а что делает эта команда?
Код:
 UnRegisterHotKey(Handle, id1)
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 15.12.2013, 19:57   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Можно перехватывать нажатие F1 в Application.OnMessage в одном месте и для любой формы приложения. Только аккуратненько, что бы не завалить все приложение
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.12.2013, 21:26   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а что делает эта команда?
Деактивирует назначенную горячую клавишу.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
блокировка нажатия клавиши на С# Sergey_gorobets Помощь студентам 2 23.05.2013 09:26
Игнорирование нажатия клавиши Marcus75 Помощь студентам 2 19.06.2012 23:14
Обработка события от нажатия клавиши мыши. es4e Помощь студентам 2 16.02.2011 21:24
Ожидание нажатия клавиши blinkapec Win Api 6 24.11.2010 22:06