AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte TAudioVolume Komponente incl. System Mixer
Thema durchsuchen
Ansicht
Themen-Optionen

TAudioVolume Komponente incl. System Mixer

Ein Thema von EWeiss · begonnen am 6. Mai 2018 · letzter Beitrag vom 24. Jul 2019
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

AW: TAudioVolume Komponente incl. System Mixer

  Alt 31. Mai 2018, 23:08
Ja klar, Deins zählt hoch, meins zählt runter
War murks, Intern zählt der bestimmt auch hoch, habs vergessen zu überprüfen und bin still.
Was soll's hier das Update.. ist wieder was kälter so das man Arbeiten kann.

Nur WHEEL für die ListBox..
Für die Lautstärke wäre zu viel des guten. sorry das lasse ich so wie es ist.
Dreh dich aber jetzt nicht wund nur um das Teil zum Absturz zu bringen.. dürfte schwer fallen.

Ich habe jetzt schon vor lauter drehen Hornhaut an den Fingern
Das Teil will einfach nicht abstürzen.

Ach ja kein Timer nothing! LOL

Delphi-Quellcode:
      WM_MOUSEWHEEL:
        begin
          if ID = ID_LIST_DEVICE then
          begin
            If wP > 0 Then
              ID := _UP
            else
              ID := _DOWN;

            gSprBackground.GD_SetObjectTextEx(ID_LIST_TEXT, PWideChar(lstDeviceMsg(ID)), true);

            Lbl := TLabel.Create(nil);
            Lbl.AutoSize := True;

            // zentrierten Eintrag suchen
            for IntI := 0 to (lstDevice.ListCount(lstDevice.Handle) - 1) do
            begin
              Lbl.Caption := AudioVolume1.AudioDeviceInfo(IntI).DeviceName;
              if (Lbl.Width > MaxLenDeviceName) then
              begin
                Lbl.Caption := Lbl.Caption + '...';
                while Lbl.Width > MaxLenDeviceName do
                  Lbl.Caption := Copy(Lbl.Caption, 1, Length(Lbl.Caption) - Lbl.Font.Size) + '...';
              end;
              // Zentrierter Eintrag von Max 5 Sichtbaren Einträgen gefunden
              if lstDevice.ListGetText(lstDevice.Handle, 3) = Lbl.Caption then
              // Raus hier
                break;
            end;

            // Hint zuweisen
            MainClass.Hint := AudioVolume1.AudioDeviceInfo(IntI).Description;
            gSprMaster.GD_SetObjectImageLabel(ID_TVOLUME, MainClass.Hint);
            // Icon erstellen
            IconHandle := AudioVolume1.LoadMasterIcon(PWideChar(AudioVolume1.AudioDeviceInfo(IntI).IconPath));
            MainClass.CreateMasterIcon(56, 9, IconHandle);

            AudioVolume1.SelectAudioDevice(IntI);

            // Device Namen zuweisen
            MainClass.DeviceName := AudioVolume1.AudioDeviceInfo(IntI).Description;
            gSprMaster.GD_SetObjectTextEx(ID_DEVICENAME, PWideChar(MainClass.DeviceName), true);
            // Slider position aktualisieren
            percent := round(AudioVolume1.GetMasterVolume * 100);
            SetThumbVert(ID_THUMB_VERT, gSprMaster, ID_THUMB_VERT, ID_SLIDER_VERT, percent);
            // Label freigeben
            Lbl.free;
          end;
        end;
gruss

