Просмотр полной версии : Winamp controller
Ashtaret
07.08.2009, 17:29
Вообщем лазил по postpacific.com случайно увидил
new l2ui.dll(LC Ext v1.2.2)
Поддерживаемые клиенты: Lineage2 C4,Lineage2 C6(Interlude),CT1.5(Hellbound),Gracia Part 1,Gracia Part 2,Gracia Plus
Дллка умеет:
-Работать с винампом(играть,стоп,упр громкостью,вывести текущий трек в чат. и тд)
-Слушать радио(SHOUTcast) (смена радиостанций в lcext.ini)
- todo новые функции...
Разархивировать в папку system игры Lineage2.
Набрать в игре в чате /r_help
Enjoy
download RapidShare: 1-CLICK Web hosting - Easy Filehosting
(c)new l2ui.dll(LC Ext v1.2.1) - Page 3 - PostPacific
вообщем умеет переключать песни прямо с л2 с помощью команд чата , но есть 1н минус это античит ) а собственно хотелось бы юзать пакехтак и одновременно переключать песни , вот я и хотел спрость может ли пакетхак с помощью скриптов переключать песни... =)
вот собственно в mIRC есть скрипт такой который использует дллки , мб эти дллки подойдут для скрипта пакетхака ;) просто заменить кнопки командами клиеннта !
очень хотелось бы услышать отзывы профи ;)))
alexteam
07.08.2009, 18:18
да.
реализовать их через плагин в пх.
можно бы было полностью все завязать на плагине, но там сломаны readx функции, но есть возможность сделать это добавив свои функции в скриптовый движек.
пример плагина добавляющего свою функцию в пх.
http://l2phx.pp.ru/wsvn/filedetails.php?repname=l2phx3&path=%2F3.5.x%2FPluginCodding%2Fplugin_demo2.dpr
одна из статей на тему управления винампом
http://delphiblog.ru/2007/winamp-programming/
Ashtaret
07.08.2009, 19:01
да.
реализовать их через плагин в пх.
можно бы было полностью все завязать на плагине, но там сломаны readx функции, но есть возможность сделать это добавив свои функции в скриптовый движек.
пример плагина добавляющего свою функцию в пх.
http://l2phx.pp.ru/wsvn/filedetails....ugin_demo2.dpr
одна из статей на тему управления винампом
http://delphiblog.ru/2007/winamp-programming/
честноговоря я неочень понимаю в делфи ,а точнее вообще нечего :) еще не учил ,только азы паскаля на когдато законченом 11-класе )
но что я понял это типо нужно будет делать так ?:
begin
if FromClient and (pck=HStr('38 2F 00 6E 00 65 00 78 00 74 00 00 00 00 00')) then begin //next
begin
Procedure WinampCommand(Command:Integer);
//поиск окна Winamp’a
WinampHWND := findwindow('Winamp v1.x',nil);
//если поиск успешен,то посылаем сообщение
if (WinampHWND <> 0) then
SendMessage(WinampHWND, 440048, Command, 0);
end;
if FromClient and (pck=HStr('38 2F 00 70 00 72 00 65 00 72 00 0D 00 0A 00 00 00 00 00')) then begin //prev
begin
Procedure WinampCommand(Command:Integer);
//поиск окна Winamp’a
WinampHWND := findwindow('Winamp v1.x',nil);
//если поиск успешен,то посылаем сообщение
if (WinampHWND <> 0) then
SendMessage(WinampHWND, 440044, Command, 0);
end;
if FromClient and (pck=HStr('38 2F 00 70 00 6C 00 61 00 79 00 00 00 00 00')) then begin //play
begin
Procedure WinampCommand(Command:Integer);
//поиск окна Winamp’a
WinampHWND := findwindow('Winamp v1.x',nil);
//если поиск успешен,то посылаем сообщение
if (WinampHWND <> 0) then
SendMessage(WinampHWND, 440045, Command, 0);
end;
if FromClient and (pck=HStr('38 2F 00 70 00 61 00 75 00 73 00 65 00 00 00 00 00')) then begin //pause
begin
Procedure WinampCommand(Command:Integer);
//поиск окна Winamp’a
WinampHWND := findwindow('Winamp v1.x',nil);
//если поиск успешен,то посылаем сообщение
if (WinampHWND <> 0) then
SendMessage(WinampHWND, 440046, Command, 0);
end;
end.
Ну или же в ХТМЛ форме )
типо в чат /winamp и там сделать кнопочно ?;)
только я вот моих знаний недостаточно и неполучается у меня немного чтоб работало хотябы то что я сделал сейчас :confused:
alexteam
07.08.2009, 19:56
мда...
5 минут работы.. блин...
плагин
library WinAmp;
{$define RELEASE} // для совместимости с релизом пакетхака, при дебуге можно закоментировать
uses
FastMM4 in '..\fastmm\FastMM4.pas',
FastMM4Messages in '..\fastmm\FastMM4Messages.pas',
windows,
messages,
sysutils,
usharedstructs in '..\units\usharedstructs.pas';
var {version} {revision}
min_ver_a: array[0..3] of Byte = ( 3,5,12, 120 );
min_ver: Integer absolute min_ver_a; // минимальная поддерживаемая версия программы
ps: TPluginStruct; // структура передаваемая в плагин
function GetPluginInfo(const ver: Integer): PChar; stdcall;
begin
Result:='Плагин управления Winamp к программе l2ph'+sLineBreak+
'Для версий 3.5.12.120+';
end;
function SetStruct(const struct: PPluginStruct): Boolean; stdcall;
begin
ps := struct^;
Result:=True;
end;
Procedure WinampCommand(Command:Integer);
var WinampHWND:cardinal;
begin
WinampHWND := findwindow('Winamp v1.x',nil);
if (WinampHWND <> 0) then
SendMessage(WinampHWND, WM_COMMAND, Command, 0);
end;
// Вызывается при вызове скриптовой функции обьявленной в RefreshPrecompile
function OnCallMethod(const MethodName: String; // имя функции в верхнем регистре
var Params, // параметры функции
FuncResult: Variant // результат функции
): Boolean; stdcall; // если вернёт True то дальнейшая
// обработка функции прекратиться
begin
Result:=False; // передаём обработку функции программе
if lowercase(MethodName) = 'winampcommand' then
begin
WinampCommand(integer(Params[0]));
Result:=True; // запрещаем дальнейшую обработку функции в программе
end;
end;
// Вызывается после иницализации плагина, позволяет добавлять свои функции в редактор / скриптовый движек
Procedure OnRefreshPrecompile; stdcall;
begin
ps.UserFuncs.Add('procedure WinampCommand(Command:Integer)');
end;
// экспортируем используемые программой функции
exports
GetPluginInfo,
SetStruct,
OnCallMethod,
OnRefreshPrecompile;
begin
end.
скомпилированный выложил здесь (http://ifile.it/8h3kcuw)
закинуть в папку plugins и активировать его в пакетхаке.
после активизации плагина в скриптовом редакторе будет доступна процедура WinampCommand(Command:Integer);
где Command - команды отсюда (http://4.bp.blogspot.com/_Gz7hEugvKfA/R05-QymIkyI/AAAAAAAAAAw/NMr-o95vwFQ/s400/table1.GIF)
работоспособность проверена на aimp.
Ashtaret
07.08.2009, 20:02
Всёравно я нифига непонял :-D
alexteam
07.08.2009, 20:34
мда...
Добавлено через 13 минут
скрипт управляющий плагином...
procedure init;
begin
end;
procedure free;
begin
end;
procedure SendCommand(command:integer);
begin
WinampCommand(command);
pck := '';
end;
var
ChatCommand : string;
begin
if FromClient and (pck[1] = #$38) then
begin
ChatCommand := lowercase(reads(2));
if ChatCommand = '/next' then SendCommand(440048); //next
if ChatCommand = '/prev' then SendCommand(440044); //prev
if ChatCommand = '/play' then SendCommand(440045); //play
if ChatCommand = '/pause' then SendCommand(440046);//pause
end;
end.
Добрый день.
Версия пакетхака 3.4.1.83
Скачал winamp.dll, положил в папку с плагинами. Поставил на нем галочку на вкладке плагинов, создал скрипт, который выложил alexteam.
Ставлю галочку на скрипте, пишет:
"Access violation at address 01087740 in module 'winamp.dll'.
Read of address 00000000."
Details:
"Exception class: EAccessViolation
Exception message: Access violation at address 01087740 in module 'winamp.dll'. Read of address 00000000.
Exception address: 01087740"
Запущен AIMP v2.50 билд 248.
В чем может быть дело?
Заранее спасибо.
С уважением, LiS.
alexteam
07.08.2009, 22:58
Версия пакетхака 3.4.1.83
а в описание плагина глянуть ?
или в исходный код плагина выше ?
там четко указано "Для версий 3.5.12.120+"
alexteam, понял, спасибо.
Я же говорю: только начинаю со всем этим разбираться, не судите строго.
vBulletin® v3.6.11, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot