IWTSWindowInfoService

概述

提供与客户端计算机上呈现的 RDP 窗口相关的信息的各种函数。 这允许插件作者查询此 RDP 窗口。 这使 RDP 插件作者能够准确地找到当前窗口,并提供有关在何处正确呈现产品的信息。 由 RDP 客户端实现。 以下枚举、结构和方法与此接口相关。

RdpSessionType

typedef enum RdpSessionType
{
    Desktop = 0,
    RemoteApp = 1,
} RdpSessionType;

确定 RDP 会话是桌面会话还是远程应用会话。

WTSWindowInfo

包含各种窗口相关信息。 此窗口应为正在远程运行并通过 RDP 在客户端呈现的进程。

typedef struct WTSWindowInfo
{
    HWND Hwnd;
    int Height;
    int Width;
    int ViewWidth;
    int ViewHeight;
    int ViewOffsetX;
    int ViewOffsetY;
    float Scale;
} WTSWindowInfo;

继承

IWTSWindowInfoService 接口继承自 IUnknown 接口。 IWTSWindowInfoService 也具有以下类型的成员:

方法

IWTSWindowInfoService::GetWindowInfo

HRESULT GetWindowInfo(
  [in] HWND remoteHwnd,
  [out] WTSWindowInfo* windowInfo
);

参数

[in] HWND remoteHwnd

客户端计算机上窗口的 HWND,显示客户端计算机上的远程进程。

[out] WTSWindowInfo* windowInfo

对应于 remoteHwnd 的实例 WTSWindowInfoobject

Return

成功时返回 S_OK

IWTSWindowInfoService::GetRdpClientProcessId

HRESULT GetRdpClientProcessId(
  [out, retval] unsigned long* processId
);

参数

[out, retval] unsigned long* processId

指向 RDP 客户端进程的进程 ID 的指针。

Return

成功时返回 S_OK

IWTSWindowInfoService::GetRdpSessionType

HRESULT GetRdpSessionType(
  [out, retval] RdpSessionType* sessionType
);

参数

[out, retval] RdpSessionType* sessionType

指向 RdpSessionType 对象的指针。

Return

成功时返回 S_OK

IWTSWindowInfoService::SubscribeWindowChanged

HRESULT SubscribeWindowChanged(
  [in] HWND remoteHwnd,
  [in] IWTSWindowChangedCallback* windowChanged
);

监视窗口的更改,并在更改时调用回调。

参数

[in] HWND remoteHwnd

要订阅以进行更改的窗口的 HWND。

[in] IWTSWindowChangedCallback* windowChanged

应在窗口更改时调用的回调。 此回调由 RDP 插件实现。

Return

成功时返回 S_OK

IWTSWindowInfoService::UnsubscribeWindowChanged

HRESULT UnsubscribeWindowChanged(
  [in] HWND remoteHwnd,
  [in] IWTSWindowChangedCallback* windowChanged
);

撤消 SubscribeWindowChanged。

参数

[in] HWND remoteHwnd

要取消订阅的窗口的 HWND。

[in] IWTSWindowChangedCallback* windowChanged

应在窗口上注销的回调将更改,即停止调用回调。

Return

成功时返回 S_OK

要求

要求
支持的最低客户端 Windows 11版本 24H2 (内部版本 26100) 或更高版本。
目标平台 Windows
标头 tsvirtualchannels.h