Вверх ↑
Этот топик читают: Гость
Ответов: 140
Рейтинг: 2
#1: 2017-08-21 14:36:46 ЛС | профиль | цитата
Привет!
Решил доработать свою программу, которая при помощи ардуино переключает музыку из AIMP!
Хочу отправлять следующие данные в ардуино: название трека который щас играет, время в системе, громкость системы, температура видеокарты. Выводить всё это буду через экранчик LCD1602
Но вот беда!
Я не знаю как получить название трека, которой играет в данный момент у AIMP
Как я понял через SendMessage это не прокатит (ибо в исходник нету сообщения что-бы получать названия трека)!
Однако где-то мельком видел тут на форуме есть компонент который копается в процессе, но вот опять не задача, данные компоненты отсутствуют на форуме
Может у какого завались эти компоненты (их там 3)?
карма: 0
私はアニメが大好き
0
Ответов: 632
Рейтинг: 4
#2: 2017-08-21 14:56:11 ЛС | профиль | цитата
ProcMemory(ARTMONEY).rar
Пробуй.
карма: 0

0
Ответов: 4628
Рейтинг: 749
#3: 2017-08-21 15:13:29 ЛС | профиль | цитата
Вероятно, если есть такие грандиозные планы на взаимодействие с AIMP, стоит задуматься о написании своего плагина к нему. Если непременно нужно в HiAsm - можно сделать какой-нибудь компонент, вытаскивающий нужный функционал из такого плагина.
карма: 26

0
Ответов: 5227
Рейтинг: 587
#4: 2017-08-21 15:43:28 ЛС | профиль | цитата
более короткий вариант это официальный SDK с оф. сайта и т.з в раздел куплю\продам (припоминаю что там всё на интерфейсах реализовано, так что проблем быть не должно.)
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 497
Рейтинг: 16
#5: 2017-08-21 16:13:41 ЛС | профиль | цитата
AIMP предоставляет доступ внешним приложениям к информации о проигрываемом файле посредством файла проецируемого в память.

Файл имеет имя AIMPRemoteAccessClass и фиксированный размер AIMPRemoteAccessMapFileSize.

Файл хранит содержимое структуры TAIMPRemoteFileInfo, после которой следует массив юникодных символов (UTF16), содержащий в себе информацию о композиции: название альбома, имя исполнителя, дата выпуска альбома, имя файла, жанр композиции, название композиции.

Длина каждой из составляющих указана в соответствующих свойствах структуры TAIMPRemoteFileInfo, например: <TAIMPRemoteFileInfo>.AlbumLength, <TAIMPRemoteFileInfo>.GenreLength и т.п.

--- Добавлено в 2017-08-21 16:15:29

2x

// Load info about playable file from shared memory-mapped file
AFile := OpenFileMapping(FILE_MAP_READ, True, AIMPRemoteAccessClass);
try
AInfo := MapViewOfFile(AFile, FILE_MAP_READ, 0, 0, AIMPRemoteAccessMapFileSize);
if AInfo <> nil then
try
if AInfo <> nil then
begin
ABuffer := Pointer(NativeUInt(AInfo) + SizeOf(TAIMPRemoteFileInfo));

// Extract data from the buffer
AAlbum := ExtractString(ABuffer, AInfo^.AlbumLength);
AArtist := ExtractString(ABuffer, AInfo^.ArtistLength);
ADate := ExtractString(ABuffer, AInfo^.DateLength);
AFileName := ExtractString(ABuffer, AInfo^.FileNameLength);
AGenre := ExtractString(ABuffer, AInfo^.GenreLength);
ATitle := ExtractString(ABuffer, AInfo^.TitleLength);

