Entwickler-Ecke

Sonstiges (.NET) - Auslesen der AppUserModelId eines Prozesses


Kasko - Fr 18.12.20 03:21
Titel: Auslesen der AppUserModelId eines Prozesses
Ich möchte die Window-Handles von Prozessen auslesen, die eine Medienwiedergabe durchführen. Dafür lese ich über den GlobalSystemMediaTransportControlsSessionManager die einzelnen Media Sessions aus. Für jede Media-Session kann ich nun die AppUserModelId des wiedergebenden Programmes auslesen. Ich möchte nun den dazugehörigen Prozess auslesen. Wie kann ich die AppUserModelId eines Prozesses auslesen um sie mit der AppUserModelId der Session zu vergleichen?

Wenn ich versuche AppInfo.GetFromAppUserModelId auszurufen bekomme ich eine MissingMethodException. In den Microsoft-Docs steht drin ich benötige den Windows.Foundation.UniversalApiContract. Wenn ich allerdings versuche den zu referenzieren, bekomme ich den Fehler: This component is already automatically referenced by the build system. Also warum wird die Methode nicht gefunden?


Ralf Jansen - Fr 18.12.20 13:26

Meine Vermutung ist das dein OS einfach zu alt ist. Laut Doku braucht man mindestens Win10 v2004.
In einem früheren Windows Build fehlt vermutlich die nötige Methode in der Windows API.


Je nachdem was du vorhast mit den Prozessen die du suchst sei dir bewußt das AppUserModelId und Process keine 1-1 Beziehung ist. Ein Prozess kann mehrere haben. Und mehrere Prozesse könne die gleiche AppUserModelId haben (wenn explizit gesetzt).


Kasko - Fr 18.12.20 21:46

Ich habe Windows 20H2. Aber meine Frage bezog sich nicht nur auf die nicht gefundene Methode, sondern eigentlich auf die Frage wie ich den/die Prozess/-e die eine bestimmte SourceAppUserModelId haben auslesen kann. Ich benötige lediglich die Prozess-Ids.