Главная страница
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.077 c
3-1080822047
Yad
2004-04-01 16:20
2004.05.02
Агрегатные поля


14-1081261783
Soft
2004-04-06 18:29
2004.05.02
Есть ли Бог на Марсе?


14-1081161379
ИМХО
2004-04-05 14:36
2004.05.02
Развал СССР


1-1082026377
Fast
2004-04-15 14:52
2004.05.02
Преобразование BYTE to BIN


1-1082031444
Серг
2004-04-15 16:17
2004.05.02
Поиск в Excelевском документе