Geändert von EWeiss ( 5. Jun 2018 um 09:25 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

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

AW: TAudioVolume Komponente incl. System Mixer

  Alt 1. Jun 2018, 00:59
mini Feedback: hab nur Rad getestest nichts anderes und es ist wie Du schreibt UNBESIEGBAR, ich kann ja mal nen Rad-Emulator mit 1ms Takt basteln um Schmerzgrenze festzustellen aber im Otto-Normal-Verbraucher Sinne = Diese Funktionalität ist jetzt Marktreif, hast Du toll hinbekommen!!

edit
Eine Sache viel mir auf, vielleicht geht das ja auch noch, wenn sich Deine Funktion mit Rad auf ein Interface geeinigt und ausgewählt hat, kannst Du da bitte auch das klick Geräusch abspielen lassen? Und vielleicht während man Scrollt das Geräusch auf 20%? Mann hab ich um diese Stunde merkwürdige Gedanken. Ich sollte mich mal ausruhen also nimm das nicht Ernst wenns nicht reinpasst
Gruß vom KodeZwerg

Geändert von KodeZwerg ( 1. Jun 2018 um 01:05 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: TAudioVolume Komponente incl. System Mixer

  Alt 1. Jun 2018, 10:52
Zitat:
hast Du toll hinbekommen
Es geht
Habe mich hier der VCL bedienen müssen aber was soll's.
Um die Texte abzuschneiden verwende ich einen dynamisch erstellten TLabel, solange wie das in der Anwendung geschieht ist es mir egal.

Habe es nochmal mit @Sir Rufos TextShortener.pas.. Funktion versucht macht aber keinen sinn weil das Ergebnis am ende das gleiche ist.

Mit dem TLabel habe ich einen 5 Zeilen Code und gut ist.

gruss
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: TAudioVolume Komponente incl. System Mixer

  Alt 5. Jun 2018, 09:27
Neues..
Audio Session werden nun entfernt wenn die dazu gehörige Anwendung beendet wird.
Anhang entfernt Download im ersten Beitrag.

gruss

Geändert von EWeiss ( 5. Jul 2018 um 09:40 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: TAudioVolume Komponente incl. System Mixer

  Alt 25. Jun 2018, 20:06
Habe da noch ein Problem laut MS wenn sich das Event OnPropertyValueChanged ändert
kann ich mir theoretisch die GUIDE über key.fmtid ausgeben lassen.

Zitat:
HRESULT STDMETHODCALLTYPE OnPropertyValueChanged(
LPCWSTR pwstrDeviceId,
const PROPERTYKEY key)
{
printf(" -->Changed device property "
"{%8.8x-%4.4x-%4.4x-%2.2x%2.2x-%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x}#%d\n",
key.fmtid.Data1, key.fmtid.Data2, key.fmtid.Data3,
key.fmtid.Data4[0], key.fmtid.Data4[1],
key.fmtid.Data4[2], key.fmtid.Data4[3],
key.fmtid.Data4[4], key.fmtid.Data4[5],
key.fmtid.Data4[6], key.fmtid.Data4[7],
key.pid);
return S_OK;
}
};


Ich mache es einfach so in Delphi..
OutPutDebugString(PWideChar(GUIDToString(key.fmtid))); Zum testen wird nachher mit realer GUID verglichen und darauf hin eine Aktion ausgeführt.

Das Problem ist nur Key ist unter Delphi nicht verfügbar obwohl das Event aufgerufen wird.
Original..
Delphi-Quellcode:
function OnPropertyValueChanged(DeviceId: LPCWSTR; const Key: PROPERTYKEY): HResult; stdcall;
function TAudioVolume.OnPropertyValueChanged(DeviceId: LPCWSTR; const Key: PROPERTYKEY): HResult;
funktioniert nicht Key ist nicht verfügbar.

geändert..
Delphi-Quellcode:
function OnPropertyValueChanged(DeviceId: LPCWSTR; const Key: TPROPERTYKEY): HResult; stdcall;
function TAudioVolume.OnPropertyValueChanged(DeviceId: LPCWSTR; const Key: TPROPERTYKEY): HResult;
das selbe Key ist nicht verfügbar.

verstehe ich nicht. out reicht ihn normalerweise weiter.. nur so ist die originale Funktion nicht definiert.
Auf was soll ich reagieren wenn der Key nicht verfügbar ist.

Wenn hier gar nichts zu vergleichen ist und ich den Key selbst zuweisen muss welchen sinn hat diese Funktion?

gruss

Geändert von EWeiss (25. Jun 2018 um 20:14 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

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

AW: TAudioVolume Komponente incl. System Mixer

  Alt 25. Jun 2018, 20:21
Schon ohne const probiert?
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: TAudioVolume Komponente incl. System Mixer

  Alt 25. Jun 2018, 20:23
Schon ohne const probiert?
Es ist so nicht in der API definiert. Siehe C++ Beispiel.
HRESULT STDMETHODCALLTYPE OnPropertyValueChanged(LPCWSTR pwstrDeviceId, const PROPERTYKEY key)

gruss

Geändert von EWeiss (25. Jun 2018 um 20:32 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

AW: TAudioVolume Komponente incl. System Mixer

  Alt 26. Jun 2018, 01:00
Schon ohne const probiert?
Keine Ahnung warum hier in C++ und Delphi ein Unterschied gemacht wird aber ja du hast recht ohne "const" funktioniert es.
Wäre schön wenn mir jemand sagen könnte warum das so ist.

Danke..

gruss
  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 14:20 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