Собственно задачу я решил, но вопрос остался. При использовании мультимедийного таймера (TimeSetEvent), загрузка файла не происходит
Код HTML:
procedure OnTimer(uTimerID, uMsg, dwUser, dw1, dw2 : Integer); stdcall;
begin
...
Sound.LoadFromFile(Name);
...
end;
...
Sound := TSound.Create;
Timer := TimeSetEvent(500, 1, @OnTimer, 0, TIME_PERIODIC);
через обычный таймер всё нормально
Код HTML:
procedure OnTimer(Wnd : HWND; Msg, idEvent, dwTime : Longint); stdcall;
begin
...
Sound.LoadFromFile(Name);
...
end;
...
Sound := TSound.Create;
SetTimer(Wnd, 1, 500, @OnTimer);
здесь происходит загрузка файла
Код HTML:
procedure TSound.LoadFromFile(Name : String);
var
WideName : array[0..MAX_PATH - 1] of WideChar;
begin
if Name = '' then
Exit;
MultiByteToWideChar(CP_ACP, 0, PChar(Name), -1, WideName, MAX_PATH);
if FAILED(pLoader.LoadObjectFromFile(CLSID_DirectMusicSegment, IID_IDirectMusicSegment8, WideName, pSegment)) then
Exit;
...
Так и не понял причину такого поведения.