Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.25;
Скачать: CL | DM;

Вниз

Длина 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 вся ветка

Текущий архив: 2005.12.25;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.086 c
14-1133185218
Толян
2005-11-28 16:40
2005.12.25
Система счесления


2-1134068302
Array
2005-12-08 21:58
2005.12.25
Можно ли узнать максимальный индекс массива без перебора значений


2-1134217233
SergProger
2005-12-10 15:20
2005.12.25
ParamStr(0) или Application.ExeName?


2-1133955929
Вт
2005-12-07 14:45
2005.12.25
виртуальный диск


6-1126682500
mrDEAD
2005-09-14 11:21
2005.12.25
помогите чем можете в написаниии проги