Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.20;
Скачать: 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 вся ветка

Текущий архив: 2007.05.20;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.057 c
2-1178273173
Doom-2
2007-05-04 14:06
2007.05.20
Как запустить приложения по очереди?


6-1163591918
ГореПрограммер
2006-11-15 14:58
2007.05.20
Получение картинки GET


6-1162996359
iXT
2006-11-08 17:32
2007.05.20
E-Mail Indi 10 (BDS 4) TIdMessage DateTime format


9-1150337378
Mfox
2006-06-15 06:09
2007.05.20
Помогите скачать directx60.rar с DelphiGFX


2-1177742275
DelphiLexx
2007-04-28 10:37
2007.05.20
Запретить Delphi удалять мои дерективы в dpr-файле