Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.02;
Скачать: CL | DM;

Вниз

Мультимедийная клава   Найти похожие ветки 

 
Sulimxar ©   (2004-03-06 00:32) [0]

Привет

Хочу задать этакий ЭКЗОТИЧЕСКИЙ вопросик.
(На ответ трудно надеятся еще и потому, что редкий
гурман дочитает этот вопрос до конца:)

Кому приходилось работать с мультимедийной
клавой (ну там кнопочки плей, некст и тд),
будьте любезны просветить по поводу:

Моя задача - поставить глобальную хоткей
на кнопку Play этой самой клавы.
Я испытал два варианта:
1)регистрировать хоткей у винды:
RegisterHotKey(frmMain.Handle, // моя форма
                             id_MPlayPause, // некий глобпльный код hotkey
                             0 ,
                             179{код кнопки Play});

-работает для чего угодно, но только не для мультимедийных
клавиш :(?
2) Тогда я поставил хук:
Процедура перехвата:

Function KeyboardHook(Code: Integer; ParamW: WPARAM; ParamL: LPARAM):

LRESULT;stdcall;
Begin
 If Code IN [HC_ACTION, HC_NOREMOVE] Then
  Begin
     // Посылка сообщения форме моего приложения
     Result := SendMessage(ShareInf^.AppWndHandle, WM_USER, ParamW, Code);
     // Получили результат обработки сообщения...
  End;
 // ... и если он 0 - то пересылаем сообщение дальше
 if Result = 0 then
 Result := CallNextHookEx(ShareInf^.OldHookHandle, Code , ParamW, ParamL);
End;

В программе стоит код обработки:

Procedure TfrmMain.WMUser(var Message: TMessage);
var
  NewCod: integer;
Begin
  NewCod := Message.WParam;
  if NewCod = 179 then
   begin
      Play;
      Message.Result := -1; // Если мултимедийный Play - результат сообщения не 0
   end
end;

Таким образом я перехватываю сообщение с кодом 179(мултимедийный Play), и не
пересылаю его другим претендентам.

Вроде всё замечательно... но!

Да при нажатии этой самой Play - мое приложение адекватно реагирует на сообщение,
но при этом (вот ведь облом) - открывается Windows Media Player,
его Величество, блин... Который мне и даром не нужен :(

Мои дальнейшие исследования выявили следующие любопытности:
-При нажатии мультимедийных кнопок - генерируется только одно сообщение
(а не два как для кнопки F12 например (по "кнопка вниз/кнопка вверх")(почему?)
-Сообщение от мультимедийной кнопки перехватывается кроме моей проги
также winamp-ом и WMP, игнорируя мой фильтр (почему?) (подчеркиваю, что
для других кодов (немультимедийных)- сообщения таки фильтруются)
-Если открыт Winamp - нажатие кнопки Play на клаве открытие WMP не вазывает
(а может вызывает но winamp его тут же закрывает?:))

А может есть вообще какой способ попроще решить мою задачку

Помогите кто чем сможет


 
МАКСЮХА ©   (2004-03-06 15:09) [1]

Была б такая клава...


 
Sulimxar ©   (2004-03-06 19:45) [2]

Да у меня её тоже нет :)
Тестирую у товарища


 
Soft ©   (2004-03-06 20:02) [3]

http://newff.narod.ru/pascal/uekd.rar


 
Sulimxar ©   (2004-03-06 23:40) [4]

Дело в том, что я
использую впринципе тот же код
для установки и обработки хука.

Но на клаве уже стоит видимо свой
драйвер (те калькулятор, Excel и тд запускаются сами
без проблем).
А Winamp 3 - похоже и сам научился обрабатывать такую
клаву.
Кстати коды клавиш на моей клаве получаются другие.

Проблема в том, что с кнопкой Play запускается
WindowsMediaPlayer. Вот как прекратить это безобразие?
Каждый раз при нажатии кнопки Play искать и закрывать
WMP? - как-то кривовато... Как с этим справляется Winamp?


 
GrayFace ©   (2004-03-07 11:11) [5]

Просто прога(не думаю что драйвер) твоей клавы смотрит, есть ли Winamp. Прога моей клавы игнорирует Winamp, но зато не запускает WMP. А еще если в explorer"е навести на музыкальный файл и нажать play она откроет его в WMP! Так что прогрммисты мультимедийных клав способны гораздо здвинутее любого психбольного. Засунь Winamp в автозапуск и не парься.


 
Diamond Cat ©   (2004-03-07 15:35) [6]

может твой хук стоит ниже в цепочке хуков?


 
Sulimxar ©   (2004-03-07 16:44) [7]


> Засунь Winamp в автозапуск и не парься.


Так дело в том, что мне Winamp как раз и не нужен.
Мне свою прогу надо научить!

> может твой хук стоит ниже в цепочке хуков?

А как это проверить/исправить?



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

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

Наверх




Память: 0.49 MB
Время: 0.022 c
1-1081856491
Xobbit
2004-04-13 15:41
2004.05.02
MDIForm and MDIChild


14-1081513957
Rouse_
2004-04-09 16:32
2004.05.02
Пейджерные перлы. :)))


1-1082307275
DK
2004-04-18 20:54
2004.05.02
Нужно папку запоролить. Как моно сделать


14-1081844227
serge35
2004-04-13 12:17
2004.05.02
Отдал ноутбук админам


11-1045914175
Kladov
2003-02-22 14:42
2004.05.02
Язык программирования GOODWELL