Thema: Delphi Das Handle ist ungültig

Einzelnen Beitrag anzeigen

HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#54

AW: Das Handle ist ungültig

  Alt 4. Mai 2018, 11:14
Hmm..

(Gerade erst hiermit beschäftigt )

Mal den Source vom Konsolenprogramm getestet und mir den Log in einem Memo ausgeben lassen.
Erweitert um die weiteren Infos aus IAudioSessionControl2/IAudioSessionControl.
Dann mal nen Timer angesetzt.

Ergebnis
(Getestet auf Win7 64bit mit D6)
- Windows scheint die AudioSessions zu cachen
- Nach 180 Sekunden (3 Minuten) werden die aus dem Cache entfernt.
- Eine aktive/existierende Session hat den State 1 (IAudioSessionControl.GetState())
- Wird die Applikation beendet, erhält diese umgehend den State 0, verbleibt aber in der Liste.
- Die PID der AudioSession gehört also zu keinem laufenden Process...

Resultat:
Es genügt nicht durch den Enum durchzulaufen und sich die PID über IAudioSessionControl2 zu holen, sondern es muss der State geprüft werden, da nur noch die PIDs gültig sind, welche einen State 1 haben.

Der Mixer wird nur die Apps anzeigen, welche State 1 haben (und zusätzlich den System).

Keine App läuft:
Zitat:
SessionCount: 1
---------------------------------------------------
SessionIdentifier: {0.0.0.00000000}.{8aa1d6e2-aca1-4ae5-a835-6c0dbea6b990}|#%b{A9EF3FD9-4240-455E-A4D5-F2B3301887B2}
InstanceIdentifier: {0.0.0.00000000}.{8aa1d6e2-aca1-4ae5-a835-6c0dbea6b990}|#%b{A9EF3FD9-4240-455E-A4D5-F2B3301887B2}|1%b#
ProcessId: 0
DisplayName: @%SystemRoot%\System32\AudioSrv.Dll,-202
IconPath: @%SystemRoot%\System32\AudioSrv.Dll,-203
IsSystemSoundsSession: 0
State: 0
---------------------------------------------------
VidPlayer gestartet:
Zitat:
SessionCount: 2
---------------------------------------------------
SessionIdentifier: {0.0.0.00000000}.{8aa1d6e2-aca1-4ae5-a835-6c0dbea6b990}|\Device\HarddiskVolume2\Tools\playwi n.exe%b{00000000-0000-0000-0000-000000000000}
InstanceIdentifier: {0.0.0.00000000}.{8aa1d6e2-aca1-4ae5-a835-6c0dbea6b990}|\Device\HarddiskVolume2\Tools\playwi n.exe%b{00000000-0000-0000-0000-000000000000}|1%b4048
ProcessId: 4048
DisplayName:
IconPath:
IsSystemSoundsSession: 1
State: 1
---------------------------------------------------
SessionIdentifier: {0.0.0.00000000}.{8aa1d6e2-aca1-4ae5-a835-6c0dbea6b990}|#%b{A9EF3FD9-4240-455E-A4D5-F2B3301887B2}
InstanceIdentifier: {0.0.0.00000000}.{8aa1d6e2-aca1-4ae5-a835-6c0dbea6b990}|#%b{A9EF3FD9-4240-455E-A4D5-F2B3301887B2}|1%b#
ProcessId: 0
DisplayName: @%SystemRoot%\System32\AudioSrv.Dll,-202
IconPath: @%SystemRoot%\System32\AudioSrv.Dll,-203
IsSystemSoundsSession: 0
State: 0
---------------------------------------------------

VidPlayer beendet:
Zitat:
SessionCount: 2
---------------------------------------------------
SessionIdentifier: {0.0.0.00000000}.{8aa1d6e2-aca1-4ae5-a835-6c0dbea6b990}|\Device\HarddiskVolume2\Tools\playwi n.exe%b{00000000-0000-0000-0000-000000000000}
InstanceIdentifier: {0.0.0.00000000}.{8aa1d6e2-aca1-4ae5-a835-6c0dbea6b990}|\Device\HarddiskVolume2\Tools\playwi n.exe%b{00000000-0000-0000-0000-000000000000}|1%b4048
ProcessId: 4048
DisplayName:
IconPath:
IsSystemSoundsSession: 1
State: 0
---------------------------------------------------
SessionIdentifier: {0.0.0.00000000}.{8aa1d6e2-aca1-4ae5-a835-6c0dbea6b990}|#%b{A9EF3FD9-4240-455E-A4D5-F2B3301887B2}
InstanceIdentifier: {0.0.0.00000000}.{8aa1d6e2-aca1-4ae5-a835-6c0dbea6b990}|#%b{A9EF3FD9-4240-455E-A4D5-F2B3301887B2}|1%b#
ProcessId: 0
DisplayName: @%SystemRoot%\System32\AudioSrv.Dll,-202
IconPath: @%SystemRoot%\System32\AudioSrv.Dll,-203
IsSystemSoundsSession: 0
State: 0
---------------------------------------------------
Nach 3 Minuten:
Zitat:
SessionCount: 1
---------------------------------------------------
SessionIdentifier: {0.0.0.00000000}.{8aa1d6e2-aca1-4ae5-a835-6c0dbea6b990}|#%b{A9EF3FD9-4240-455E-A4D5-F2B3301887B2}
InstanceIdentifier: {0.0.0.00000000}.{8aa1d6e2-aca1-4ae5-a835-6c0dbea6b990}|#%b{A9EF3FD9-4240-455E-A4D5-F2B3301887B2}|1%b#
ProcessId: 0
DisplayName: @%SystemRoot%\System32\AudioSrv.Dll,-202
IconPath: @%SystemRoot%\System32\AudioSrv.Dll,-203
IsSystemSoundsSession: 0
State: 0
---------------------------------------------------
  Mit Zitat antworten Zitat