HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 08.03.2010, 00:02
d_x
Постоянный
Регистрация: 25.03.2008
Сообщений: 670
С нами: 9541766

Репутация: 2407


По умолчанию

Цитата:
возможно ли узнать какой трек и группа проигрывается в аимп в данный момент?
если да, то как?
Да, вот простой пример родного плагина для AIMP на ассемблере (masm32):

aimp_plugin.asm:
Код:
      .486                      ; create 32 bit code
      .model flat, stdcall      ; 32 bit memory model
      option casemap :none      ; case sensitive

      include \masm32\include\windows.inc
      include \masm32\include\masm32.inc
      include \masm32\include\user32.inc
      include \masm32\include\kernel32.inc
      include \masm32\macros\macros.asm
      include \masm32\macros\windows.asm

      includelib \masm32\lib\masm32.lib
      includelib \masm32\lib\user32.lib
      includelib \masm32\lib\kernel32.lib


AIMP_CallBack_Set=12+4  ;(dwCBType: DWORD; Proc: Pointer; User: DWORD): Boolean; stdcall;
AIMP_CallBack_Remove=12+8 ;(dwCBType: DWORD; Proc: Pointer): Boolean; stdcall;
AIMP_Status_Get=12+12       ;(StatusType: DWORD): DWORD; stdcall;

AIMP_PLS_Info=12+32 ;(Index: Integer; out PLSInfo: TPLSInfo)
AIMP_PLS_Count=12+36 ;word

AIMP_GetCurrentTrack=12+60 ; dd ? ;(AInfo: PAIMP2FileInfo): Boolean; stdcall;

AIMP_STS_STREAM_TYPE=39
AIMP_STS_Player=4
AIMP_PLAYER_STATE=11


TAIMP2FileInfo STRUCT
    cbSizeOf dd ?
    nActive dd ?
    nBitRate dd ?
    nChannels dd ?
    nDuration dd ?
    nFileSize dd ?
    dd ?
    nRating dd ?
    nSampleRate dd ?
    nTrackID dd ?
    nAlbumLen dd ?
    nArtistLen dd ?
    nDateLen dd ?
    nFileNameLen dd ?
    nGenreLen dd ?
    nTitleLen dd ?
    sAlbum dd ?
    sArtist dd ?
    sDate dd ?
    sFileName dd ?
    sGenre dd ?
    sTitle dd ?
TAIMP2FileInfo ENDS

TPLSInfo STRUCT
    PLSName dd ?
    FileCount dd ?
    PLSDuration dd ?
    PLSSize dq ?
    PlaylistID dd ?
TPLSInfo ENDS

GetSongName PROTO :DWORD,:DWORD,:DWORD,:DWORD
init2 proto :dword
config proto :dword, :dword
PlayFile proto :dword, :dword

TAIMPAddonHeader STRUCT
   Version dd ?
   DllInstance dd ?
   GetPlgName dd ?
   GetAuthor dd ?
   Init dd ?
   Config dd ?
   Free dd ?
TAIMPAddonHeader ENDS


.data
plugin2 TAIMPAddonHeader {0,0,offset get_plugin_name,offset get_author,offset init2,offset config,offset quit}

plugin_name db "Test",0
plugin_author db "(c) dx",0

.data?
hInstance dd ?
FileInfo TAIMP2FileInfo {}
AIMP dd ?
PlayList TPLSInfo <>

.code

LibMain proc instance:DWORD,reason:DWORD,reserved:DWORD
  .if reason == DLL_PROCESS_ATTACH

    invoke GetModuleHandle,NULL
    mov hInstance,eax

    mov eax,1
  .endif
ret
LibMain ENDP



AIMP_QueryAddon PROC
mov eax,offset plugin2
ret
AIMP_QueryAddon ENDP


get_plugin_name PROC
mov eax,offset plugin_name
ret
get_plugin_name ENDP

get_author PROC
mov eax,offset plugin_author
ret
get_author ENDP



config PROC Handle :DWORD, Win: DWORD
  xor eax,eax
ret
config ENDP



init2 PROC, xAIMP :DWORD
  m2m AIMP,xAIMP

  push 0
  push offset PlayFile
  push AIMP_PLAYER_STATE

  mov eax,AIMP
  push eax
  mov eax,[eax]
  call dword ptr [eax+AIMP_CallBack_Set]

  xor eax,eax
ret
init2 ENDP



PlayFile PROC User :DWORD, cType :DWORD
LOCAL stitle [512] :BYTE
LOCAL sartist [512] :BYTE

  .if cType!=AIMP_PLAYER_STATE
    jmp ext
  .endif

  push AIMP_STS_Player
  mov eax,AIMP
  push eax
  mov eax,[eax]
  call dword ptr [eax+AIMP_Status_Get]

  cmp eax,1
  jne ext

  push AIMP_STS_STREAM_TYPE
  mov eax,AIMP
  push eax
  mov eax,[eax]
  call dword ptr [eax+AIMP_Status_Get]

  test eax,eax
  jne ext

  invoke RtlZeroMemory,addr sartist,512
  invoke RtlZeroMemory,addr stitle,512
  invoke RtlZeroMemory,offset FileInfo,88

  mov FileInfo.cbSizeOf,88

  lea eax,stitle
  mov FileInfo.sTitle,eax
  mov FileInfo.nTitleLen,126

  lea eax,sartist
  mov FileInfo.sArtist,eax
  mov FileInfo.nArtistLen,512

  push offset FileInfo
  mov eax,AIMP
  push eax
  mov eax,[eax]

  call dword ptr [eax+AIMP_GetCurrentTrack]

  invoke MessageBoxW,0,addr stitle,addr sartist,0

