Delphi-PRAXiS
Seite 19 von 21   « Erste     9171819 2021      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   TAudioVolume Komponente incl. System Mixer (https://www.delphipraxis.net/196270-taudiovolume-komponente-incl-system-mixer.html)

KodeZwerg 25. Jun 2018 21:21

AW: TAudioVolume Komponente incl. System Mixer
 
Schon ohne
Delphi-Quellcode:
const
probiert?

EWeiss 25. Jun 2018 21:23

AW: TAudioVolume Komponente incl. System Mixer
 
Zitat:

Zitat von KodeZwerg (Beitrag 1405789)
Schon ohne
Delphi-Quellcode:
const
probiert?

Es ist so nicht in der API definiert. Siehe C++ Beispiel.
HRESULT STDMETHODCALLTYPE OnPropertyValueChanged(LPCWSTR pwstrDeviceId, const PROPERTYKEY key)

gruss

KodeZwerg 25. Jun 2018 21:27

AW: TAudioVolume Komponente incl. System Mixer
 
Ich habe mir hier ein paar Beispiele angeschaut, vielleicht hilft es Dir, ist Api.

Nach "TPROPERTYKEY" auf der Seite suchen.

EWeiss 25. Jun 2018 21:31

AW: TAudioVolume Komponente incl. System Mixer
 
Zitat:

Zitat von KodeZwerg (Beitrag 1405792)
Ich habe mir hier ein paar Beispiele angeschaut, vielleicht hilft es Dir, ist Api.

Nach "TPROPERTYKEY" auf der Seite suchen.

Theoretisch ;)
Aber es geht nicht um TPROPERTYKEY sondern darum warum Key nicht verfügbar ist.

Nochmal das Problem.
Wenn ich im Windows Dialog unter Eigenschaften das Icon des MasterDevice ändere dann wird das Event OnPropertyValueChanged aufgerufen.
Nur wenn ich über den Key nichts vergleichen kann welchen sinn hat dieses Event.
Darum geht es mir. Ich möchte dann mein Icon ändern.
Warum wird mir die VALUE die geändert wurde nicht weitergereicht? :stupid:

gruss

KodeZwerg 25. Jun 2018 21:57

AW: TAudioVolume Komponente incl. System Mixer
 
Sorry da kann ich nicht helfen, ich finde nur Beispiele wo es als var/out definiert wird was nichts mit Deinem Problem zu tun hat. :cry:

EWeiss 25. Jun 2018 22:03

AW: TAudioVolume Komponente incl. System Mixer
 
Zitat:

Zitat von KodeZwerg (Beitrag 1405795)
ich finde nur Beispiele wo es als var/out definiert wird

Aber wie gesagt ich kann nicht einfach die API ändern ;)

Ok werde mal was anderes versuchen.
Es scheint so das ich den Key auf diese weise nicht erreichen kann.

Mal sehn ob ich ihn über IPropertyStore und GetAt in Erfahrung bringe.

Edit:
Nope.. Key ist leer.

gruss

EWeiss 26. Jun 2018 02:00

AW: TAudioVolume Komponente incl. System Mixer
 
Zitat:

Zitat von KodeZwerg (Beitrag 1405789)
Schon ohne
Delphi-Quellcode:
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

KodeZwerg 26. Jun 2018 06:54

AW: TAudioVolume Komponente incl. System Mixer
 
LOL Na dann hat es sich ja gelohnt diese Seite zu füllen :lol:

EWeiss 5. Jul 2018 10:36

AW: TAudioVolume Komponente incl. System Mixer
 
Für die Technik versierten..

Hier der Trick wie es mit den Icons Funktioniert.
Ich habe beim debuggen herausgefunden das es einen nicht dokumentierten PropertyKey dafür gibt.
Und andere..
PKEY_DEVICE_DESCRIPTION, PKEY_DEVICE_INTERFACE_FRIENDLY_NAME...

Hier mal der für die Icons..
In der Funktion
Delphi-Quellcode:
function TAudioVolume.OnPropertyValueChanged(DeviceId: PWideChar; Key: PROPERTYKEY): HResult;


Diesen Key habe ich mir jetzt angelegt.
Delphi-Quellcode:
   PKEY_DEVICE_ICON: TPropertyKey = (
                fmtid: (D1:$259ABFFC; D2:$50A7; D3:$47CE;
                D4:($AF, $08, $68, $C9, $A7, $D7, $33, $66));
                pid: 12);
Und hier hole ich mir dann den IconPfad..

Delphi-Quellcode:
function GetDeviceInfo(Device: IMMDevice): TDeviceInfo;
var
  pvIconPath: PROPVARIANT;
  IconBuf: array [0 .. 127] of WideChar;
  IconPath: PWideChar;
begin

//....
    // IconPath
    PropVariantInit(pvIconPath);
    HR := propertyStore.GetValue(PKEY_DEVICE_ICON, pvIconPath);
    if HR <> S_OK then
      raise Exception.Create('Unable to retrieve IconPath for a device !');

    if pvIconPath.vt = VT_LPWSTR then
    begin
      IconPath := @IconBuf[0];
      StrCopy(IconPath, pvIconPath.pwszVal);

      Result.IconPath := IconPath;
    end;
end;
Vielleicht kann es ja mal jemand gebrauchen.

gruss

EWeiss 5. Jul 2018 10:49

AW: TAudioVolume Komponente incl. System Mixer
 
Mixer Source addiert..
Erster Beitrag..

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:36 Uhr.
Seite 19 von 21   « Erste     9171819 2021      

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 by Thomas Breitkreuz