CreateSyntheticPointerDevice2 函数

[某些信息与预发行的产品有关,该产品在商业发布之前可能会进行大幅修改。 Microsoft对此处提供的信息不作任何明示或暗示的保证。

使用关联的参数创建合成指针设备。 可以通过 InjectSyntheticPointerInput 使用此设备注入输入。 不再需要注入设备时,应通过 DestroySyntheticPointerDevice 对其进行清理。

Syntax

WINUSERAPI
HSYNTHETICPOINTERDEVICE
WINAPI
CreateSyntheticPointerDevice2(
    _In_ SYNTHETIC_DEVICE_CREATION_PARAMS* pParams);

参数

pParams

指向包含设备参数 的SYNTHETIC_DEVICE_CREATION_PARAMS 结构的指针。

返回值

如果函数成功,则返回值是合成指针设备的句柄。

如果函数失败,则返回值为 NULL。 若要获取扩展的错误信息,请调用 GetLastError

注解

现有的 CreateSyntheticPointerDevice 不能用于创建触摸板设备,因为必须创建具有物理大小的触摸板。

SYNTHETIC_DEVICE_CREATION_OPTIONS

用于创建合成指针设备的选项。

typedef enum tagSYNTHETIC_DEVICE_CREATION_OPTIONS
{
    SDCO_NONE                   = 0x0,
    SDCO_PHYSICAL_SIZE          = 0x1,
    SDCO_TOUCHPAD_GESTURE_ONLY  = 0x2,
} SYNTHETIC_DEVICE_CREATION_OPTIONS;
DEFINE_ENUM_FLAG_OPERATORS(SYNTHETIC_DEVICE_CREATION_OPTIONS)
价值 含义
SDCO_NONE (0x0) 没有特殊选项。
SDCO_PHYSICAL_SIZE (0x1) 注入的输入相对于设备而不是其映射的显示器(s)。 如果指定,则必须提供设备的维度。 使用 InjectSyntheticPointerInput 注入输入时,应在指针信息的 ptHimetricLocation 字段中指定输入坐标,而不是 ptPixelLocation
SDCO_TOUCHPAD_GESTURE_ONLY (0x2) 注入的触摸板输入将始终被视为手势,无法识别为鼠标移动或单击。 如果未指定,则系统会将注入的触摸板输入与物理触摸板输入相同。

SYNTHETIC_DEVICE_CREATION_PARAMS

表示用于创建合成注入设备的参数的结构。

typedef struct tagSYNTHETIC_DEVICE_CREATION_PARAMS
{
    POINTER_INPUT_TYPE pointerType;
    ULONG maxCount;
    POINTER_FEEDBACK_MODE feedbackMode;
    HMONITOR hMonitor;
    ULONG deviceWidth;
    ULONG deviceHeight;
    SYNTHETIC_DEVICE_CREATION_OPTIONS options;
} SYNTHETIC_DEVICE_CREATION_PARAMS;

成员

pointerType

正在创建的设备类型(PT_TOUCHPT_PENPT_TOUCHPAD)。

maxCount

可以同时注入的最大联系人数。

feedbackMode

注入输入呈现视觉反馈的模式。

hMonitor

注入输入映射到的监视器(如果适用)。

deviceWidth

设备的物理宽度(1/100 毫米)。

deviceHeight

设备的物理高度(1/100 毫米)。

选项

来自SYNTHETIC_DEVICE_CREATION_OPTIONS的零个或多个选项。

注解

pointerTypeoptions 字段控制其他字段的有效值:

PT_TOUCH

  • maxCount 必须大于 0 且小于或等于 256。
  • feedbackMode 必须 POINTER_FEEDBACK_DEFAULTPOINTER_FEEDBACK_INDIRECTPOINTER_FEEDBACK_NONE
  • hMonitor 可以是 nullptr (输入映射到虚拟桌面)或有效的监视器。
  • 如果指定了 SDCO_PHYSICAL_SIZE,则 deviceWidthdeviceHeight 必须为非零;如果未指定,则为零。
  • 只有 SDCO_PHYSICAL_SIZE 对选项(或 SDCO_NONE)有效。

PT_PEN

  • maxCount 必须为 1。
  • feedbackMode 必须 POINTER_FEEDBACK_DEFAULTPOINTER_FEEDBACK_INDIRECTPOINTER_FEEDBACK_NONE
  • hMonitor 可以是 nullptr 或有效的监视器。
  • 如果指定了 SDCO_PHYSICAL_SIZE,则 deviceWidthdeviceHeight 必须为非零;如果未指定,则为零。
  • 只有 SDCO_PHYSICAL_SIZE 对选项(或 SDCO_NONE)有效。

PT_TOUCHPAD

  • maxCount 必须大于 0 且小于或等于 5。
  • feedbackMode 必须 POINTER_FEEDBACK_NONE
  • hMonitor 必须为 nullptr (触摸板输入始终通过鼠标位置映射到虚拟桌面)。
  • deviceWidthdeviceHeight 必须为非零。
  • 必须在 选项中指定 SDCO_PHYSICAL_SIZE,SDCO_TOUCHPAD_GESTURE_ONLY 是可选的。

要求

要求 价值
最低支持的客户端 Windows 11 [仅限桌面应用]
支持的最低服务器 无受支持的版本
Header Winuser.h (包括 Windows.h)
图书馆 User32.lib
DLL User32.dll (序号 2690)

另见