![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Есть клавиатуры на которых имеются клавиши мультимедиа, у меня не такая). Можно настроить переключение песен в проигрывателе(windows media player) на определённую клавишу? Чтоб как на мультимедийной клаве вперед и назад.
|
#2
|
|||
|
|||
![]() Ну что-то нашёл
Код:
function TForm1.GetWMPHandle: hwnd; begin result := FindWindow('WMPlayerApp', nil); result := FindWindowEx(result, 0, 'WMPAppHost', 'WMPAppHost'); if result = 0 then result := Findwindow(nil,'Windows Media Player'); end; //На бутон или имя клавиши var wnd:hwnd; begin wnd := GetWMPHandle; if wnd <> 0 then SendMessage(wnd,WM_APPCOMMAND,0,$B0000); end; Цитата:
Но это работает только если прога имеет фокус, а как теперь сделать чтоб это работало независимо от активного на данный момент приложения? Т.е. например на VK_NUMPAD0 переключался трек? Последний раз редактировалось Qwed86, 07.11.2008 в 13:59. |
#3
|
|||
|
|||
![]() регистрировать их как глобальные горячие клавиши.
Delphi - это лишь инструмент, а что ты сможешь создать при помощи этого инструмента, зависит исключительно от тебя. |
#4
|
|||
|
|||
![]() Ну теперь всё работает
Код:
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) function GetWMPHandle : hwnd; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormActivate(Sender: TObject); private procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY; { Private declarations } public { Public declarations } end; var Form1: TForm1; var wnd:hwnd; implementation {$R *.dfm} function TForm1.GetWMPHandle: hwnd; begin result := FindWindow('WMPlayerApp', nil); result := FindWindowEx(result, 0, 'WMPAppHost', 'WMPAppHost'); if result = 0 then result := Findwindow(nil,'Windows Media Player'); end; procedure TForm1.WMHotKey(var Msg: TWMHotKey); begin wnd := GetWMPHandle; if msg.HotKey=1 then if wnd <> 0 then SendMessage(wnd,WM_APPCOMMAND,0,$C0000); if msg.HotKey=2 then if wnd <> 0 then SendMessage(wnd,WM_APPCOMMAND,0,$B0000); if msg.HotKey=3 then if wnd <> 0 then SendMessage(wnd,WM_APPCOMMAND,0,$E0000); end; procedure TForm1.FormCreate(Sender: TObject); begin RegisterHotKey(Form1.Handle, 1, 0, vk_f1); RegisterHotKey(Form1.Handle, 2, 0, vk_f2); RegisterHotKey(Form1.Handle, 3, 0, vk_f3); end; procedure TForm1.FormDestroy(Sender: TObject); begin UnRegisterHotKey(Form1.Handle, vk_f1); UnRegisterHotKey(Form1.Handle, vk_f2); UnRegisterHotKey(Form1.Handle, vk_f3); end; procedure TForm1.FormActivate(Sender: TObject); begin ShowWindow(Handle,SW_MINIMIZE); ShowWindow(Application.Handle,SW_MINIMIZE); end; end. Если просто переделывать ругается на procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY; в часности на слово message типа unknown directive? Последний раз редактировалось Qwed86, 07.11.2008 в 17:51. |
#5
|
|||
|
|||
![]() Сервис писать, или еще проще просто спрятать форму.
Delphi - это лишь инструмент, а что ты сможешь создать при помощи этого инструмента, зависит исключительно от тебя. |
#6
|
|||
|
|||
![]() Alexo Ну спрятать это понятно, я чтоб весила меньше хочу, щас я допру уже почти родил).
|