DirectX Zugriffsmanager ?



  • Hi leute,

    ich hab da ein kleines problem. Ich will mir ein CarPC / Navi bauen. Wenn ich jetzt also mit meinem Radio ganz normal radiohöre und mir mein Navi (mein PC) sagt das ich mal wieder falsch bin, höre ich das nicht weil das Radio ja so laut ist.

    Ich mößte jetzt ein Programm schreiben das erkennt das mein Naviagtionsprogramm mir was mitteilen will (DirectSound ausgabe) und dann ganz schnell mein Radio (über eine externe Schaltung) stummschaltet.

    Nun endlich die Frage:
    Wie erkenne ich welches programm gerade etwas über DirectSound ausgeben will ?

    MfG Yaron



  • Ich schieb dich mal ins Spiele Forum, da gibts mehr DX freaks 😉



  • Dieser Thread wurde von Moderator/in CMatt aus dem Forum WinAPI in das Forum Spiele-/Grafikprogrammierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Wenn ich das richtig sehe, meinst du mit externer Schaltung, dass das Radio nicht auf dem Rechner läuft. In diesem Falle musst du doch gar nicht wissen welches Programm den Sound ausgibt. Es dürfte doch reichen das Radio stummzuschalten, sobald überhaupt irgendein Geräusch vom PC erzeugt wird. Dieses Problem könnte man dann sogar ohne ein Programm auf dem Rechner lösen, indem man eine einfache Schaltung baut.



  • Vielleicht will er nur bestimmte Programme laut stellen? Evtl. wäre es möglich eine eigene dsound.dll quasi als "Proxy"-dll zwischenzuschalten.

    Bye, TGGC \-/



  • Also laut stellen bestimmt net. Wenn er versucht seine 200Kilowatt Bassmachine mit der Stimme seines Navigationscomputers zu übertönen, könnte das leichte Schäden des Trommelfells nach sich ziehen. 🕶
    Eine Proxy DLL ist wohl die einzige Lösung, aber das ist leider noch zu hoch für mich.



  • DWORD dwStatus;
    //Alle Soundbuffer durchgehen
    for(DWORD dwBuffer = 0; dwBuffer < m_dwNumBuffers; dwBuffer++)
    {
        // fragt den #Status den Soundbuffers ab
        LPDIRECTSOUNDBUFFER* m_ppSoundBuffers[dwBuffer]->GetStatus(&dwStatus);
        //Wenn abgespielt wird ...
        if(!(dwStatus & DSBSTATUS_PLAYING))m_ppSoundBuffers[dwBuffer]->Stop();//Sound Stoppen
    }
    

    wie du jetzt rausfindest welche applikation gerade draufzugreifst weiß ich nicht genau muss mit nem system hook funtzen;-)



  • mosta schrieb:

    DWORD dwStatus;
    //Alle Soundbuffer durchgehen
    for(DWORD dwBuffer = 0; dwBuffer < m_dwNumBuffers; dwBuffer++)
    {
        // fragt den #Status den Soundbuffers ab
        LPDIRECTSOUNDBUFFER* m_ppSoundBuffers[dwBuffer]->GetStatus(&dwStatus);
        //Wenn abgespielt wird ...
        if(!(dwStatus & DSBSTATUS_PLAYING))m_ppSoundBuffers[dwBuffer]->Stop();//Sound Stoppen
    }
    

    *LOL* - Der Code ist soo kühl.

    Bye, TGGC \-/



  • mosta schrieb:

    DWORD dwStatus;
    //Alle Soundbuffer durchgehen
    for(DWORD dwBuffer = 0; dwBuffer < m_dwNumBuffers; dwBuffer++)
    {
        // fragt den #Status den Soundbuffers ab
        LPDIRECTSOUNDBUFFER* m_ppSoundBuffers[dwBuffer]->GetStatus(&dwStatus);
        //Wenn abgespielt wird ...
        if(!(dwStatus & DSBSTATUS_PLAYING))m_ppSoundBuffers[dwBuffer]->Stop();//Sound Stoppen
    }
    

    wie du jetzt rausfindest welche applikation gerade draufzugreifst weiß ich nicht genau muss mit nem system hook funtzen;-)

    Den willst Du assemblieren und das erzeugte Kompilat dann in die jeweilige Programm-EXE, die gerade läuft, injezieren, stimmt's?! 😃 👍


Anmelden zum Antworten