Partager via


Enregistreur de présence de barre de jeu

But

Game Bar Presence Writer est un composant qui est averti lorsque l’état « présence » d’un jeu (c’est-à-dire un jeu en cours d’exécution au premier plan) change. Cette fonctionnalité est disponible dans les systèmes d’exploitation Windows 10 et versions ultérieures. Par défaut, l’enregistreur de présence de barre de jeu existant définit l’état de présence Xbox Live d’un utilisateur pour un jeu en cours d’exécution si l’application Xbox est installée, l’utilisateur est connecté à son compte Xbox et l’utilisateur a activé la présence Xbox Live pour être défini lors de l’exécution d’un jeu sur son PC. Il est possible que les développeurs d’applications Windows remplacent ce comportement par défaut par leur propre implémentation.

Important

En fournissant une implémentation personnalisée de l’enregistreur de présence de barre de jeu, le comportement par défaut de l’état de présence Xbox Live d’un utilisateur défini lors de l’exécution d’un jeu ne sera plus disponible.

Implémenter un serveur COM hors processus qui implémente la fonctionnalité Enregistreur de présence de barre de jeu

Pour fournir une implémentation game Bar Presence Writer, vous devez implémenter un serveur COM hors processus qui a implémenté les interfaces COM suivantes :

import "oaidl.idl";
import "Inspectable.idl";

#include <sdkddkver.h>

namespace Windows.Gaming.GameBar.PresenceServer.Internal
{
    // typedefs
    typedef enum GameNotificationEvent GameNotificationEvent;
    typedef enum AppIdType AppIdType;

    typedef UINT64 WindowId;

    interface IPresenceWriter;
    runtimeclass PresenceWriter;

    // enums
    enum GameNotificationEvent
    {
        None = 0,
        GotFocus,
        LostFocus,
        AppClose
    };

    // enums
    enum AppIdType
    {
        Aumid = 0,  // Application User Model Id
        TitleId     // Xbox Live Title Id
    };

    [uuid(782674D9-5CBB-4FCA-AD72-D9AC5F7AE963)]
    [exclusiveto(PresenceWriter)]
    interface IPresenceWriter : IInspectable
    {
        HRESULT UpdatePresence([in] WindowId hWnd, [in] GameNotificationEvent @event, [in] HSTRING appId, [in] AppIdType appIdType);
    }

    [marshaling_behavior(agile)] 
    runtimeclass PresenceWriter 
    {
        [default] interface IPresenceWriter; 
    }
}

Lorsqu’un jeu est exécuté sur l’ordinateur de l’utilisateur, UpdatePresence est appelé avec les paramètres suivants :

hWnd [in]

Poignée de la fenêtre du jeu en cours d’exécution.

événement [in]

Événement qui corrpsonds à savoir si le jeu a eu le focus (GotFocus), perdu le focus (LostFocus) ou le jeu tel qu’il a été fermé (AppClose).

appId [in]

Identificateur d’application du jeu. Si appIdType est Aumid, appId est l’ID de modèle utilisateur de l’application. Si appId est TitleId, appId est l’ID de titre Xbox Live.

appIdType [in]

Spécifie si appId correspond à l’ID de modèle utilisateur de l’application (Aumid) du jeu de l’ID de titre Xbox Live (TitleId) du jeu.

Inscrire l’implémentation du serveur COM pour l’enregistreur de présence

Pour que votre implémentation de Game Bar Presence Writer s’exécute, elle doit s’assurer que la valeur de Registre suivante est définie :

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsRuntime\Server\Windows.Gaming.GameBar.Internal.PresenceWriterServer\ExePath

Type de données Gamme Valeur par défaut
REG_SZ chemin d’accès au exécutable