![]() |
TAudioVolume Komponente incl. System Mixer
Projekt entfernt..
|
AW: TAudioVolume Komponente incl. System Mixer
Gratuliere zu dem Erfolg!
Windows 10/64 bit: AudioVolumeAdj_Eng.exe läßt sich starten, in Hauptansicht funktioniert alles bestens! Nebenansicht mit den einzelnen Apps, Rechts/Links verstellen funktioniert nicht und es gibt dort keine Tonausschläge. Ansonsten habt Ihr echt was cooles dahingezaubert! Improvement: Es gutes Goodie wäre wenn man Lautstärke ändert und Mausknopf loslässt, da wäre ein akkustischer Windows Pling Ton cool um zu erahnen wie laut es ist. |
AW: TAudioVolume Komponente incl. System Mixer
Zitat:
Die PeakAnzeige ja die macht noch Probleme da ich noch am Rätzeln bin wie ich die aktuell aktive Session damit verbinden muss. Die Controls werden ja in der Anwendung erstellt in der Komponente habe ich kein Array und kann dementsprechend nicht prüfen was gerade aktiv ist. Zitat:
Ich kann vom Tray Windows Mixer jedes einzelne Control in der Anwendung den regler verändern (Volumen) und umgekehrt. Vergleich siehe Pic. (Win7) Wenn du die Balance meinst (Bin am überlegen diese für die Session zu deaktivieren) Letztendlich wirken sie sich auf das gesamte System aus und betrifft alle Session gleichzeitig. Aber funktionieren tun sie trotzdem. Von und zum Windows Mixer EDIT: Zitat:
Eine Midi Datei öffnen und abspielen im Example nicht in fremden Player. Dann sollte eigentlich der PeakMeter der Anwendung reagieren. Tut er auch mit viel glück ;) aber meistens visualisiert ein anderer an deren stelle. gruss |
AW: TAudioVolume Komponente incl. System Mixer
Kanalsteuerung Rechts <- Mitte -> Links
Das funktioniert nicht in der Nebenansicht, also per App Setting. Kann bei mir an Windows 10 liegen wie so oft. ot Wie kompatibel ist Delphi 2009 zu 2010, gibt es da arge Unterschiede, weißt Du da was drüber? Da bin ich stark am überlegen mir das zusätzlich zu kaufen um bei kleinst-privat-Projekten kleinere Dateien zu erzeugen als wie es Delphi Tokyo macht. /ot edit das oben hat sich erledigt, habs gerade gelesen. |
AW: TAudioVolume Komponente incl. System Mixer
Zitat:
gruss |
AW: TAudioVolume Komponente incl. System Mixer
Ich habe jetzt die funktion geändert.
Höheren MAXSIZE addiert und den String nochmals gesplittet um die richtige länge der ID zu extrahieren.
Delphi-Quellcode:
Update kommt später muss noch einiges andere tun.. zum Beispiel den Namen kürzen wenn zu lang für die GroupBox.
procedure TAudioVolume.LoadIconPathfromResource(IconPath: PWideChar);
var Module: HModule; Filename: WideString; lpDest: array[0..32768] of WideChar; SplitID: TSplitStrArray; rSplitID: string; ID: DWORD; begin // Remove First @ Letter Filename := MidStr(IconPath, 2, Length(IconPath)); // Extract ID SplitID := Split(Filename, ','); rSplitID := SplitID[High(SplitID)]; rSplitID := MidStr(rSplitID, 2, Length(rSplitID)); ID := StrToInt(rSplitID); // Remove ID from Path Filename := LeftStr(Filename, Length(Filename) - 5); FillChar(lpDest, SizeOf(lpDest), 0); if ExpandEnvironmentStrings(PWideChar(Filename), lpDest, 32768) <> 0 then begin // Load the Lib Module := LoadLibraryExW(lpDest, 0, LOAD_LIBRARY_AS_DATAFILE); // check for error if Module <> INVALID_HANDLE_VALUE then begin Icon := TIcon.Create; Icon.Handle := LoadIcon(Module, MakeIntResource(ID)); if Module <> 0 then FreeLibrary(Module); end; end; end; Tool Tipps addieren um den Kompletten Namen anzuzeigen wenn gekürzt Lautsprecher Icon addieren usw.. gruss |
AW: TAudioVolume Komponente incl. System Mixer
Delphi-Quellcode:
sollte
if ExpandEnvironmentStrings(PWideChar(Filename), lpDest, 32768) <> 0 then
Delphi-Quellcode:
sein.
if ExpandEnvironmentStrings(PWideChar(Filename), lpDest, 32768-1) <> 0 then
Sorry & Gruß |
AW: TAudioVolume Komponente incl. System Mixer
Zitat:
gruss |
AW: TAudioVolume Komponente incl. System Mixer
Beim Entfernen der ID aus dem String
Delphi-Quellcode:
benutzt du immer noch eine feste Anzahl von Zeichen, wo eigentlich bis zur Position des Kommas kopiert werden sollte. Bzw. wenn du schon vorher
Filename := LeftStr(Filename, Length(Filename) - 5);
Delphi-Quellcode:
für den Icon-Index benutzt, könntest du doch an der Stelle
SplitID[High(SplitID)]
Delphi-Quellcode:
verwenden, das bereits alles vor dem Komma (=der gewünschte Pfad) enthält, oder?
SplitID[Low(SplitID)]
Grüße Dalai |
AW: TAudioVolume Komponente incl. System Mixer
Zitat:
Macht ja sonst keinen sinn. ;) gruss |
AW: TAudioVolume Komponente incl. System Mixer
Heute geändert..
Tip! Wer die inaktiven Session nicht sehen will kann diese Zeile in der Anwendung auf False setzen. Dann werden nur die Session angezeigt die Aktiv sind. Aber Achtung da ich noch keinen Thread zur Verfügung habe der die Session automatisch ändert wird dann fast nichts sehen es sei denn beim Start ist eine Sound Anwendung aktiv.
Delphi-Quellcode:
tmpAudioVolume.UseSessionInactive := true;
gruss |
AW: TAudioVolume Komponente incl. System Mixer
Aktuelle Testversion.
Anhang gelöscht Änderungen sind im neuen Quelltext enthalten. gruss |
AW: TAudioVolume Komponente incl. System Mixer
Zitat:
Beispiel: Mastervolume 10% Anwendung A 100% Anwendung B 50% nun Anwendung A pausieren = raus aus Ansicht nur weil kein Ton kommt nun Master auf 100% und Anwendung A wieder abspielen lassen = man ist hellwach :P |
AW: TAudioVolume Komponente incl. System Mixer
Zitat:
Denn wir haben festgestellt das der Windows Mixer einen Cache verwendet und alte Session festhält für ca. 3 Min. Das bedeutet es könnte Auswirkungen darauf haben wie oft und wie schnell eine Anwendung jedes Mal neu gestartet wird. In dem man NUR die Aktiven Session verwendet umgeht man das Cache Problem. Ich habe mir also etwas dabei gedacht es so zu implementieren. gruss |
AW: TAudioVolume Komponente incl. System Mixer
Vorschlag: Wie wäre es mit einem Knopf "ausblenden" in der AppView und im Master einen "Ausgeblendete einblenden" Knopf? :?:
Aber einen Timer der aktive dann auto-einblendet..... hmmmm..... es ist kompliziert, Ihr/Du werdet schon das Richtige machen, sobald ich D2009 hab lad ich mal Source rein um mit der Balanz-Regelung Dich zu unterstützen. |
AW: TAudioVolume Komponente incl. System Mixer
Zitat:
Zitat:
Mache einfach mal folgendes Starte TAudioVolume. Schließe es und überprüfe im Memo diese Zeile nach einem erneuten Start.
Delphi-Quellcode:
Display('*******SESSION REMOVED********' + #13#10)
Wenn du diese Zeile bei einem Control sehen kannst dann bedeutet dass das dieses Control gelöscht wird. Also das Control ist dann ein Überbleibsel aus dem Cache der vorherigen Session. Es hat keinen DisplayNamen und keinen IconPath. Wie auch denn es wird aus dem Cache geladen der für meine Anwendung ungültig ist. Deshalb wird er ausgefiltert. Wenn also die Anwendung zu schnell und in zu kurzer Zeit neu gestartet wird inkrementiert sich der Counter der Session und liefert ungültige Session zurück. Deshalb gibt es die Funktion der NUR aktiven "Session anzeigen" gruss |
AW: TAudioVolume Komponente incl. System Mixer
Ja ich habs nun Verstanden, das Anfangs war total falsch interpretiert von mir, wir haben aneinander vorbei gesprochen.
Von daher stimme ich Dir voll zu! Sorry dafür! Ps: Balanz funktioniert nur im Master nicht in AppView bei mir, sobald ich 2009 hab schau ich mal woran es bei mir liegt. |
AW: TAudioVolume Komponente incl. System Mixer
Zitat:
gruss |
AW: TAudioVolume Komponente incl. System Mixer
Neue Version oben..
Das Icon für den Lautsprecher habe ich noch nicht addiert keine Ahnung in welcher DLL, CPL oder was auch immer dieses sich befindet. Wenn dann möchte ich schon das Original einbinden vom installierten Soundtreiber. Vergleicht den alten und neuen Quelltext dann wisst ihr was ich gemacht habe ;) gruss |
AW: TAudioVolume Komponente incl. System Mixer
Zitat:
Grüße Dalai |
AW: TAudioVolume Komponente incl. System Mixer
Zitat:
Ich brauche das Original aus diesem Dialog. Es ist ein "STATIC" Window also ein Image. Frage mich wo der Windows Mixer das herholt. EDIT: bzw.. der Pfad ist schon korrekt also C:\Windows\system32\mmres.dll Nur ich kenne die ID nicht und weis auch nicht welche das ist wenn der User das Icon ändert. gruss |
AW: TAudioVolume Komponente incl. System Mixer
Zitat:
Grüße Dalai |
AW: TAudioVolume Komponente incl. System Mixer
Zitat:
So wird es auch im Mixer angezeigt. Ich weis nicht wie ich da dran komme zum Beispiel wenn der User das Symbol ändert. ;) Hab die Registry durchsucht nix zu finden. Wenn ich das Icon ändere dann wird es im Mixer auch genauso angezeigt. gruss |
AW: TAudioVolume Komponente incl. System Mixer
SndVol.exe im System32 Ordner, hat jedes normale Windows und enthält Mixer-Icons, Lautsprecher Icons gleich ab #1.
shell32.dll hat glaub ich dann das Windows-Versions-Spezifische, kann mich auch irren. |
AW: TAudioVolume Komponente incl. System Mixer
Zitat:
Gruss |
AW: TAudioVolume Komponente incl. System Mixer
Zitat:
In einer anderen Windows DLL ist das OS-Spezifische. |
AW: TAudioVolume Komponente incl. System Mixer
Zitat:
Alles andere macht keinen Sinn. Andernfalls lasse ich es leer und der Anwender der Komponente muss es selber machen. PS: Richtig oder gar nicht ;) gruss |
AW: TAudioVolume Komponente incl. System Mixer
Dann geb ich Dalei recht.
mmres.dll icon nummer 10-15 wird bei mir (Windows 10) je nach Skalierung verwendet. 10 ist die größte, 15 die kleinste, schau da mal rein auch wenn Du da was von STATIC bereits erwähnt hattest. Ps: Ich vermute mit Themes kann sich auch dieses Verhalten ändern. |
AW: TAudioVolume Komponente incl. System Mixer
Zitat:
Denke du hast mich überzeugt. Wenn ich SndVol.exe starte dann bekomme ich das Original Icon des Mixer. (Denn SndVol.exe ist ja der Mixer) Alles andere scheint mir im Nachhinein geändert worden zu sein. Also muss ich mich darauf konzentrieren und das Icon im Mixer das geändert wurde ignorieren. Irgendwo muss es grenzen geben. Danke! Baue das dann ein. gruss |
AW: TAudioVolume Komponente incl. System Mixer
Versuche mal Icon 10 aus mmres, kein Scherz.
Ps: Ich glaub ich weiß jetzt was du mit STATIC meintest, Du hast Dir den Mixer mit einem Spy betrachtet. Da ist STATIC für alles gut, Bilder, Icons, Videos, Text, vieles eben, vergleichbar mit einem Panel von Delphi. |
AW: TAudioVolume Komponente incl. System Mixer
Zitat:
Index 10 ist bei mir ein Kopfhörer. Der Index ist nicht fix.. Habe es jetzt so. gruss |
AW: TAudioVolume Komponente incl. System Mixer
Wie erkennst Du da eine Index Nummer? Da ist alles durcheinander oder vielleicht nach Größe sortiert.
Icon 10-15 sollte fix für das bessere Mixer Symbol sein. Es sieht ähnlich aus wie das direkt unter dem markierten (bei mir). edit Sag mir die Icon Dimension die Du Anzeigen kannst und ich gebe Dir passende Nummer. |
AW: TAudioVolume Komponente incl. System Mixer
Zitat:
Es gibt scheinbar kein Flag für SHGetFileInfoW das ich übergeben könnte für die höhere Qualität. Zitat:
gruss |
AW: TAudioVolume Komponente incl. System Mixer
mmres.dll @ icon #13 = 32x32x32, bis später!
|
AW: TAudioVolume Komponente incl. System Mixer
Zitat:
Das Icon 13 das du angibst ist das Microfon mit Ständer und hat die ID -3021. Zitat:
Ich lasse es jetzt so wie es ist. gruss |
AW: TAudioVolume Komponente incl. System Mixer
Ich bin doof bzw nicht ganz bei der Sache, Resourcename 13 meinte ich, hoffe ich, ach ich sag Bescheid wenn konzentrierter bin, tut mir leid!
Ps: das 32x32x32 bedeutet Dimension 32x32 mit 32bit Farbtiefe, falls das unverständlich war. Ich seh bei mir alles nach Name sortiert und dacht es wär die Ordinal-Nummer, mein Fehler! |
AW: TAudioVolume Komponente incl. System Mixer
Zitat:
Habe das Icon jetzt und gut ist ;) aber nur 256 Farben gruss |
AW: TAudioVolume Komponente incl. System Mixer
Für solche Fälle einfach den "Resource Hacker" verwenden, dann muss keiner rumrätseln.
![]() |
AW: TAudioVolume Komponente incl. System Mixer
Liste der Anhänge anzeigen (Anzahl: 1)
Siehe Bild:
|
AW: TAudioVolume Komponente incl. System Mixer
Zitat:
Du kannst aber sehn das man sich auf die DLL und die Ordinal Nummer nicht verlassen kann. Bei mir Win7. gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:52 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