summaryrefslogtreecommitdiff
path: root/plugins/Watrack/players/pl_wmp.pas
blob: 41a8ad98fa544066e4da9aa8aba0800f71259468 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
{Windows Media Player}
unit pl_WMP;
{$include compilers.inc}

interface

implementation
uses windows,common,messages,srv_player,wat_api
  {$IFDEF DELPHI_7_UP}
  ,variants
  {$ENDIF}
  {$IFDEF KOL_MCK}
  ,kolcomobj
  {$ELSE}
  ,mComObj
  {$ENDIF}
;

const
  WMPOld:boolean=false;

const
//  CLASS_MP :TGUID = '{22D6F312-B0F6-11D0-94AB-0080C74C7E95}';
//  CLASS_WMP:TGUID = '{6BF52A52-394A-11D3-B153-00C04F79FAA6}'; CLASS_WindowsMediaPlayer
  MPCOMName  = 'MediaPlayer.MediaPlayer.1';
  WMPCOMName = 'WMPlayer.OCX.7';
const
  MPClass  = 'Media Player 2';
  WMPClass = 'WMPlayerApp';

function Check(wnd:HWND;flags:integer):HWND;cdecl;
begin
  result:=FindWindowEx(0,wnd,MPClass,NIL);
  if result=0 then
  begin
    result:=FindWindowEx(0,wnd,WMPClass,NIL); //?
    WMPOld:=false;
  end
  else
    WMPOld:=true;
end;

{ Version detect
  fHasWMP64 = (WMP64.FileName="")  ' WMP64 was create above via OBJECT tag else this returns False.
  fHasWMP7 = (WMP7.URL = "")       ' WMP7 or later was create above via OBJECT tag else this returns False.
}

const
  MPVersion:PWideChar = '6.4';

function GetVersionText(flags:integer):PWideChar;
var
  v:variant;
begin
  if WMPOld then
    StrDupW(result,MPVersion)
  else
  begin
    try
      v:=CreateOleObject(WMPCOMName);
      StrDupW(result,pWideChar(Widestring(v.versionInfo)));
    except
      result:=nil;
    end;
//    VarClear(v);
    v:=Null;
  end;
end;

function GetInfo(var SongInfo:tSongInfo;flags:integer):integer;cdecl;
begin
  result:=0;
  if (flags and WAT_OPT_PLAYERDATA)<>0 then
  begin
    if SongInfo.txtver=nil then
      SongInfo.txtver:=GetVersionText(flags);
  end;
end;

{
function Command(wnd:HWND;cmd:integer;value:integer):integer;cdecl;
var
  c:integer;
begin
  result:=0;
  case cmd of
//    WAT_CTRL_PREV : c:=VK_B;
//    WAT_CTRL_PLAY : c:=VK_C;
//    WAT_CTRL_PAUSE: c:=VK_X;
//    WAT_CTRL_STOP : c:=VK_Z;
//    WAT_CTRL_NEXT : c:=VK_V;
    WAT_CTRL_VOLDN: c:=VK_F9;
    WAT_CTRL_VOLUP: c:=VK_F10;
    else
      exit;
  end;
  PostMessageW(wnd,WM_KEYDOWN,c,1);
end;
}
const
  plRec:tPlayerCell=(
    Desc     :'WMP';
    flags    :WAT_OPT_APPCOMMAND or WAT_OPT_SINGLEINST;
    Icon     :0;
    Init     :nil;
    DeInit   :nil;
    Check    :@Check;
    GetStatus:nil;
    GetName  :nil;
    GetInfo  :@GetInfo;
    Command  :nil;
    URL      :'http://www.microsoft.com/windows/windowsmedia/players.aspx';
    Notes    :nil);

var
  LocalPlayerLink:twPlayer;

procedure InitLink;
begin
  LocalPlayerLink.Next:=PlayerLink;
  LocalPlayerLink.This:=@plRec;
  PlayerLink          :=@LocalPlayerLink;
end;

initialization
//  ServicePlayer(WAT_ACT_REGISTER,dword(@plRec));
  InitLink;
end.