ext:
xor eax,eax
ret
PlayFile ENDP

quit PROC
  xor eax,eax
ret
quit ENDP

end LibMain
aimp_plugin.def:
Код:
LIBRARY aimp_plugin
EXPORTS AIMP_QueryAddon
А вообще, в aimp sdk есть простые примеры на дельфи.
 
Ответить с цитированием

  #2  
Старый 08.03.2010, 00:09
phpdreamer
Постоянный
Регистрация: 26.07.2009
Сообщений: 321
С нами: 8838619

Репутация: 123
По умолчанию

к сожелению, ни асма ни делфи не знаю
мне бы бинарник подошел
 
Ответить с цитированием

  #3  
Старый 08.03.2010, 00:16
d_x
Постоянный
Регистрация: 25.03.2008
Сообщений: 670
С нами: 9541766

Репутация: 2407


По умолчанию

http://rapidshare.com/files/360332312/aimp_plugin.dll.html
Не знаю, что конкретно должен делать бинарник, и вообще, нужен он в виде плагина или внешнего exe, этот просто выдает при воспроизведении месаджбокс. Положить его в директорию PlugIns и перезапустить AIMP, либо через меню Плагины загрузить его.
 
Ответить с цитированием

  #4  
Старый 08.03.2010, 00:27
phpdreamer
Постоянный
Регистрация: 26.07.2009
Сообщений: 321
С нами: 8838619

Репутация: 123
По умолчанию

желательно записывать название трека и группы в файл....
плагин или exe - без разницы
 
Ответить с цитированием

  #5  
Старый 08.03.2010, 02:05
d_x
Постоянный
Регистрация: 25.03.2008
Сообщений: 670
С нами: 9541766

Репутация: 2407


По умолчанию

http://slil.ru/28758400
Вот плагин, который создает в папке с плеером файл SONGS.txt и туда пишет названия и исполнителей всех прослушанных песен (в unicode).
 
Ответить с цитированием

  #6  
Старый 08.03.2010, 02:09
M.W.N.N.
Участник форума
Регистрация: 05.01.2009
Сообщений: 191
С нами: 9129884

Репутация: 240
По умолчанию

Ну так что, ктонить знает ответ на мой вопрос?
 
Ответить с цитированием

  #7  
Старый 08.03.2010, 02:15
d_x
Постоянный
Регистрация: 25.03.2008
Сообщений: 670
С нами: 9541766

Репутация: 2407


По умолчанию

Дали же ссылку на msdn на функцию для установки хуков. Вот еще пример на чистом си:
http://msdn.microsoft.com/en-us/library/ms644960%28VS.85%29.aspx
 
Ответить с цитированием

  #8  
Старый 08.03.2010, 02:19
M.W.N.N.
Участник форума
Регистрация: 05.01.2009
Сообщений: 191
С нами: 9129884

Репутация: 240
По умолчанию

Я про 4971 пост.
За хуки спс большое.
 
Ответить с цитированием

  #9  
Старый 08.03.2010, 14:08
t4Nk
Познающий
Регистрация: 23.09.2007
Сообщений: 75
С нами: 9806336

Репутация: 86
По умолчанию

M.W.N.N., чего то я не вижу чтобы в клиенте принимались данные. sHELLO только объявляется и нигде не используется. конечно мусор будет выводится.
 
Ответить с цитированием

  #10  
Старый 08.03.2010, 22:09
M.W.N.N.
Участник форума
Регистрация: 05.01.2009
Сообщений: 191
С нами: 9129884

Репутация: 240
По умолчанию

Код:
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <unistd.h>
#include <stdio.h>

int main() {
struct sockaddr_in server, client={AF_INET,INADDR_ANY,INADDR_ANY};
memset(&server,0,sizeof(server));
server.sin_family=AF_INET;
server.sin_port=htons(1212);
server.sin_addr.s_addr=inet_addr("127.0.0.1");

int sock;
sock=socket(PF_INET,SOCK_DGRAM,0);
bind(sock,(sockaddr *) & client,sizeof(client));

char buf[81];
memset(buf,0,81);
strcpy(buf,"request");
sendto(sock,&buf,strlen(buf),0,(sockaddr *)&server,sizeof(server));
memset(buf,0,81);
recvfrom(sock,buf,80,0,NULL,0);
puts(buf);

return 0;
}
Код:
laptop:~/C/tc$ gcc -o udpcl udpcl.c
udpcl.c: In function ‘main’:
udpcl.c:18: error: ‘sockaddr’ undeclared (first use in this function)
udpcl.c:18: error: (Each undeclared identifier is reported only once
udpcl.c:18: error: for each function it appears in.)
udpcl.c:18: error: expected expression before ‘)’ token
udpcl.c:18: error: too few arguments to function ‘bind’
udpcl.c:23: error: expected expression before ‘)’ token
udpcl.c:23: error: too few arguments to function ‘sendto’
Подскажите пож-та в чем проблема?
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Часто задаваемые вопросы по MySQL Серый PHP 5 28.12.2006 18:26
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Уязвимости CMS / форумов 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.