Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поддержка горячих мультимедиа клавиш [D7, WinXP]


Dismember ©   (2007-03-26 17:49:00) 

Здравствуйте. В программе нужно реализовать поддержку горячих мудьтимедиа клавиш, желательно с возможностью изменеия комбинаций. Стандартный компонент Delphi THotKey такое не поддерживает, поэтому ищу что-нибудь на замену. Нашел в инете подобное для Visual C++. http://www.rsdn.ru/article/controls/WinHotkeyCtrl.xml
В С не силен, поэтому вопрос. Сталкивался ли кто-нибудь из вас с подобным компонентом, предназначенным для Delphi?


Dismember   (2007-03-27 15:44:00) [1]

Решил проблему, используя WinAPI. Если кому интересно, вот мой код:
unit Unit1;

interface

uses
 Windows, Messages, Forms;

type
 TForm1 = class(TForm)
   procedure FormCreate(Sender: TObject);
 private
   procedure WM_HotKeyHandler (var Message: TMessage);
   message WM_HOTKEY;

 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 HK_mute,HK_VolumeUp,HK_VolumeDown,HK_Next, HK_Prev, HK_Stop, HK_PlayPause:integer;

implementation

{$R *.dfm}

procedure TForm1.WM_HotKeyHandler (var Message: TMessage);
var
   idHotKey: integer;
   fuModifiers: word;
   HotKey: word;
begin
 idHotkey:= Message.wParam;
 fuModifiers:= LOWORD(Message.lParam);
 HotKey:= HIWORD(Message.lParam);

 case HotKey of
   173: Caption:='Mute';
   174: Caption:='VolumeUp';
   175: Caption:='VolumeDown';
   176: Caption:='NextTrack';
   177: Caption:='PrevTrack';
   178: Caption:='Stop';
   179: Caption:='Play/Pause';
 end;
 inherited;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 HK_mute:=GlobalAddAtom('Mute');
 RegisterHotKey(handle,HK_mute,0,173);

 HK_VolumeUp:=GlobalAddAtom('VolumeUp');
 RegisterHotKey(handle,HK_VolumeUp,0,174);

 HK_VolumeDown:=GlobalAddAtom('VolumeDown');
 RegisterHotKey(handle,HK_VolumeDown,0,175);

 HK_Next:=GlobalAddAtom('NextTrack');
 RegisterHotKey(handle,HK_Next,0,176);

 HK_Prev:=GlobalAddAtom('PrevTrack');
 RegisterHotKey(handle,HK_Prev,0,177);

 HK_Stop:=GlobalAddAtom('Stop');
 RegisterHotKey(handle,HK_Stop,0,178);

 HK_PlayPause:=GlobalAddAtom('Play/Pause');
 RegisterHotKey(handle,HK_PlayPause,0,179);
end;

end.


Вот только кнопки не перехватываются, если запущено другое приложение, использующее эти кнопки, по крайней мере с винампом так.


Наверх

Титульная страница Поиск, карта сайта Написать письмо