// Show the information
lbTitle.Caption := ATitle;
lbDetails.Caption := AAlbum + #13#10 + AArtist + #13#10 + ADate + #13#10 + AGenre + #13#10 +
Format('%d Hz, %d kbps, %d chans', [AInfo^.SampleRate, AInfo^.BitRate, AInfo^.Channels]) + #13#10 +
Format('%d seconds, %d bytes', [AInfo^.Duration div 1000, AInfo^.FileSize]);
end;
finally
UnmapViewOfFile(AInfo);
end;
finally
CloseHandle(AFile);
end;

--- Добавлено в 2017-08-21 16:17:20

dimosikILA писал(а):
Может у какого завались эти компоненты (их там 3)?

да недавно перезаливал на первой странице фалов

Редактировалось 2 раз(а), последний 2017-08-21 16:17:20
карма: 1
        ]  
0
Ответов: 140
Рейтинг: 2
#6: 2017-08-21 17:33:35 ЛС | профиль | цитата
RAWY_EX писал(а):

AIMP предоставляет доступ внешним приложениям к информации о проигрываемом файле посредством файла проецируемого в память.

Файл имеет имя AIMPRemoteAccessClass и фиксированный размер AIMPRemoteAccessMapFileSize.

Файл хранит содержимое структуры TAIMPRemoteFileInfo, после которой следует массив юникодных символов (UTF16), содержащий в себе информацию о композиции: название альбома, имя исполнителя, дата выпуска альбома, имя файла, жанр композиции, название композиции.

Длина каждой из составляющих указана в соответствующих свойствах структуры TAIMPRemoteFileInfo, например: <TAIMPRemoteFileInfo>.AlbumLength, <TAIMPRemoteFileInfo>.GenreLength и т.п.

--- Добавлено в 2017-08-21 16:15:29

2x

// Load info about playable file from shared memory-mapped file
AFile := OpenFileMapping(FILE_MAP_READ, True, AIMPRemoteAccessClass);
try
AInfo := MapViewOfFile(AFile, FILE_MAP_READ, 0, 0, AIMPRemoteAccessMapFileSize);
if AInfo <> nil then
try
if AInfo <> nil then
begin
ABuffer := Pointer(NativeUInt(AInfo) + SizeOf(TAIMPRemoteFileInfo));

// Extract data from the buffer
AAlbum := ExtractString(ABuffer, AInfo^.AlbumLength);
AArtist := ExtractString(ABuffer, AInfo^.ArtistLength);
ADate := ExtractString(ABuffer, AInfo^.DateLength);
AFileName := ExtractString(ABuffer, AInfo^.FileNameLength);
AGenre := ExtractString(ABuffer, AInfo^.GenreLength);
ATitle := ExtractString(ABuffer, AInfo^.TitleLength);

// Show the information
lbTitle.Caption := ATitle;
lbDetails.Caption := AAlbum + #13#10 + AArtist + #13#10 + ADate + #13#10 + AGenre + #13#10 +
Format('%d Hz, %d kbps, %d chans', [AInfo^.SampleRate, AInfo^.BitRate, AInfo^.Channels]) + #13#10 +
Format('%d seconds, %d bytes', [AInfo^.Duration div 1000, AInfo^.FileSize]);
end;
finally
UnmapViewOfFile(AInfo);
end;
finally
CloseHandle(AFile);
end;

--- Добавлено в 2017-08-21 16:17:20

dimosikILA писал(а):
Может у какого завались эти компоненты (их там 3)?

да недавно перезаливал на первой странице фалов

Редактировалось 2 раз(а), последний 2017-08-21 16:17:20

Ого
Я так полагаю нужен компонент
SharedStream?
карма: 0
私はアニメが大好き
0
Ответов: 497
Рейтинг: 16
#7: 2017-08-21 20:17:48 ЛС | профиль | цитата
достаточно и

Add(InlineCode,8900188,427,91)
{
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|0:|5: end;|0:|14:implementation|0:|4:end.|0:|
}

карма: 1
        ]  
