![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запустить и проиграть WinAmp [D6, D7]
Бася © (2006-01-26 23:30:00)Добрый вечер Мастера!
Подскажите, плз, как запустить и проиграть выбранный файл в WinAmp?
mozgan (2006-01-27 20:53:00) [1]Здрасте, Мастера!
Тоже искал давно подобной инфы. Просто редкость!
Я как начинающий во многом не разобрался, а именно вот в таком примере, написанном Leshiy....
Как вариант:
Запускаешь Winamp с парамертом в виде файла с полным путем.
Например: C:\Progra~1\Winamp\winamp.exe D:\Music\Aria\Вавилон.mp3
Что тут имелось в виду? Использовние ShellExecute?
Подскажите, пожалуйста!
Бася (2006-01-27 20:11:00) [2]Я кажется разобрался. Спасибо!
Тут немного есть закорючки, но с функциональностью я все понял. Спасибо!
TUser (2006-01-27 17:32:00) [3]
unit UMusAmp;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ShellApi;
type
TTimeDisplayMode = (tdmElapsed, tdmRemaining);
TMusAmp = class
private
WAWindow:hWND;
public
procedure Play;
constructor Create;
procedure Previous;
procedure Next;
procedure Pause;
procedure Stop;
procedure SoftStop;
procedure StopAfter;
//DO NOT USE//
procedure UpStream (Seconds:integer);
procedure DownStream (Seconds:integer);
//DO NOT USE//
//╥хюЁхЄшўхёъш, ¤Єш 2 яЁюЎ√ фюыцэ√
//юЄяЁрты Є№ схуєэюъ тяхЁхф ш эрчрф
//эр чрфрээюх ъюышўхёЄтю ёхъєэф
//═ю эр ёрьюь фхых, юэш юЄяЁрты ■Є шї эр ёъюы№ъю
//шь чрїюўхЄё .
procedure StartOfList;
procedure EndOfList;
procedure SetTimeMode(Mode: TTimeDisplayMode);
procedure WAProperties;
//Open file dialog
procedure OpenFileDlg;
//Open URL dialog
procedure OpenURLDlg;
//File information box
procedure FileInfoDlg;
//Open visualization options
procedure VisOptions;
//Open visualization plug-in options
procedure VisualizePlugInOptions;
//Execute current visualization plug-in
procedure VisualizePlugIn;
//Toggle about box
procedure AboutBox;
//Toggle title autoscrolling
procedure TitleAutoscrolling;
//Toggle always on top
procedure OnTop;
//Toggle Windowshade
procedure WindowShade;
//Toggle Playlist Windowshade
procedure PlaylisWindowShade;
//Toggle doublesize mode
procedure Doublesize;
//Toggle EQ
procedure Equalizer;
//Toggle playlist editor
procedure PlayList;
//Toggle main window visible
procedure MainWindow;
//Toggle minibrowser
procedure MiniBrowser;
//Toggle easymove
procedure EasuMove;
//Toggle repeat
procedure RepeatOnOff;
//Toggle shuffle
procedure Shuffle;
//Open jump to time dialog
procedure JToTime;
//Open jump to file dialog
procedure JToFile;
//Open skin selector
procedure SkinDlg;
//Configure current visualization plug-in
procedure CurrentVisPlugIn;
//Reload the current skin
procedure SkinReload;
//Close Winamp
procedure Close;
//Show the edit bookmarks
procedure EditBMarks;
//Adds current track as a bookmark
procedure SetBMark;
//Play audio CD
procedure AudioCD;
//Load a preset from EQ
procedure LoadEQ;
//Save a preset to EQF
procedure SaveEQ;
//Opens load presets dialog
procedure LoadEQDlg;
//Opens auto-load presets dialog
procedure AuloLoadEQDlg;
//Load default preset
procedure LoadDefaultEQ;
//Opens save preset dialog
procedure SaveDefaultEQ;
//Opens delete preset dialog
procedure DeleteEQDlg;
//Increase volume by value%
procedure IncreaseVol(value: integer);
//Decrease volume by value%
procedure DecreaseVol(value: integer);
//Play list length
function ListLength: integer;
//Reloads WinAmp;
procedure Reload;
// published
end;
TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
constructor Create(AOwner: TComponent); override;
{ Public declarations }
end;
var
Form1: TForm1;
Muser:TMusAmp;
implementation
{$R *.dfm}
constructor TForm1.Create(AOwner: TComponent);
begin
inherited Create (AOwner);
Muser:=TMusAmp.Create;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
// Muser.Play;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
// muser.IncreaseVol(5);
showmessage(inttostr(muser.ListLength));
muser.AddToBMarks('H:\ьєч√ър\pulja.mp3');
showmessage(inttostr(muser.ListLength));
end;
// TMusAmp code
constructor TMusAmp.Create;
begin
inherited Create;
shellexecute(0,nil,'d:\programs\winamp\winamp.exe',nil,nil,SW_SHOWNORMAL);//SW_SHOWMINIMIZED);
WAWindow:=findWindow('WinAmp v1.x',nil);
end;
procedure TMusAmp.SoftStop;
begin
sendMessage(WAWindow,WM_COMMAND,40147,0);
end;
procedure TMusAmp.Next;
begin
sendMessage(WAWindow,WM_COMMAND,40048,0);
end;
procedure TMusAmp.Pause;
begin
sendMessage(WAWindow,WM_COMMAND,40046,0);
end;
procedure TMusAmp.Play;
begin
sendMessage(WAWindow,WM_COMMAND,40045,0);
end;
procedure TMusAmp.Previous;
begin
sendMessage(WAWindow,WM_COMMAND,40044,0);
end;
procedure TMusAmp.Stop;
begin
sendMessage(WAWindow,WM_COMMAND,40047,0);
end;
TUser (2006-01-27 17:32:00) [4]procedure TMusAmp.StopAfter;
begin
sendMessage(WAWindow,WM_COMMAND,40157,0);
end;
procedure TMusAmp.UpStream (Seconds:integer);
var i,j:integer;
begin
j:=trunc(Seconds*60/35);
for i:=1 to j do
sendMessage(WAWindow,WM_COMMAND,40148,0);
end;
procedure TMusAmp.DownStream (Seconds:integer);
var i,j:integer;
begin
j:=trunc(Seconds*60/35);
for i:=1 to j do
sendMessage(WAWindow,WM_COMMAND,40144,0);
end;
procedure TMusAmp.StartOfList;
begin
sendMessage(WAWindow,WM_COMMAND,40154,0);
end;
procedure TMusAmp.EndOfList;
begin
sendMessage(WAWindow,WM_COMMAND,40158,0);
end;
procedure TMusAmp.SetTimeMode(Mode: TTimeDisplayMode);
begin
if Mode=tdmElapsed then sendMessage(WAWindow,WM_COMMAND,40037,0)
else sendMessage(WAWindow,WM_COMMAND,40038,0);
end;
procedure TMusAmp.WAProperties;
begin
sendMessage(Muser.WAWindow,WM_COMMAND,40012,0);
end;
procedure TMusAmp.OpenFileDlg;
begin
sendMessage(WAWindow,WM_COMMAND,40029,0);
end;
procedure TMusAmp.OpenURLDlg;
begin
sendMessage(WAWindow,WM_COMMAND,40155,0);
end;
procedure TMusAmp.FileInfoDlg;
begin
sendMessage(WAWindow,WM_COMMAND,40188,0);
end;
procedure TMusAmp.VisOptions;
begin
sendMessage(WAWindow,WM_COMMAND,40190,0);
end;
procedure TMusAmp.VisualizePlugInOptions;
begin
sendMessage(WAWindow,WM_COMMAND,40191,0);
end;
procedure TMusAmp.VisualizePlugIn;
begin
sendMessage(WAWindow,WM_COMMAND,40192,0);
end;
procedure TMusAmp.AboutBox;
begin
sendMessage(WAWindow,WM_COMMAND,40041,0);
end;
procedure TMusAmp.TitleAutoscrolling;
begin
sendMessage(WAWindow,WM_COMMAND,40189,0);
end;
procedure TMusAmp.OnTop;
begin
sendMessage(WAWindow,WM_COMMAND,40019,0);
end;
procedure TMusAmp.WindowShade;
begin
sendMessage(WAWindow,WM_COMMAND,40064,0);
end;
procedure TMusAmp.PlaylisWindowShade;
begin
sendMessage(WAWindow,WM_COMMAND,40266,0);
end;
procedure TMusAmp.Doublesize;
begin
sendMessage(WAWindow,WM_COMMAND,40165,0);
end;
procedure TMusAmp.Equalizer;
begin
sendMessage(WAWindow,WM_COMMAND,40036,0);
end;
procedure TMusAmp.PlayList;
begin
sendMessage(WAWindow,WM_COMMAND,40040,0);
end;
procedure TMusAmp.MainWindow;
begin
sendMessage(WAWindow,WM_COMMAND,40258,0);
end;
procedure TMusAmp.MiniBrowser;
begin
sendMessage(WAWindow,WM_COMMAND,40298,0);
end;
procedure TMusAmp.EasuMove;
begin
sendMessage(WAWindow,WM_COMMAND,40186,0);
end;
procedure TMusAmp.RepeatOnOff;
begin
sendMessage(WAWindow,WM_COMMAND,40022,0);
end;
procedure TMusAmp.Shuffle;
begin
sendMessage(WAWindow,WM_COMMAND,40023,0);
end;
procedure TMusAmp.JToTime;
begin
sendMessage(WAWindow,WM_COMMAND,40193,0);
end;
procedure TMusAmp.JToFile;
begin
sendMessage(WAWindow,WM_COMMAND,40194,0);
end;
procedure TMusAmp.SkinDlg;
begin
sendMessage(WAWindow,WM_COMMAND,40219,0);
end;
procedure TMusAmp.CurrentVisPlugIn;
begin
sendMessage(WAWindow,WM_COMMAND,40221,0);
end;
procedure TMusAmp.SkinReload;
begin
sendMessage(WAWindow,WM_COMMAND,40291,0);
end;
procedure TMusAmp.Close;
begin
sendMessage(WAWindow,WM_COMMAND,40001,0);
end;
procedure TMusAmp.EditBMarks;
begin
sendMessage(WAWindow,WM_COMMAND,40320,0);
end;
procedure TMusAmp.SetBMark;
begin
sendMessage(WAWindow,WM_COMMAND,40321,0);
end;
procedure TMusAmp.AudioCD;
begin
sendMessage(WAWindow,WM_COMMAND,40323,0);
end;
procedure TMusAmp.LoadEQ;
begin
sendMessage(WAWindow,WM_COMMAND,40253,0);
end;
procedure TMusAmp.SaveEQ;
begin
sendMessage(WAWindow,WM_COMMAND,40254,0);
end;
procedure TMusAmp.LoadEQDlg;
begin
sendMessage(WAWindow,WM_COMMAND,40172,0);
end;
procedure TMusAmp.AuloLoadEQDlg;
begin
sendMessage(WAWindow,WM_COMMAND,40173,0);
end;
procedure TMusAmp.LoadDefaultEQ;
begin
sendMessage(WAWindow,WM_COMMAND,40174,0);
end;
procedure TMusAmp.SaveDefaultEQ;
begin
sendMessage(WAWindow,WM_COMMAND,40175,0);
end;
procedure TMusAmp.DeleteEQDlg;
begin
sendMessage(WAWindow,WM_COMMAND,40178,0);
end;
procedure TMusAmp.IncreaseVol(value: integer);
var i:integer;
begin
for i:=1 to value do
sendMessage(WAWindow,WM_COMMAND,40058,0);
end;
procedure TMusAmp.DecreaseVol(value: integer);
var i:integer;
begin
for i:=1 to value do
sendMessage(WAWindow,WM_COMMAND,40059,0);
end;
function TMusAmp.ListLength: integer;
begin
ListLength:=sendMessage(WAWindow,WM_USER,0,124);
end;
procedure TMusAmp.Reload;
begin
end;
end.
Eraser (2006-01-27 15:39:00) [5]
> Бася (27.01.06 13:51) [2]
> Хочу выразить благодарность Мастеру Eraser. Я никогда так
> много не получал инфы от мастеров.
кхе.. кхе.. спасибо конечно :)
> о какому принципу работает
> запуск мр3 файла из windows?
см. раздел реестра HKEY_CLASSES_ROOT, пропиши туда своё расширение по аналогии, только прежде чем регистрировать mp3 файлы для запуска своей программой - неплохо спросить у юзера подручными средствами, хочет ли он запускать mp3 твоим приложением.
Leshiy (2006-01-27 15:22:00) [6]Как вариант:
Запускаешь Winamp с парамертом в виде файла с полным путем.
Например: C:\Progra~1\Winamp\winamp.exe D:\Music\Aria\Вавилон.mp3
Бася (2006-01-27 13:51:00) [7]Всем Мастерам и участникам добрый день!
Вчера задался вопросом создать прогу для поиска на компе всех файлов мр3 и проигрывания нужного (выбранного из списка). Удалось тока запустить сам winamp. Но как проиграть - вопрос. Хочу выразить благодарность Мастеру Eraser. Я никогда так много не получал инфы от мастеров. Спасибо! У меня тока один вопрос. По какому принципу работает
запуск мр3 файла из windows? Т.е. В папке "Sound" есть мр3 файлы, клацкаем на нужном - он проигрывается в программе по умолчанию (у меня winamp). Хотелось бы узнать, как это можно реализовать?
С Уважением, Бася
Eraser (2006-01-27 00:34:00) [8]
#define WM_WA_IPC WM_USER
// messages are sent to the winamp window using:
//result = SendMessage(hwnd_winamp,WM_WA_IPC,command_data,command);
/* Messages available to send */
#define IPC_GETVERSION 0
/*
IPC_GETVERSION is sent to the window, and the return value is the version
Version 1.55 = 0x1551
Version 1.6b = 0x16A0
Version 1.60 = 0x16AF
Version 1.61 = 0x16B0
Version 1.62 = 0x16B1
Version 1.64 = 0x16B3
Version 1.666 = 0x16B4
Version 1.69 = 0x16B5
Version 1.7x = 0x170x
Version 1.8x = 0x180x
Version 1.9x = 0x190x
Version 2.0x = 0x200x
the command_data parameter is 0.
so,
if (SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_GETVERSION) != 0x1551)
MessageBox(NULL,"Error, Winamp 1.55 not found","Warning",MB_OK);
*/
#define IPC_PLAYFILE 100
/*
IPC_PLAYFILE is sent to the window for each char of a null terminated string of a file to ADD
to the playlist (it doesn't change the playing status). Note, if you pass a file with the extension
".m3u" it will be treated as a playlist.
for example:
char *file = "C:\\download\\booga.mp3";
int x;
for (x = 0; x