Форум: "Media";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];
ВнизДлина PlayList-а в WinAmp 2.x в секундах Найти похожие ветки
← →
lord Zeratul © (2005-07-23 13:33) [0]День добрый! Может кто-нибудь знает, как узнать длину PlayList-а в WinAmp 2.x в секундах. Я знаю, что для работы с WinAmp существует множество компонентов, но ни в одном из них я не нашёл такого свойства. В принципе, частично я эту задачу решил, написав следующий код, но мне надо реализовать «длина PlayList в секундах» как свойство.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, WinampControl;
…
var
Form1: TForm1;
W:TWinampControl;
…
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption:=IntToStr(W.ReturnListLength);
end;
unit WinampControl;
interface
uses
Windows, Messages, SysUtils, Classes;
type
TWinampControl = class(TComponent)
private
function SendToWA(Msg: Cardinal; wParam: integer; lParam: integer): boolean;
function SendToWAResult(Msg: Cardinal; wParam: integer; lParam: integer; var value: integer): boolean;
protected
{ Protected declarations }
public
function NextTrack: boolean; // переходит к следующему треку
function PrevTrack: boolean; // переходит к предыдущему треку
function Stop: boolean; // останавливает WinAmp
function GetLength: integer; // длина текущего трека в секундах
function ReturnListCount:integer; // число треков в плэй листе
function ReturnListLength:integer; // длина плэй листа
function StartOfPL: boolean; // перейти к началу плэй листа
function EndOfPL: boolean; // перейти к концу плэй листа
function CloseWinamp: boolean; // закрыть WinAmp
published
{ Published declarations }
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents("SpECTre", [TWinampControl]);
end;
function TWinampControl.ReturnListLength():integer;
var
i:integer;
intTime:integer;
begin
intTime:=0;
for i:=1 to ReturnListCount do
begin
intTime:=intTime+GetLength;
NextTrack;
Stop;
end;
StartOfPL;
Result:=intTime;
end;
function TWinampControl.SendToWA(Msg: Cardinal; wParam: integer; lParam: integer): boolean;
var
Handle: HWND;
begin
Handle:=FindWindow("Winamp v1.x",nil);
if Handle<>0 then
begin
SendMessage(Handle, Msg, wParam, lParam);
Result:=true;
end
else Result:=false;
end;
function TWinampControl.SendToWAResult(Msg: Cardinal; wParam: integer; lParam: integer; var value: integer): boolean;
var
Handle: HWND;
begin
value:=0;
Handle:=FindWindow("Winamp v1.x",nil);
if Handle<>0 then
begin
value:=SendMessage(Handle, Msg, wParam, lParam);
Result:=true;
end
else Result:=false;
end;
function TWinampControl.ReturnListCount:integer;
var
i: integer;
begin
SendToWAResult(WM_USER,1,124,i);
Result:=i;
end;
function TWinampControl.NextTrack: boolean;
begin
Result:=SendToWA(WM_COMMAND,40048,0);
end;
function TWinampControl.PrevTrack: boolean;
begin
Result:=SendToWA(WM_COMMAND,40044,0);
end;
function TWinampControl.Stop: boolean;
begin
Result:=SendToWA(WM_COMMAND,40047,0);
end;
function TWinampControl.GetLength: integer;
var
i: integer;
begin
SendToWAResult(WM_USER,1,105,i);
Result:=i;
end;
function TWinampControl.StartOfPL: boolean;
begin
Result:=SendToWA(WM_COMMAND,40154,0);
end;
function TWinampControl.EndOfPL: boolean;
begin
Result:=SendToWA(WM_COMMAND,40158,0);
end;
function TWinampControl.CloseWinamp: boolean;
begin
Result:=SendToWA(WM_COMMAND,40001,0);
end;
end.
← →
Antonn © (2005-07-23 17:34) [1]lord Zeratul © (23.07.05 13:33)
простите за любопытство, но мне всегда было интересно, зачем люди хотят через свою программу, управлять винампом?
← →
lord Zeratul © (2005-07-24 22:29) [2]Отвечу легко! Конкретно для меня: я включаю WinAmp и ложусь спать. Когда WinAmp отыгрывает весь плей-лист, питание компьютер а отключается. Следовательно, мне надо узнать "длину" плэй-листа.
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.011 c