AIMP предоставляет доступ внешним приложениям к информации о проигрываемом файле посредством файла проецируемого в память.
Файл имеет имя AIMPRemoteAccessClass и фиксированный размер AIMPRemoteAccessMapFileSize.
Файл хранит содержимое структуры TAIMPRemoteFileInfo, после которой следует массив юникодных символов (UTF16), содержащий в себе информацию о композиции: название альбома, имя исполнителя, дата выпуска альбома, имя файла, жанр композиции, название композиции.
Длина каждой из составляющих указана в соответствующих свойствах структуры TAIMPRemoteFileInfo, например: <TAIMPRemoteFileInfo>.AlbumLength, <TAIMPRemoteFileInfo>.GenreLength и т.п.
Файл имеет имя 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)?да недавно перезаливал на первой странице фалов