0
Ответов: 140
Рейтинг: 2
#8: 2017-08-21 20:31:31 ЛС | профиль | цитата
RAWY_EX писал(а):
Add(InlineCode,8900188,427,91)
{
Code=#15:unit HiAsmUnit;09:interface|021:uses kol,Share,Debug;|04:type|28: THiAsmClass = class(TDebug)|10: private|09: public|05: end;|014:implementation|04:end.|0
}

|
к сожалению я не умею пользоваться IC
карма: 0
私はアニメが大好き
0
Ответов: 632
Рейтинг: 4
#9: 2017-08-22 14:30:25 ЛС | профиль | цитата
dimosikILA писал(а):
RAWY_EX писал(а):
Add(InlineCode,8900188,427,91)
{
Code=#15:unit HiAsmUnit;09:interface021:uses kol,Share,Debug;|04:type|28: THiAsmClass = class(TDebug)|10: private|09: public|05: end;|014:implementation|04:end.|0
}

|
к сожалению я не умею пользоваться IC

Скорее всего, тема закрыта.
карма: 0

0
Ответов: 497
Рейтинг: 16
#10: 2017-08-22 18:34:43 ЛС | профиль | цитата
Vadimluk1 писал(а):
Скорее всего, тема закрыта.

ну напиши ИЦ для ТС и закрывай спокойно
карма: 1
        ]  
0
Ответов: 140
Рейтинг: 2
#11: 2017-08-22 19:48:47 ЛС | профиль | цитата
Ну...Эм

Add(MainForm,2953706,98,105)
{
link(onCreate,13299772:doOpen,[])
}
Add(SharedStream,13299772,175,119)
{
FileName="AIMPRemoteAccessClass"
CoreName="AIMPRemoteAccessClass"
link(onOpen,92299:doAdd,[])
}
Add(Memo,92299,266,119)
{
Left=185
Top=50
Width=185
}

и
Runtime error 200 at 000045A4
карма: 0
私はアニメが大好き
0
Ответов: 497
Рейтинг: 16
#12: 2017-08-22 20:18:25 ЛС | профиль | цитата
FileName="AIMPRemoteAccessClass"
карма: 1
        ]  
0
Ответов: 497
Рейтинг: 16
#13: 2017-08-22 21:27:41 ЛС | профиль | цитата
уже копнул глубоко а оказалось все было на поверхности

Add(FindWindow,11750013,490,119)
{
ClassName="TAIMPMainForm"
SkipParam=1
link(onFind,6985662:doText,[(534,125)(534,174)(478,174)(478,223)])
}
Add(WinTools,332621,490,168)
{
link(Handle,11750013:Handle,[])
}
Add(Button,8496757,420,119)
{
Left=5
Top=10
link(onClick,11750013:doFind,[])
}
Add(Label,6985662,490,217)
{
Left=10
Top=35
link(Text,332621:CaptionText,[])
}

карма: 1
        ]  
0
Ответов: 140
Рейтинг: 2
#14: 2017-08-23 09:02:49 ЛС | профиль | цитата
RAWY_EX писал(а):

Add(FindWindow,11750013,490,119)
{
ClassName="TAIMPMainForm"
SkipParam=1
link(onFind,6985662:doText,[(534,125)(534,174)(478,174)(478,223)])
}
Add(WinTools,332621,490,168)
{
link(Handle,11750013:Handle,[])
}
Add(Button,8496757,420,119)
{
Left=5
Top=10
link(onClick,11750013:doFind,[])
}
Add(Label,6985662,490,217)
{
Left=10
Top=35
link(Text,332621:CaptionText,[])
}


Ну
карма: 0
私はアニメが大好き
0
Ответов: 497
Рейтинг: 16
#15: 2017-08-24 22:29:17 ЛС | профиль | цитата
dimosikILA писал(а):
Ну

Что ну? софт нужно обновлять а не пользоваться старым 2010 года выпуска.
карма: 1
        ]  
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)