Форум: "Основная";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];
ВнизПоддержка горячих мультимедиа клавиш Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.049 c