![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поддержка горячих мультимедиа клавиш [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.
Вот только кнопки не перехватываются, если запущено другое приложение, использующее эти кнопки, по крайней мере с винампом так.