AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Das Handle ist ungültig

Ein Thema von EWeiss · begonnen am 2. Mai 2018 · letzter Beitrag vom 6. Mai 2018
Antwort Antwort
HolgerX

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

AW: Das Handle ist ungültig

  Alt 4. Mai 2018, 12:10
Hmm.

Zitat:
Da Du State 0 aussortiertst, sollte dass auch so sein!
Ich sortiere ihn nicht aus was ich aussortiere ist State 2 = AudioSessionStateExpired
Alles andere wird zugelassen.

Also, laut meinen Test gibt es nur State 0 und 1, wobei 1 derjenige ist, wenn die App läuft.


Zitat:
Um (wie der Mixer) immer die aktuelle Liste anzuzeigen, musst Du diese immer wieder überprüfen und bereinigen/erweitern. Es genügt nicht, diese beim Programstart einzulesen.
Für das Testtool habe ich die Liste alle 500ms abgefragt..
Und dann alle 500ms Sekunden meine Controls neu erstellen.. boahh das wird wohl ein Unding.
Ich habe dafür Events erstellt die das eigentlich für mich regeln sollen.
Und da gibt es auch ein Problem es feuert nur ab wenn ich meine Sound Anwendung beende.
Ich kann dann darauf reagieren und das jeweilige Control entladen aber wenn die Anwendung neu gestartet wird feuert das Event nicht ab.
Du brauchst nicht immer 'alle' neu zu machen, sondern nur die, welche nicht mehr vorhanden sind entfernen und jene, welche neu gestartet wurden hinzufügen..

Somit sollte deine App eigentlich beim Programmstart einmal alle Sessions durchgehen und die PIDs mit State 1 merken (und wenn ich es richtig verstanden habe ein Control jeweils erzeugen).

Dann sollte entweder im Intervall geprüft werden, ob deine Liste noch gültig ist und die PIDS /Controls entfernen/hinzufügen, welche sich geändert haben.

Wenn es seitens MS ein Event gibt, wenn eine andere App gestartet/beendet wurde, könnte diese auch als Trigger verwendet werden.
Jedoch wird es auch Apps geben, die ohne sich selbst zu beenden die AudiSession schließen.

Von welchen Events lässt Du dich denn benachrichtigen?
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: Das Handle ist ungültig

  Alt 4. Mai 2018, 12:23
Zitat:
Dann sollte entweder im Intervall geprüft werden, ob deine Liste noch gültig ist und die PIDS /Controls entfernen/hinzufügen, welche sich geändert haben.
Nun ja das beenden macht ja mein Event von sich aus wird das gefeuert schalte ich das Control auf Hide (muss das später noch ändern).

Zitat:
Von welchen Events lässt Du dich denn benachrichtigen?
IAudioSessionEvents..

Delphi-Quellcode:
function TAudioSessionEvents.OnStateChanged(NewState: uint): HResult; stdcall;
begin
  PostMessage(MsgHandle, WM_SessionStateEvent, NewState, 0);

  Result := S_OK;
end;
Delphi-Quellcode:
    WM_SessionStateEvent:
      begin
        if Assigned(FOnSessionStateEvent) then
          FOnSessionStateEvent(Msg.WPARAM);
      end;
Zitat:
Jedoch wird es auch Apps geben, die ohne sich selbst zu beenden die AudiSession schließen.
Genau und dafür steht State 2 zur Verfügung.
Zitat:
AudioSessionStateExpired
The audio session has expired. (It contains no streams.)
gruss

Geändert von EWeiss ( 4. Mai 2018 um 13:31 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Das Handle ist ungültig

  Alt 4. Mai 2018, 12:26
Zitat:
Gibt es denn den State 2 in der freien Wildbahn (im Gegensatz zur Theorie)? Vieleicht setzt Windows den State jenachdem direkt auf 0?
Warum Theorie?
Ich bastele da nicht selbst was dazu

Den gibt es.
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

gruss
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.079 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Das Handle ist ungültig

  Alt 4. Mai 2018, 14:01
Zitat:
Gibt es denn den State 2 in der freien Wildbahn (im Gegensatz zur Theorie)? Vieleicht setzt Windows den State jenachdem direkt auf 0?
Warum Theorie?
Ich bastele da nicht selbst was dazu

Den gibt es.
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
Er meinte, ob du das schon mal beobachtet hast.
Theorie = MSDN-Doku
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Das Handle ist ungültig

  Alt 4. Mai 2018, 14:05
Zitat:
Gibt es denn den State 2 in der freien Wildbahn (im Gegensatz zur Theorie)? Vieleicht setzt Windows den State jenachdem direkt auf 0?
Warum Theorie?
Ich bastele da nicht selbst was dazu

Den gibt es.
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
Er meinte, ob du das schon mal beobachtet hast.
Theorie = MSDN-Doku
Jo so wie im letzten Beitrag auf Seite 6 beschrieben.
Mit dem Cache hat HolgerX recht daran liegt es das bei mir der Count immer hochgezählt wird.

gruss
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: Das Handle ist ungültig

  Alt 5. Mai 2018, 21:11
Ich habe jetzt folgenden Eintrag..
Zitat:
Active Session = 3
DisplayName = @%SystemRoot%\System32\AudioSrv.Dll,-202
StateSession = AudioSessionStateInactive

IconPath = @%SystemRoot%\System32\AudioSrv.Dll,-203

SessionIdentifier = {0.0.0.00000000}.{f9351d96-9090-4718-939f-09b556ef5744}|#%b{A9EF3FD9-4240-455E-A4D5-F2B3301887B2}

ProcessID = 0
IsSystemSoundsSession = 0

SessionGuid = {04A29A28-3887-4027-A7B8-5F656FC47362}
******************************
Wie komme ich jetzt über
@%SystemRoot%\System32\AudioSrv.Dll,-202

an einen gültigen DisplayNamen?
und den IconPath ?
Mit dem Pfad @%SystemRoot% kann ich nichts anfangen.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.533 Beiträge
 
Delphi 12 Athens
 
#7

AW: Das Handle ist ungültig

  Alt 5. Mai 2018, 21:17
Ich glaub das war ein RessourceString.
DLL bei dir laden und dann mit DLL-Handle und der Zahl als ID für MSDN-Library durchsuchenLoadString
reicht als Ressource-DLL, siehe LoadLibraryEx

Beim Icon das Gleiche. LoadIcon bzw. TRessourceStream

Bei Google suchenmsdn expand environment variables
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 5. Mai 2018 um 21:22 Uhr)
  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 08:34 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