Einzelnen Beitrag anzeigen

TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#115

AW: TAudioVolume Komponente incl. System Mixer

  Alt 17. Mai 2018, 12:44
Dir ist schon klar das du dein Sample nicht mit meiner Anwendung bzw. TAudioVolume vergleichen kannst oder?
Du tust doch praktisch nichts .. bis auf ein paar Zeilen im Memo Auszugeben und das alles in der gleichen Anwendung bzw. Thread!
Natürlich kann es vergleichen. Man kann es nur nicht gleichsetzen! Man beachte den Unterschied.

Immer wenn ich mit einem Programmierproblem nicht weiterkomme, versuche ich das Problem zu isolieren.
Das geht am Besten in einen Konsolenprogramm oder einer fast nackten Formularanwendung.
Nur so sieht man letztendlich den oder die Unterschied(e) bzw. Fehler zum eigentlichen Projekt und kann es beheben.

Diese Vorgehensweise will ich dir auch ans Herz legen, weil du dich oft schnell verzettelst.
Diese überlangen und sehr komplizierten Non-VCL-Quelltexte, mit denen du normalerweise hantierst, tragen natürlich dazu bei.

...verwende einen externen zusätzlichen Thread dann sehen wir ob es immer noch funktioniert was ich bezweifeln möchte.
Geht problemlos in einen anderen Thread-Context:

Delphi-Quellcode:
procedure TAudioThread.Execute;
begin
  inherited;
  CoInitializeEx(nil, COINIT_MULTITHREADED);
  try
    FAudioSessionNotification := TAudioSessionNotification.Create;
    FAudioComponent := TAudio.Create(FAudioSessionNotification, PrintText);
    try
      FAudioComponent.InitAudioComponents;
      while not Terminated do
      begin
        Sleep(1);
      end;
    finally
      FAudioComponent.Free;
    end;
  finally
    CoUninitialize;
  end;
end;

procedure TAudioThread.PrintText(const AText: string);
begin
  OutputDebugString(PChar(AText));
end;

function TAudioSessionNotification.OnSessionCreated(const NewSession: IAudioSessionControl): HRESULT;
var
  SessionControl2: IAudioSessionControl2;
  pRetVal: PWideChar;
begin
  if Supports(NewSession, IAudioSessionControl2, SessionControl2) then
  begin
    SessionControl2.GetSessionIdentifier(pRetVal);
    OutputDebugString(pRetVal);
    CoTaskMemFree(pRetVal);
  end;

  Result := S_OK;
end;
Siehe auch Anhang.
Angehängte Dateien
Dateityp: pas AudioVolume.Frm.pas (613 Bytes, 9x aufgerufen)
  Mit Zitat antworten Zitat