none
Audio-Ausgabestream einer Anwendung abfangen RRS feed

  • Frage

  • Hallo, zusammen,

    ich weiß nicht, ob ich hier genau richtig bin aber ich versuch's mal:

     

    Ich möchte den Audio-Ausgabestream einer Anwendung (genau gesagt: des FSX) abfangen und umleiten, und zwar auch oder gerade dann, wenn die Anwendung keinen Focus hat.

    Hintergrund:

    Sobald der FSX den Focus verliert, verstummt er, obwohl er weiter arbeitet. Durch zahlreiche Zusatzprogrämmchen kann das immer mal erforderlich sein, dass man ihm den Focus wegnehmen muss, und dafür möchte ich ein kleines Tool schreiben, das den Audiostream abfängt und weiter ausgibt, um den Realitätsgrad der Simulation ein wenig zu steigern.

     

    Kann mir jemand einen Stups in die richtige Richtung geben?

    Vielen Dank schonmal für Antworten.

     

    Viele Grüße

    Jörg Pauly

    Dienstag, 26. Oktober 2010 16:53

Antworten

  • das findet ja im Code von FSX statt, da hat man demnach keine Chance, ranzukommen.Oder gibt es eine wie auch immer geartete Möglichkeit, den DirectSound-Buffer anzuzapfen?

    ich sehe dazu keine 'offizielle' Möglichkeit.
    Vielleicht gibt es irgendwelche Hacks wie API-hooking / code injection, aber aus .NET wäre dies (low-level) nicht sonderlich naheliegend, braucht zT C++ oder gar Assembler (know-how).

    Wie auch immer, man müsste sowieso erst FSX 'durchleuchten', welche APIs dieser überhaupt nutzt,
    evtl mit Tools wie nur zB
    http://www.rohitab.com/apimonitor

    des weiteren ist ab Vista/7 das ganze Soundsystem auf dem neuen WASAPI aufgebaut, wo es evtl wieder andere Bedingungen/ zusätzliche Möglichkeiten gibt  (wobei WASAPI unmanaged ist, nicht in .NET).

    Ich sehe da sehr wenig Bezug spezifisch zu .NET (oder C#/VB),
    daher wäre folgendes (englische!) Forum wohl passender:
    http://social.msdn.microsoft.com/Forums/en-US/windowspro-audiodevelopment

    Mittwoch, 27. Oktober 2010 10:10

Alle Antworten

  • Hallo Jörg

    solches findet direkt zwischen App und Betriebssystem statt, es ist da nicht immer/einfach möglich alles durch/an eine Dritt-Applikation zu kontrollieren/umzuleiten. Falls FSX selber den Audiostream effektiv unterbricht, besteht uU sehr wenig Hoffnung.
      (und mit C#/.NET entfallen etliche Low-Level-Zugriffe, oft schon wg Performance)

    Eine Möglichkeit, falls es etwa bloss eine reduzierte 'Lautstärke' sein sollte,
    sehe ich möglicherweise (ungeprüft) noch im Falle ab Vista/7
    "Per-application volume control"
    http://msdn.microsoft.com/en-us/library/bb945061.aspx
    http://www.codeproject.com/KB/vista/CoreAudio.aspx

    wobei davon fast nichts im .NET Framework eingebaut ist, => Interop nach Art des codeproject-Artikel.

    Dienstag, 26. Oktober 2010 17:26
  • solches findet direkt zwischen App und Betriebssystem statt

    im Falle von DirectSound könnte FSX etwa folgende Einstellung nicht aktiviert haben:

    DSBCAPS_GLOBALFOCUS
    http://msdn.microsoft.com/en-us/library/microsoft.directx_sdk.reference.dsbcaps.aspx
     "... an application using DirectSound can continue to play its buffers if the user switches focus to another application..."

    Dienstag, 26. Oktober 2010 18:15
  • Hallo, Thomas,

     

    das findet ja im Code von FSX statt, da hat man demnach keine Chance, ranzukommen.

    Oder gibt es eine wie auch immer geartete Möglichkeit, den DirectSound-Buffer anzuzapfen?

     

    Viele Grüße

    Jörg

    Mittwoch, 27. Oktober 2010 09:06
  • das findet ja im Code von FSX statt, da hat man demnach keine Chance, ranzukommen.Oder gibt es eine wie auch immer geartete Möglichkeit, den DirectSound-Buffer anzuzapfen?

    ich sehe dazu keine 'offizielle' Möglichkeit.
    Vielleicht gibt es irgendwelche Hacks wie API-hooking / code injection, aber aus .NET wäre dies (low-level) nicht sonderlich naheliegend, braucht zT C++ oder gar Assembler (know-how).

    Wie auch immer, man müsste sowieso erst FSX 'durchleuchten', welche APIs dieser überhaupt nutzt,
    evtl mit Tools wie nur zB
    http://www.rohitab.com/apimonitor

    des weiteren ist ab Vista/7 das ganze Soundsystem auf dem neuen WASAPI aufgebaut, wo es evtl wieder andere Bedingungen/ zusätzliche Möglichkeiten gibt  (wobei WASAPI unmanaged ist, nicht in .NET).

    Ich sehe da sehr wenig Bezug spezifisch zu .NET (oder C#/VB),
    daher wäre folgendes (englische!) Forum wohl passender:
    http://social.msdn.microsoft.com/Forums/en-US/windowspro-audiodevelopment

    Mittwoch, 27. Oktober 2010 10:10
  • Danke, dort werde ich mal nachfragen, sollte ich mit Deinen Hinweisen nicht weiterkommen.

     

    Viele Grüße

    Jörg

     


    Viele Grüße Jörg Pauly
    Mittwoch, 27. Oktober 2010 16:15