⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 winampcontrol.pas

📁 basic routines for controlling winamp from application with delphi.
💻 PAS
字号:
{
 Winamp Control API
 (c) 1999-2001 Nusret Suzme
}



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 GetVersion: string;
   function GetTrackTitle: string;
   function IsWinampRunning: boolean;
   function IsPlaying: boolean;
   function IsPaused: boolean;
   function NextTrack: boolean;
   function PrevTrack: boolean;
   function Stop: boolean;
   function Pause: boolean;
   function StartPlay: boolean;
   function FadeOutAndStop: boolean;
   function StopAfterTrack: boolean;
   function FastForward: boolean;
   function FastRewind: boolean;
   function GetLength: integer;
   function GetOffset: integer;
   function Seek(Offset: integer): boolean;
   function StartOfPL: boolean;
   function EndOfPL: boolean;
   function ExecVISPlugin: boolean;
   function ToggleSOT: boolean;
   function ToggleDoubleSize: boolean;
   function ToggleEqualizer: boolean;
   function TogglePlayList: boolean;
   function ToggleMainWindow: boolean;
   function ToggleMiniBrowser: boolean;
   function VolumeUp: boolean;
   function VolumeDown: boolean;
   function SetVolume(Volume: byte): boolean;
   function SetBalance(Balance: byte): boolean;
   function ToggleRepeat: boolean;
   function ToggleShuffle: boolean;
   function CloseWinamp: boolean;
   function RestartWinamp: boolean;
  published
    { Published declarations }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Additional', [TWinampControl]);
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.GetVersion: string;
var
 i: integer;
begin
result:='';
if SendToWAResult(WM_USER,0,0,i) then
 result:=copy(inttohex(i,4),1,1)+'.'+copy(inttohex(i,4),2,1)+copy(inttohex(i,4),4,1);
end;

function TWinampControl.GetTrackTitle: string;
var
 P: PChar;
 Handle: HWND;
begin
Result:='';
getmem(p,255);
Handle:=FindWindow('Winamp v1.x',nil);
if Handle<>0 then
 begin
  GetWindowText(Handle,P,255);
  if pos('- Winamp',P)>0 then
   begin
    Result:=Copy(P,1,-2+Length(P)-(Length(P)-Pos('- Winamp',P)));
    Delete(Result,1,Pos(' ',Result));
   end;
 end;
end;

function TWinampControl.IsWinampRunning: boolean;
begin
Result:=SendToWA(0,0,0);
end;

function TWinampControl.IsPlaying: boolean;
var
 i: integer;
begin
SendToWAResult(WM_USER,0,104,i);
if i=1 then result:=true
 else result:=false;
end;

function TWinampControl.IsPaused: boolean;
var
 i: integer;
begin
SendToWAResult(WM_USER,0,104,i);
if i=3 then result:=true
 else result:=false;
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.Pause: boolean;
begin
Result:=SendToWA(WM_COMMAND,40046,0);
end;

function TWinampControl.StartPlay: boolean;
begin
Result:=SendToWA(WM_COMMAND,40045,0);
end;

function TWinampControl.FadeOutAndStop: boolean;
begin
Result:=SendToWA(WM_COMMAND,40147,0);
end;

function TWinampControl.StopAfterTrack: boolean;
begin
Result:=SendToWA(WM_COMMAND,40157,0);
end;

function TWinampControl.FastForward: boolean;
begin
Result:=SendToWA(WM_COMMAND,40148,0);
end;

function TWinampControl.FastRewind: boolean;
begin
Result:=SendToWA(WM_COMMAND,40144,0);
end;

function TWinampControl.GetLength: integer;
var
 i: integer;
begin
SendToWAResult(WM_USER,1,105,i);
Result:=i;
end;

function TWinampControl.GetOffset: integer;
var
 i: integer;
begin
SendToWAResult(WM_USER,0,105,i);
Result:=i*1000;
end;

function TWinampControl.Seek(Offset: integer): boolean;
begin
Result:=SendToWA(WM_USER,Offset*1000,106);
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.ExecVISPlugin: boolean;
begin
Result:=SendToWA(WM_COMMAND,40192,0);
end;

function TWinampControl.ToggleSOT: boolean;
begin
Result:=SendToWA(WM_COMMAND,40019,0);
end;

function TWinampControl.ToggleDoubleSize: boolean;
begin
Result:=SendToWA(WM_COMMAND,40165,0);
end;

function TWinampControl.ToggleEqualizer: boolean;
begin
Result:=SendToWA(WM_COMMAND,40036,0);
end;

function TWinampControl.TogglePlayList: boolean;
begin
Result:=SendToWA(WM_COMMAND,40040,0);
end;

function TWinampControl.ToggleMainWindow: boolean;
begin
Result:=SendToWA(WM_COMMAND,40258,0);
end;

function TWinampControl.ToggleMiniBrowser: boolean;
begin
Result:=SendToWA(WM_COMMAND,40298,0);
end;

function TWinampControl.VolumeUp: boolean;
begin
Result:=SendToWA(WM_COMMAND,40058,0);
end;

function TWinampControl.VolumeDown: boolean;
begin
Result:=SendToWA(WM_COMMAND,40059,0);
end;

function TWinampControl.SetVolume(Volume: byte): boolean;
begin
Result:=SendToWA(WM_USER,Volume,122);
end;

function TWinampControl.SetBalance(Balance: byte): boolean;
begin
Result:=SendToWA(WM_USER,Balance,123);
end;

function TWinampControl.ToggleRepeat: boolean;
begin
Result:=SendToWA(WM_COMMAND,40022,0);
end;

function TWinampControl.ToggleShuffle: boolean;
begin
Result:=SendToWA(WM_COMMAND,40023,0);
end;

function TWinampControl.CloseWinamp: boolean;
begin
Result:=SendToWA(WM_COMMAND,40001,0);
end;

function TWinampControl.RestartWinamp: boolean;
begin
Result:=SendToWA(WM_USER,0,135);
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -