Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Auf Lautstärkeveränderung (z.B. im Windows-Lautstärkemixer) reagieren? (https://www.delphipraxis.net/198033-auf-lautstaerkeveraenderung-z-b-im-windows-lautstaerkemixer-reagieren.html)

uups 28. Sep 2018 09:16

Auf Lautstärkeveränderung (z.B. im Windows-Lautstärkemixer) reagieren?
 
Hallo!

Mit folgendem Code kann ich die Sound-Lautstärke für den eigenen Prozess regulieren.

Delphi-Quellcode:
procedure SetVolume(const volL, volR: Word);
var
  hWO: HWAVEOUT;
  waveF: TWAVEFORMATEX;
  vol: DWORD;
begin
  FillChar(waveF, SizeOf(waveF), 0);
  waveOutOpen(@hWO, WAVE_MAPPER, @waveF, 0, 0, 0);
  vol:= volL + volR shl 16;
  waveOutSetVolume(hWO, vol);
  waveOutClose(hWO);
end;
Dabei erscheint im Windows-Lautstärkenmixer sogar ein separater Regler für den eigenen Prozess. Wird die Lautstärke im Windows-Mixer verändert, möchte ich diese Veränderung natürlich in meinem Programm mitbekommen und entrpechend darauf reagieren. Ich habe versucht, die Messages MM_MIXM_LINE_CHANGE und MM_MIXM_CONTROL_CHANGE zu abonieren, doch die werden irgendwie nicht ausgelöst.

Delphi-Quellcode:
public
  { Public-Deklarationen }
  procedure WMUser1(var msg: TMessage); message MM_MIXM_LINE_CHANGE;
  procedure WMUser2(var msg: TMessage); message MM_MIXM_CONTROL_CHANGE;
end;
Was mache ich falsch. Wie kann ich auf die Lautstärkeveränderungen reagieren, die von fremden Prozessen ausgelöst werden?

KodeZwerg 28. Sep 2018 09:35

AW: Auf Lautstärkeveränderung (z.B. im Windows-Lautstärkemixer) reagieren?
 
Schau mal in EWeiss seine taudiovolume-komponente-incl-system-mixer rein. Sollte Dir alles bieten was Dein Herz begehrt.

EWeiss 28. Sep 2018 09:54

AW: Auf Lautstärkeveränderung (z.B. im Windows-Lautstärkemixer) reagieren?
 
Zitat:

doch die werden irgendwie nicht ausgelöst.
Können sie auch nicht wenn dein System Win7 und up ist.

gruss

uups 28. Sep 2018 10:30

AW: Auf Lautstärkeveränderung (z.B. im Windows-Lautstärkemixer) reagieren?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von KodeZwerg (Beitrag 1414375)
Schau mal in EWeiss seine taudiovolume-komponente-incl-system-mixer rein. Sollte Dir alles bieten was Dein Herz begehrt.

Die Komponente von EWeiss mag ohne Zweifel toll sein, so viel ich davon hier gelesen habe. Bei mir geht es damit aber voll daneben. Sobald ich den Lautstärkenregler von TAudioVolume betätige, fängt den Regler an mit der sehr hohen Frequenz hin und her zu flimmern, die Anwendung hängt sich auf und die CPU-Auslastung schießt auf 99%. Schlimmer noch: auch der Windows-Mixer flimmert mit und das hört nicht mal auf, wenn die auslösende Anwendung über den TaskManager geschlossen wird. Das Betriebsystem wird damit bis komplett unbrauchbar, es bleibt nur der Neustart.

P.S. Habe ein Video von dem ganzen aufgenommen, werde es gleich hier gepackt hochladen.

EWeiss 28. Sep 2018 10:38

AW: Auf Lautstärkeveränderung (z.B. im Windows-Lautstärkemixer) reagieren?
 
Zitat:

Die Komponente von EWeiss mag ohne Zweifel toll sein, so viel ich davon hier gelesen habe. Bei mir geht es damit aber voll daneben.
Nimm die einfache variante ohne Session..

gruss

uups 28. Sep 2018 10:43

AW: Auf Lautstärkeveränderung (z.B. im Windows-Lautstärkemixer) reagieren?
 
Zitat:

Zitat von EWeiss (Beitrag 1414387)
Zitat:

Die Komponente von EWeiss mag ohne Zweifel toll sein, so viel ich davon hier gelesen habe. Bei mir geht es damit aber voll daneben.
Nimm die einfache variante ohne Session..

Ok, ich probier es, vielen Dank! Könntest Du eventuell noch kurz erklären, was in diesem Fall die "Session" ist?

EWeiss 28. Sep 2018 10:44

AW: Auf Lautstärkeveränderung (z.B. im Windows-Lautstärkemixer) reagieren?
 
Zitat:

Zitat von uups (Beitrag 1414388)
Zitat:

Zitat von EWeiss (Beitrag 1414387)
Zitat:

Die Komponente von EWeiss mag ohne Zweifel toll sein, so viel ich davon hier gelesen habe. Bei mir geht es damit aber voll daneben.
Nimm die einfache variante ohne Session..

Ok, ich probier es, vielen Dank! Könntest Du eventuell noch kurz erklären, was in diesem Fall die "Session" ist?

Das sind die Anwendungen die im Mixer sichtbar sind.
Was du benötigst ist die Lautstärke deiner eigenen Anwendung bzw.. die Hauptlautstärke.

Habe im Archiv auf der Seite TAudioVolume.zip nichts mehr gemacht da keine Rückmeldungen kamen.
Kann sein das da noch diverse Probleme mit den Session sind.
Diese habe ich nur im Mixer64 gefixt (was aber keine Komponente ist).

gruss

uups 28. Sep 2018 11:07

AW: Auf Lautstärkeveränderung (z.B. im Windows-Lautstärkemixer) reagieren?
 
Zitat:

Zitat von EWeiss (Beitrag 1414389)
Das sind die Anwendungen die im Mixer sichtbar sind.
Was du benötigst ist die Lautstärke deiner eigenen Anwendung bzw.. die Hauptlautstärke...

Genau. Und somit zurück zu meiner Frage: wie fange ich die Mixer-Lautstärkeveränderungen für die eigene Session ab (abgesehen von einem Timer mit WaveOutGetVolume() drin)?

EWeiss 28. Sep 2018 11:10

AW: Auf Lautstärkeveränderung (z.B. im Windows-Lautstärkemixer) reagieren?
 
Zitat:

Zitat von uups (Beitrag 1414399)
Zitat:

Zitat von EWeiss (Beitrag 1414389)
Das sind die Anwendungen die im Mixer sichtbar sind.
Was du benötigst ist die Lautstärke deiner eigenen Anwendung bzw.. die Hauptlautstärke...

Genau. Und somit zurück zu meiner Frage: wie fange ich die Mixer-Lautstärkeveränderungen für die eigene Session ab (abgesehen von einem Timer mit WaveOutGetVolume() drin)?

Siehe das Sample..
Das beantwortet doch deine Frage..

Hmm...
Änderst du die Hauptlautstärke im Mixer dann ändert sich auch der Regler der Hauptlautstärke in dem Demo!
Änderst du die Anwendungslautstärke im Mixer dann ändert sich auch der Regler deiner Anwendung in dem Demo!

gruss

uups 28. Sep 2018 17:46

AW: Auf Lautstärkeveränderung (z.B. im Windows-Lautstärkemixer) reagieren?
 
@EWeiss
Vielen Dank, jetzt geht's!

Könntest Du eventuell noch verraten, weshalb in Deiner Demo beim Abspielen alle drei Balken gelegentlich grün werden und in meinem Programm bei gleicher Soundtatei nur die "M" aktiv ist?


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:48 Uhr.
Seite 1 von 2  1 2      

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