From 864081102a5f252415f41950b3039a896b4ae9c5 Mon Sep 17 00:00:00 2001 From: Vadim Dashevskiy Date: Mon, 8 Oct 2012 18:43:29 +0000 Subject: Awkwars's plugins - welcome to our trunk git-svn-id: http://svn.miranda-ng.org/main/trunk@1822 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Watrack/players/pl_behold.pas | 175 ++++++++++++++++++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 plugins/Watrack/players/pl_behold.pas (limited to 'plugins/Watrack/players/pl_behold.pas') diff --git a/plugins/Watrack/players/pl_behold.pas b/plugins/Watrack/players/pl_behold.pas new file mode 100644 index 0000000000..977a021034 --- /dev/null +++ b/plugins/Watrack/players/pl_behold.pas @@ -0,0 +1,175 @@ +{BeholderTV} +unit pl_behold; +{$include compilers.inc} + +interface + +implementation + +uses windows,messages,common,wrapper,srv_player,wat_api; + +const + WM_BHCMD = WM_USER+200; + WMBH_CHNLUP = WM_USER+203; // Переключить на следующий канал + WMBH_CHNLDOWN = WM_USER+204; // Переключить на предыдущий канал + WMBH_VOLUMEUP = WM_USER+210; // Увеличить выбранный уровень + WMBH_VOLUMEDOWN = WM_USER+211; // Уменьшить выбранный уровень + WMBH_FREEZE = WM_USER+232; // Триггер стоп-кадра + WMBH_SETVOLUME = WM_USER+280; // Установить уровень громкости (LParam = 0..65535) + WMBH_GETVOLUME = WM_USER+281; // Получить текущий уровень громкости (использовать SendMessage, Result = 0..65535) + WMBH_GETVERSION = WM_USER+285; // Получить новер версии ПО (использовать SendMessage) + +const + TitleWndClass = 'TApplication'; + EXEName = 'BEHOLDTV.EXE'; + +var + TitleWnd:HWND; + +function enumproc(wnd:HWND; lParam:LPARAM):bool; stdcall; +var + buf:array [0..64] of AnsiChar; +begin + result:=true; + if GetClassNameA(wnd,buf,63)<>0 then + begin + if StrCmp(buf,TitleWndClass)=0 then + begin + TitleWnd:=wnd; + result:=false; + end + end; +end; + +function Check(wnd:HWND;flags:integer):HWND;cdecl; +begin + if wnd<>0 then + begin + result:=0; + exit; + end; + result:=FindWindow('TMain','BeholdTV'); + if result<>0 then + EnumThreadWindows(GetWindowThreadProcessId(result,nil),@enumproc,0); +end; + +function GetVersion(wnd:HWND):integer; +begin + result:=DWORD(SendMessage(wnd,WM_BHCMD,WMBH_GETVERSION,0)); + result:=((result shr 16) shl 8)+LoWord(result); +end; + +function GetVersionText(ver:integer):PWideChar; //!! +begin + mGetMem(result,10*SizeOf(WideChar)); + IntToStr(result+1,ver); + result[0]:=result[1]; + result[1]:='.'; +end; + +function GetFileName(wnd:HWND;flags:integer):pWideChar;cdecl; +begin + result:=nil; +end; + +function Pause(wnd:HWND):integer; +begin + result:=0; + PostMessage(wnd,WM_BHCMD,WMBH_FREEZE,0); +end; + +function Next(wnd:HWND):integer; +begin + result:=0; + PostMessage(wnd,WM_BHCMD,WMBH_CHNLUP,0); +end; + +function Prev(wnd:HWND):integer; +begin + result:=0; + PostMessage(wnd,WM_BHCMD,WMBH_CHNLDOWN,0); +end; + +function GetVolume(wnd:HWND):cardinal; +begin + result:=WORD(SendMessage(wnd,WM_BHCMD,WMBH_GETVOLUME,0)); + result:=(result shl 16)+(result shr 12); +end; + +procedure SetVolume(wnd:HWND;value:cardinal); +begin + SendMessage(wnd,WM_BHCMD,WMBH_SETVOLUME,value shl 12); +end; + +function VolDn(wnd:HWND):integer; +begin + result:=WORD(SendMessage(wnd,WM_BHCMD,WMBH_VOLUMEDOWN,0)); +end; + +function VolUp(wnd:HWND):integer; +begin + result:=WORD(SendMessage(wnd,WM_BHCMD,WMBH_VOLUMEUP,0)); +end; + +function GetInfo(var SongInfo:tSongInfo;flags:integer):integer;cdecl; +begin + result:=0; + if (flags and WAT_OPT_PLAYERDATA)<>0 then + begin + if SongInfo.plyver=0 then + begin + SongInfo.plyver:=GetVersion (SongInfo.plwnd); + SongInfo.txtver:=GetVersionText(SongInfo.plyver); + end; + exit; + end; + + if (flags and WAT_OPT_CHANGES)<>0 then + SongInfo.wndtext:=GetDlgText(TitleWnd); +end; + +function Command(wnd:HWND;cmd:integer;value:integer):integer;cdecl; +begin + case cmd of + WAT_CTRL_PREV : result:=Prev(wnd); +// WAT_CTRL_PLAY : result:=Play(wnd,pWideChar(value)); + WAT_CTRL_PAUSE: result:=Pause(wnd); +// WAT_CTRL_STOP : result:=Stop(wnd); + WAT_CTRL_NEXT : result:=Next(wnd); + WAT_CTRL_VOLDN: result:=VolDn(wnd); + WAT_CTRL_VOLUP: result:=VolUp(wnd); +// WAT_CTRL_SEEK : result:=Seek(wnd,value); + else + result:=0; + end; +end; + +const + plRec:tPlayerCell=( + Desc :'BeholdTV'; + flags :WAT_OPT_HASURL; + Icon :0; + Init :nil; + DeInit :nil; + Check :@Check; + GetStatus:nil; + GetName :@GetFileName; + GetInfo :@GetInfo; + Command :@Command; + URL :nil; + Notes :'Still experimental, no tested. Can work not properly'); + +var + LocalPlayerLink:twPlayer; + +procedure InitLink; +begin + LocalPlayerLink.Next:=PlayerLink; + LocalPlayerLink.This:=@plRec; + PlayerLink :=@LocalPlayerLink; +end; + +initialization +// ServicePlayer(WAT_ACT_REGISTER,dword(@plRec)); + InitLink; +end. -- cgit v1.2.3