AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Lautstärke andere Programm veringern, ohne die des eigenen
Thema durchsuchen
Ansicht
Themen-Optionen

Lautstärke andere Programm veringern, ohne die des eigenen

Ein Thema von Alallart · begonnen am 21. Apr 2018 · letzter Beitrag vom 5. Mai 2018
Antwort Antwort
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.690 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Lautstärke andere Programm veringern, ohne die des eigenen

  Alt 23. Apr 2018, 11:17
Die Antwort: "Windows Mixer Api" ist so allgemein
Ich hatte mich ja bereits verbessert und Entschuldige mich hiermit nochmals für eine falsch erste Antwort, das war wirklich nur für alles oder nichts Methodik.
Ich suche mit den mir gegebenen Stichworten
Dann hättest Du auch was gefunden, MfPack zum Beispiel auf Sourceforge. Da hast du eine komplette Delphi Komponente die genau das machen kann was Du willst. Fremde Prozesse stumm schalten.
Der Tipp war sehr allgemein
In meinem dritten Post gab ich Dir Links zu exakt den zwei Api's die Du brauchst, EWeiss sagte Dir wonach Du suchen solltest, da kam sogar ein Link mit einem kompletten Source Code!
und wie so oft gibt es da nicht einen fertigen Befehl
Delphi-Quellcode:
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);
ein Befehl der Dir eine Schnittstelle "SessionControl" anbietet, gefunden auf Stackoverflow.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Alallart

Registriert seit: 8. Dez 2015
154 Beiträge
 
#2

AW: Lautstärke andere Programm veringern, ohne die des eigenen

  Alt 24. Apr 2018, 16:49
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.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Lautstärke andere Programm veringern, ohne die des eigenen

  Alt 24. Apr 2018, 16:57
Zitat:
Der Methode von jaenicke beschreibt aber eine Funktion die die anderen Programme allgemein leiser macht, während das eigene Programm normal laut bleibt.
Das wäre doch die Lösung
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
  Mit Zitat antworten Zitat
OLDIE1950

Registriert seit: 2. Jan 2018
22 Beiträge
 
#4

AW: Lautstärke andere Programm veringern, ohne die des eigenen

  Alt 24. Apr 2018, 18:47

Wenn man in die Systemsteuerung 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 Telefon klingelt. Um das geht es mir.
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;
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.369 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Lautstärke andere Programm veringern, ohne die des eigenen

  Alt 24. Apr 2018, 19:23
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.690 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Lautstärke andere Programm veringern, ohne die des eigenen

  Alt 24. Apr 2018, 19:38
Ich hoffe nicht, dass du mich falsch verstanden hast
Alles ist gut. Es gibt viele Wege die ans Ziel führen. Ich wünsche Dir viel Erfolg, bei welchen Weg auch immer Du abzweigst! Hauptsache das Endprodukt stimmt, ob nun über eine Kommunikation-Api oder ob du Dritt-Prozesse leiser/Stumm schaltest, vom Resultat beides das gleiche für mich
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: Lautstärke andere Programm veringern, ohne die des eigenen

  Alt 29. Apr 2018, 03:08
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:
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.
Es ist aber nicht genau das was du gerne möchtest.

gruss

Geändert von EWeiss (11. Jul 2019 um 16:00 Uhr)
  Mit Zitat antworten Zitat
Alallart

Registriert seit: 8. Dez 2015
154 Beiträge
 
#8

AW: Lautstärke andere Programm veringern, ohne die des eigenen

  Alt 29. Apr 2018, 15:56
Ja, dein Programm macht es so wie ich es mir vorgestellt habe. Es senkt anscheinend allgemein die Lautstärke, bis auf das ausgesuchte Programm.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.690 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Lautstärke andere Programm veringern, ohne die des eigenen

  Alt 5. Mai 2018, 12:03
getting-peak-meters-and-volume-settings-for-all-apps-and-audio-devices-on-the-system, da wird einem in CPP gezeigt wie es geht.
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, nircmd ist ein kleines Konsolen Programm was auch wie hier how-to-control-the-volume-level-of-specific-application-from-command-line-on-windows beschrieben eingesetzt werden kann um Zugriff auf Lautstärke eines bestimmten Prozesses zu erlangen.
Angehängte Dateien
Dateityp: 7z meters.7z (4,8 KB, 8x aufgerufen)
Gruß vom KodeZwerg

Geändert von KodeZwerg ( 5. Mai 2018 um 12:27 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz