Вниз
Скачать: CL | DM;

Поддержка горячих мультимедиа клавиш   Найти похожие ветки 

 
Dismember ©   (2007-03-26 17:49) [0]

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


 
Dismember ©   (2007-03-27 15:44) [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.


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



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.028 c
3-1172843106
kilya
2007-03-02 16:45
2007.05.20
security.fdb . модификация


2-1178185101
Ken9
2007-05-03 13:38
2007.05.20
Получение средствами дельфи html страницы с веб-сервера


2-1178097224
Washington
2007-05-02 13:13
2007.05.20
Windows (директория)


2-1177655329
Ega23
2007-04-27 10:28
2007.05.20
TInterfacedList.Delete - произойдёт ли вызов _Release


1-1174565452
thecat
2007-03-22 15:10
2007.05.20
Где взять mmx.dcu?




   Наверх