Delphi programming blog
Источник: http://teran.karelia.pro/articles/item_4465.html
 

Удаленное управление MediaPlayer Classic

Опубликовано 13.04.2011 г. 22:49

Пару-тройку дней назад скачивал Media Player Classic, думаю всем известный проигрыватель. И заметил рядом баннер, ведущий на страницу "Android Remote Control for Windows Media Player Classic". Что заинтересовало.

Суть действа достаточно проста. В настройках медиа плеера присутствует пункт: web interface. При включении данной опции медиа плеер обрабатывает http запросы используя указанный порт. Это позволяет управлять плеером используя отправку POST запросов. Впрочем вы можете попробовать включить данную опцию у себя, если используете этот плеер, и перейти по ссылке в настройках. Для чего вообще можно сие действо применять. Допустим у вас к телевизору подключен компьютер, на компьютере воспроизводится фильм, вы лежите на диване, и вам лень вставать чтобы поставить плеер на паузу. Тогда вы берете какой либо гаджет под управлением windows и с него отправляете команду плееру. С помощью POST-метода вам потребуется отправить параметр wm_command со значением 888 по адресу http://player-host:port/command.html Для автоматизации действа можно использовать например такой класс:
    TMPCHttpController = class(TObject)
      strict private
        const
          http_command = 'wm_command';
          default_port = 13579;
        var
        FHttp : TIdHTTP;
        FPostQuery : TStringList;

        FServer : string;
        FPort   : integer;

        FCloseOnTerminate : boolean;
      public
        constructor Create();
        destructor  Destroy(); override;

        procedure SendCommand(cmd: integer);

        property Server : string read FServer write FServer;
        property Port : integer read FPort write FPort;
        property CloseOnTerminate : boolean read FCloseOnTerminate write FCloseOnTerminate;
    end;
Для отправки запросов используется indy компонент TIdHTTP, класс имеет свойства для настройки сервера и порта, а так же флаг для отправки команды закрытия плеера при завершении работы программы. Реализация методов может быть, например, такой:
interface 
......
var     mpc : TMPCHttpController;

implementation
uses sysutils;

constructor TMPCHttpController.Create;
begin
    inherited;
    FPostQuery := TStringList.Create();
    FHttp := TIdHttp.Create(nil);

    FPort   := default_port;
    FServer := '127.0.0.1';
end;

destructor TMPCHttpController.Destroy;
const cmdClose = 816;
begin
    if FCloseOnTerminate then
        SendCommand(cmdClose);

    FHttp.Free();
    FPostQuery.Free();
    inherited;
end;

procedure TMPCHttpController.SendCommand(cmd: integer);
const cmd_url = 'http://%s:%d/command.html';
begin
    FPostQuery.Text := Format('%s=%d',[http_command, cmd]);

    FHttp.Post( Format(cmd_url, [FServer, FPort]), FPostQuery);
end;


initialization
    mpc := TMPCHttpController.Create();

finalization
    mpc.Free();
Как видно объявлена глобальная переменная класса TMPCHttpController, которая инициализируется в секции initialization, деструктор вызывается в finalization секции модуля, что в принципе на мой взгляд вполне уместно. Для отправки команды используется метод SendCommand. Поскольку все команды целочисленные, то наряду с реализацией калькулятора, данный пример может очень наглядно демонстрировать использование свойства tag наследников класса TComponent. Так что вам потребуется добавить несколько кнопок на форму, задать значения tag и применить единый обработчик нажатий. Поддерживается порядка 150 команд, список и коды которых вы можете посмотреть в форме вэб-интерфейса.
Метки:  http  |  media player 

Комментарии

Нет комментариев
- Имя
- e-mail*
- Сайт
вы можете использовать теги [i],[b],[code],[quote]
Дополнительно