Привет!
Решил доработать свою программу, которая при помощи ардуино переключает музыку из AIMP!
Хочу отправлять следующие данные в ардуино: название трека который щас играет, время в системе, громкость системы, температура видеокарты. Выводить всё это буду через экранчик LCD1602
Но вот беда!
Я не знаю как получить название трека, которой играет в данный момент у AIMP
Как я понял через SendMessage это не прокатит (ибо в исходник нету сообщения что-бы получать названия трека)!
Однако где-то мельком видел тут на форуме есть компонент который копается в процессе, но вот опять не задача, данные компоненты отсутствуют на форуме
Может у какого завались эти компоненты (их там 3)?
Этот топик читают: Гость
Ответов: 140
Рейтинг: 2
|
|||
карма: 0 |
|
Ответов: 632
Рейтинг: 4
|
|||
карма: 0 |
|
Ответов: 4628
Рейтинг: 749
|
|||
Вероятно, если есть такие грандиозные планы на взаимодействие с AIMP, стоит задуматься о написании своего плагина к нему. Если непременно нужно в HiAsm - можно сделать какой-нибудь компонент, вытаскивающий нужный функционал из такого плагина.
|
|||
карма: 26 |
|
Ответов: 5227
Рейтинг: 587
|
|||
более короткий вариант это официальный SDK с оф. сайта и т.з в раздел куплю\продам (припоминаю что там всё на интерфейсах реализовано, так что проблем быть не должно.)
|
|||
карма: 4 |
|
Ответов: 497
Рейтинг: 16
|
|||
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 |
|
Ответов: 140
Рейтинг: 2
|
|||
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 |
|
Ответов: 497
Рейтинг: 16
|
|||
достаточно и
|
|||
карма: 1 |
|
Ответов: 140
Рейтинг: 2
|
|||
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 |
|
Ответов: 632
Рейтинг: 4
|
|||
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 |
|
Ответов: 497
Рейтинг: 16
|
|||
Vadimluk1 писал(а): Скорее всего, тема закрыта.ну напиши ИЦ для ТС и закрывай спокойно |
|||
карма: 1 |
|
Ответов: 140
Рейтинг: 2
|
|||
Ну...Эм
и Runtime error 200 at 000045A4 |
|||
карма: 0 |
|
Ответов: 497
Рейтинг: 16
|
|||
|
|||
карма: 1 |
|
Ответов: 497
Рейтинг: 16
|
|||
уже копнул глубоко а оказалось все было на поверхности
|
|||
карма: 1 |
|
Ответов: 140
Рейтинг: 2
|
|||
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 |
|
Ответов: 497
Рейтинг: 16
|
|||
dimosikILA писал(а): НуЧто ну? софт нужно обновлять а не пользоваться старым 2010 года выпуска. |
|||
карма: 1 |
|