Как из Delphi-приложения можно управлять Winamp-ом?
Например, при нажатии кнопки запускется и начинает играть.
У меня где-то валяется mp-3 диск с автораном написанном на Delphi.
procedure TUsrForm.PrevBtnClick(Sender: TObject);
var h : hWnd;
begin
h:=findwindow('Winamp v1.x',nil);
sendmessage(h,WM_COMMAND,40044,0); //Prev track
end;
procedure TUsrForm.PauseBtnClick(Sender: TObject);
var h : hWnd;
begin
h:=findwindow('Winamp v1.x',nil);
sendmessage(h,WM_COMMAND,40046,0); // Pauseunpause
end;
procedure TUsrForm.NextBtnClick(Sender: TObject);
var h : hWnd;
begin
h:=findwindow('Winamp v1.x',nil);
sendmessage(h,WM_COMMAND,40048,0); //Next track
end;
WinExec(PChar(WinAMPPath+' "'+PathToPls+'"'),1);
http://jvcl.sourceforge.net - там есть библиотека jvcl - содержит в том числе и набор компонентов по управлению winAMP
Terminator, огромное спасибо тебе, большому железному товарищю!
Всё фурычит как надо.
;D Конечно!
Приветствую Вас, Кирилл!
program WAHotKeys;
uses Windows, Messages;
ResourceString RC_Winamp = 'Winamp v1.x';
ResourceString RC_Winamp3 = 'BaseWindow_RootWnd';
const
Num = 13;
Spec = Num - 10;
keys: array[1..Num] of byte = (byte('X'), byte('V'), byte('C'), byte('B'),
byte('Z'), byte('L'), VK_LEFT, VK_RIGHT, VK_UP, VK_DOWN,
byte('Q'), byte('S'), byte('N'));
var
msg: TMsg;
id: array[1..Num] of integer;
st: string;
WA3, handle: THandle;
i, key: integer;
begin
handle:= GetModuleHandle('WAHotKeys');
st:= 'hk ';
for i:= 1 to Num do
begin
st[3]:= char(64+i);
id[i]:= GlobalAddAtom(PAnsiChar(st));
RegisterHotKey(handle, id[i], MOD_WIN, keys[i]);
end;
while GetMessage(Msg, 0, 0, 0) do
begin
TranslateMessage(Msg);
WA3:= findwindow(PAnsiChar(RC_Winamp3), nil); // WinAmp3 window
if WA3=0 then WA3:=findwindow(PAnsiChar(RC_Winamp), nil); // WinAmp window
if (WA30) then
begin
if ((msg.LParam shl 16) shr 16)=MOD_WIN then
begin // MOD_WIN
key:= (msg.LParam shr 16);
if key=byte('S') then
begin
if IsWindowVisible(WA3) then ShowWindow(WA3, sw_minimize)
else ShowWindow(WA3, sw_restore);
end else
if key=byte('N') then
begin
postmessage(WA3, wm_keydown, byte('B'), 0);
postmessage(WA3, wm_keyup, byte('B'), 0);
end else
if key=byte('Q') then
begin // UnRegisterHotKeys
for i:= 1 to Num do UnRegisterHotKey(handle, id[i]);
Halt(Msg.wParam);
end else
begin
for i:= 1 to (Num-Spec) do
begin // for i
if key=keys[i] then
begin
postmessage(WA3, wm_keydown, keys[i], 0);
postmessage(WA3, wm_keyup, keys[i], 0);
end;
end; // for i
end;
end; // MOD_WIN
end;
DispatchMessage(Msg);
end;
Halt(Msg.wParam);
end.