XLaunchUri

Microsoft 游戏开发工具包(GDK) API 提供了一种机制,使游戏能够通过调用 URI 来启动体验。

语法

HRESULT XLaunchUri(  
         XUserHandle requestingUser,  
         const char* uri  
)  

参数

requestingUser _In_opt_
类型:XUserHandle

定义一个句柄,标识提出请求的用户。

uri _In_z_
类型:char*

指示要启动的 URI 的字符串。

返回值

类型:HRESULT

HRESULT 成功或错误代码。

如果成功,则返回 S_OK;否则返回错误代码。 有关错误代码的列表,请参阅错误代码

返回代码 说明
S_OK 操作成功。
E_GAMEPACKAGE_NO_PACKAGE_IDENTIFIER 传入此函数的 URI 尝试将应用启动到后台,但找不到合适的应用。 它可能未安装。

备注

注意

在时间敏感线程上调用此函数是不安全的。 有关详细信息,请参阅时间敏感线程

这会通过 URI 启动另一个应用。 它还接受可选的用户上下文和必需的 URI。

如果成功,则启动目标 URI。 否则,将返回错误。 此方法不被视为时间关键的,在基础异步系统操作完成之前将阻塞,并且目标 URI 或者已启动,或者发生了错误。

如果不存在用于处理给定 URI 的协议方案的应用,则系统将向用户显示一个提示,询问其是否要搜索 Windows Store 以找到处理该方案的应用程序。

启动到后台

在主机上,在其 appxmanifest 文件中具有 backgroundMediaPlayback 功能的通用 Windows 应用可以启动到后台而不是前台。 为此,请在 URI 前面加上字符串“ms-bgm-”。 例如,如果后台媒体应用程序响应协议“companion-music-app://”,则可以使用 uri“ms-bgm-companion-music-app://”将其启动到后台。 当应用收到激活时,从 ProtocolActivatedEventArgs 获取的 URI 将不包括“ms-bgm-”前缀。

以这种方式调用时,XLaunchUri 在未安装合适的应用时不会向用户显示提示。 相反,如果你的游戏使用的是 2025 年 4 月版本的 GDK 或更高版本,它将返回E_GAMEPACKAGE_NO_PACKAGE_IDENTIFIER。 代码可以为此返回值检查,并根据需要使用它向用户显示修正 UI。

在电脑上,以这种方式调用 XLaunchUri 时,它只会在正常启动它之前从 URI 的开头删除“ms-bgm-”。 它对电脑上的系统行为没有其他影响。

下面是调用 XLaunchUri 以启动配套音乐应用程序的示例:

HRESULT BeginPlayingMusic(XUserHandle user)
{
    // Launch a well-known companion music application.
    // The game and app both need to agree on the URI scheme.
    HRESULT hr = XLaunchUri(user, "ms-bgm-companion-music-app://launch?play=true");
    if (hr == E_GAMEPACKAGE_NO_PACKAGE_IDENTIFIER)
    {
        // If the music app isn't installed, launch the store page so the user can download it.
        return XLaunchUri(user, "ms-windows-store://pdp/?ProductId=9FAKESTOREID");
    }

    return hr;
}

要求

头文件:XLauncher.h

库:xgameruntime.lib

支持平台:Windows、Xbox One 系列主机和 Xbox Series 主机

另请参阅

XLauncher