Autor Beitrag
Kasko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 117

Win 10
C# C++ (VS 2017/19), (Java, PHP)
BeitragVerfasst: So 08.11.20 02:36 
Ich möchte Informationen zu allen derzeit aktiven Medienwiedergaben erhalten. Ich habe hier einen Weg gefunden, alle Medien Sessions auszulesen:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
using System;
using System.Collections.Generic;
using Windows.Media.Control;

namespace ConsoleApp1 {
  public class Program {
    [STAThread]
    static void Main(string[] args) {
      IReadOnlyList<GlobalSystemMediaTransportControlsSession> sessions = GlobalSystemMediaTransportControlsSessionManager.RequestAsync().GetAwaiter().GetResult().GetSessions();

      foreach (GlobalSystemMediaTransportControlsSession session in sessions) {
        var mediaProperties = session.TryGetMediaPropertiesAsync().GetAwaiter().GetResult();
        Console.WriteLine("{0} - {1}", mediaProperties.Artist, mediaProperties.Title);
      }

      Console.ReadKey();
    }
  }
}


Jetzt möchte ich die entsprechenden Programme für diese Sitzungen erhalten. Außerdem möchte ich das Fenster des Programms erhalten, falls es existiert. Mein Ziel ist es, das Fenster über COde auf einen anderen Bildschirm zu verschieben. Das Programm Handle wird nur als Identifier verwendet.

Ein Beispiel: Ich öffne eine beliebige MP4-Datei. Standardmäßig wird es von Windows Films & TV abgespielt. Jetzt möchte ich die Sitzung, das Programm und das Fenster (Films & TV hat ein Fenster) auslesen und das Fenster auf einen anderen Bildschirm verschieben (per Code).

Ein weiteres Beispiel: Ich schaue mir ein Video auf Youtube an. Jetzt möchte ich das Fenster des Browsers erhalten, in dem ich Youtube geöffnet habe und auf einem anderen Bildschirm verschieben.