![]() |
Lautstärke andere Programm veringern, ohne die des eigenen
Ich habe letztens eine Programm gesehen, das die Lautstärke aller anderen Programme zuerst reduziert und erst dann die eigene Musik abspielt. So was würde ich auch gerne in einem meiner Programme nutzen, da es einen Alarm raus gibt, und der gelegentlich untergeht wenn andere Musik an ist. Hat jemand einen Ansatz?
|
AW: Lautstärke andere Programm veringern, ohne die des eigenen
Google nach Windows Mixer Api und Du wirst fündig werden.
|
AW: Lautstärke andere Programm veringern, ohne die des eigenen
Zitat:
Wenn er nach Core Audio sucht! Dann wird er vielleicht fündig. gruss |
AW: Lautstärke andere Programm veringern, ohne die des eigenen
Ab Windows 7 dürfte das mit der
![]() Beispiel resp. Ansatz in C# als Idee: ![]() |
AW: Lautstärke andere Programm veringern, ohne die des eigenen
Moin, also der erster Treffer bei
![]() ![]() Ist das was Microsoft da schreibt ungültig? |
AW: Lautstärke andere Programm veringern, ohne die des eigenen
Warum sollte es ungültig sein? Diese API passt nur nicht zum Problem.
Aber wo ist dort eine Referenz auf andere Prozesse? Wie kannst Du mit den von Dir verlinkten Funktionen einen andren Prozess wie z.B. iTunes runterregeln, wie es der Fragesteller möchte? |
AW: Lautstärke andere Programm veringern, ohne die des eigenen
Mir war so als ob man über
![]() edit 1 ![]() ![]() Damit sollte es besser klappen, ok, ihr habt alle recht. edit 2 Ich habe mich da gerade mal etwas durchgewühlt und das sollte exakt das sein was der TE nutzen könnte um ans Ziel zu gelangen. (Die edit 1 Links meine ich) |
AW: Lautstärke andere Programm veringern, ohne die des eigenen
Zitat:
Kein Programmierer der kein XP mehr unterstützt wird sich dieser veralteten API annehmen. Ok bin raus, vom Thread Ersteller kommt nix mehr. :) gruss |
AW: Lautstärke andere Programm veringern, ohne die des eigenen
Zitat:
Ich suche mit den mir gegebenen Stichworten momentan nach Lösungen und bin noch etwa drei Wochen von der Lösung entfernt. Der Tipp war sehr allgemein und zwingt mich mich mit einem Thema auseinander zu setzen, das ich danach wohl nie wieder benötigen werden. Aber danach werde ich wohl wissen wie man den Ton alle anderen Programme reduzieren kann, nur nicht des eigenen. Also wie gesagt, ich bin aktuell mich da am durchlesen, und wie so oft gibt es da nicht einen fertigen Befehl. Also wäre ich für jede weitere Hilfe dankbar. |
AW: Lautstärke andere Programm veringern, ohne die des eigenen
Na ja irgendwie bist du nicht gerade in Freundlichkeit gebadet (Kommt irgendwie immer etwas Angriffslustig herüber).
Desto trotz hier ist meine TVolumeAudio Komponente. Diese arbeitet über die Core Audio Api Gesamt Volumen und die Lautstärke der eigenen Anwendung kann geändert werden. Mit etwas frischem Mut denke ich könnte es dir gelingen auch die Lautstärke anderer Programm zu reduzieren. Die Basis hättest du dann aber schon mal. Um die eigene Lautstärke zu reduzieren lade ein Midi File damit und regele dann das Anwendungsvolumen. Du kannst jetzt dazu eine Art Mixer hinzugefügten also alle laufende Prozesse enumerieren. Wenn bei einen dieser Prozesse das Volumen > 0 dann den Mixer (Anwendungslautstärke Regler) hinzufügen. Oder halt auf deine weise. gruss |
AW: Lautstärke andere Programm veringern, ohne die des eigenen
Danke für den Link!
Mit WAV-Files geht es, mit MP3-Files friert es ein. Nachtrag: Den MediaPlayer habe ich jetzt durch den VLC-Player ersetzt. ![]() |
AW: Lautstärke andere Programm veringern, ohne die des eigenen
Zitat:
Zitat:
Zitat:
Zitat:
Delphi-Quellcode:
ein Befehl der Dir eine Schnittstelle "SessionControl" anbietet, gefunden auf Stackoverflow.
uses
MMDeviceApi, ActiveX, AudioPolicy; var DeviceEnumerator: IMMDeviceEnumerator; DefaultDevice: IMMDevice; SessionManager: IAudioSessionManager; SessionControl: IAudioSessionControl; begin if Succeeded(CoCreateInstance(CLSID_MMDeviceEnumerator, nil, CLSCTX_INPROC_SERVER, IID_IMMDeviceEnumerator, DeviceEnumerator)) and Succeeded(DeviceEnumerator.GetDefaultAudioEndpoint(eRender, eMultimedia, DefaultDevice)) and Succeeded(DefaultDevice.Activate(IID_IAudioSessionManager, CLSCTX_INPROC_SERVER, nil, IUnknown(SessionManager))) and Succeeded(SessionManager.GetAudioSessionControl(nil, 0, SessionControl)) then SessionControl.SetDisplayName('Mein Programm', nil); |
AW: Lautstärke andere Programm veringern, ohne die des eigenen
Zitat:
Zitat:
Das ist ja auch kein abspielgerät sondern eine Volumen Komponente. gruss |
AW: Lautstärke andere Programm veringern, ohne die des eigenen
Warum bist Du eigentlich immer so aggressiv???
|
AW: Lautstärke andere Programm veringern, ohne die des eigenen
Zitat:
Ich habe kein Problem zu lesen. Du prangerst Fehler an ohne vorher zu lesen was die Vorrausetzungen für das Programm sind. gruss |
AW: Lautstärke andere Programm veringern, ohne die des eigenen
Der Suchbegriff zu dem Thema lautet Ducking. Hier findet sich in der API z.B. etwas dazu:
![]() Man kann unter Windows einstellen wie darauf reagiert werden soll, wenn eine Kommunikation erkannt wird. Zum Beispiel alles andere um 80% herunterregeln. Das heißt man müsste nur noch den Alarm als Kommunikation flaggen und schon sollte Windows das je nach Einstellung selbst machen. Wie das geht weiß ich allerdings nicht aus dem Hut. |
AW: Lautstärke andere Programm veringern, ohne die des eigenen
Zitat:
![]() gruss |
AW: Lautstärke andere Programm veringern, ohne die des eigenen
Zitat:
|
AW: Lautstärke andere Programm veringern, ohne die des eigenen
Zuerst vielen Dank an alle.
@KodeZwerg Ich hoffe nicht, dass du mich falsch verstanden hast, natürlich bin ich auch für die "allgemeine Antwort" dankbar. Aber das alles ist keine fertige Funktion, sondern viel Stoff, wenn man es nicht mit Copy&Paste nutzen will. Also mein Hinweis, dass ich noch drei Wochen vor der Lösung stehe war nicht böse gemeint, sondern sollte heißen, dass ich mich da einarbeiten muss. Wie auch immer, inzwischen weiß schon mal wie man allgemein die Lautstärke regelt. Ist schon etwas. @jaenicke, EWeiss Wenn man in der Systemsteuerung von Windows 7 geht, und da auf Sound, gibt es im Register Kommunikation die Möglichkeit andere Programme in der Lautstärke um 50 oder 80% zu reduzieren, wenn zB das Telefin klingelt. Um das geht es mir. Ich dachte zuerst daran die Gesamt-Lautstärke um 50% zu reduzieren und/oder meinen Programm dann lauter zu machen, aber wenn das Programm abstürzt, bleibt die Einstellung so. Der Methode von jaenicke beschreibt aber eine Funktion die die anderen Programme allgemein leiser macht, während das eigene Programm normal laut bleibt. |
AW: Lautstärke andere Programm veringern, ohne die des eigenen
Zitat:
Musst du halt noch ein bisschen basteln :) PS: Allerdings musst du die aktuelle Lautstärke der Anwendungen natürlich erfassen und beibehalten um sie später zurück zu setzen. Ist zumindest besser falls deine Anwendung abstürzt. gruss |
AW: Lautstärke andere Programm veringern, ohne die des eigenen
Zitat:
Delphi-Quellcode:
// uses WinApi.ShellApi,
procedure RunControlPanelApplet(AppletFileName: string); begin ShellExecute(0, 'open', PChar('rundll32.exe'), PChar('shell32.dll,Control_RunDLL '+AppletFileName), nil, SW_SHOWNORMAL); end; procedure TForm1.ButtonClick(Sender: TObject); begin RunControlPanelApplet('mmsys.cpl,,3'); end; |
AW: Lautstärke andere Programm veringern, ohne die des eigenen
Ihm geht es aber darum wie er selbst den Alarm als Kommunikationsstream ausgibt um in diese Kategorie zu kommen, nicht darum die Einstellungen dafür aufzurufen.
|
AW: Lautstärke andere Programm veringern, ohne die des eigenen
Zitat:
|
AW: Lautstärke andere Programm veringern, ohne die des eigenen
Damit geht's aber nicht mit der Methode von @jaenicke aber egal..
Gib irgendeinen Prozessnamen in die Edit ein der Musik wieder gibt und teste es. Du kannst Mute verwenden oder aber das Volumen der anderen Anwendungen selbst verringern. Ich denke mal nicht das irgendeine Anwendung dadurch abstürzt. Ist ja am ende nichts anderes als wenn du es von Hand im Tray Mixer selber regelst. Sind wohl noch ein paar kleine dinge drin die ich noch berücksichtigen muss. (Nur ein Spiel Projekt) Aber von der Basis her stimmt's schon. Win7! (Ich glaube für Win10 wird ein nicht dokumentiertes Interface verwendet daher kann ich nicht garantieren das es da funktioniert) Zitat:
gruss |
AW: Lautstärke andere Programm veringern, ohne die des eigenen
Ja, dein Programm macht es so wie ich es mir vorgestellt habe. Es senkt anscheinend allgemein die Lautstärke, bis auf das ausgesuchte Programm.
|
AW: Lautstärke andere Programm veringern, ohne die des eigenen
Liste der Anhänge anzeigen (Anzahl: 1)
![]() Im Anhang ist der komplette CPP Sourcecode. Vielleicht bekommt den ja jemand unter Delphi zum laufen dann wäre alles geklärt. edit Und wenn alle Stricke reißen, ![]() ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz