使用 InjectTouchInput 函数时,触摸板(通过 I2C)不工作

匿名
2024-05-07T05:40:14.61+00:00

我正在尝试使用 InjectTouchInput 函数来模拟触摸板的触摸屏行为。但是,目前在调用 InjectTouchInput 来模拟光标移动时,滑动或单击触摸板(通过 I2C)时没有响应。

模拟运动的代码: 下面是一个示例代码供参考:

                        if (bool_down) {
                            var p2 = getPos();
                            int nMoveIntervalX = (int)((p2.X - pp.X));
                            int nMoveIntervalY = (int)((p2.Y - pp.Y));

                            //Simulating touch - movement.
                            contact.Move(nMoveIntervalX, nMoveIntervalY);
                            oFlags = PointerFlags.UPDATE | PointerFlags.INRANGE | PointerFlags.INCONTACT;
                            contact.PointerInfo.PointerFlags = oFlags;
                            TouchInjector.InjectTouchInput(1, new[] { contact });
        public void Move(int deltaX, int deltaY) {
            PointerInfo.PtPixelLocation.X += deltaX;
            PointerInfo.PtPixelLocation.Y += deltaY;
            ContactArea.left += deltaX;
            ContactArea.right += deltaX;
            ContactArea.top += deltaY;
            ContactArea.bottom += deltaY;
        }
   [DllImport("User32.dll")]
        public static extern bool InjectTouchInput(int count, [MarshalAs(UnmanagedType.LPArray), In] PointerTouchInfo[] contacts);

下面是一个示例代码供参考:

https://github.com/hbl917070/Mouse2Touch

目前,以下类型的鼠标/触摸板是可以的:外部 USB 电缆鼠标、无线鼠标和通过 PS2 的触摸板。

有什么解决方案可以解决它吗?

此问题由: When using the InjectTouchInput function, the touchpad(via I2C) is not working - Microsoft Q&A 总结而来

Windows 开发 | Windows API - Win32
0 个注释 无注释
{count} 票

问题作者接受的答案
  1. Tong Xu - MSFT 2,546 信誉分 Microsoft 外部员工
    2024-05-07T06:23:16.6566667+00:00

    你好,
    欢迎来到 Microsoft Q&A!

    值得注意的是,注入的输入将发送到运行注入过程的会话的桌面。我们无法知道 InjectTouchInput 是否阻塞 I2C 通道,但可以检查另一个驱动程序示例 HIDInjector

    由于此问题很复杂,请在下面的链接中打开事件,以便我们的工程师可以与您密切合作: https://developer.microsoft.com/en-us/windows/support/?tabs=Contact-us,请为此问题选择 Windows SDK 的“桌面应用 UI 开发 - Windows 控件和通用对话框”。此外,如果支持工程师确定问题是由错误引起的,则服务请求将是一个免费案例,并且不会向您收费。


    如果答案是正确的解决方案,请单击“接受答案”并请投赞成票。如果您对此答案有其他疑问,请点击“评论”。

    注意:如果您想接收此线程的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知。

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助

你的答案

提问者可以将答案标记为“已接受”,版主可以将答案标记为“已推荐”,这有助于用户了解答案是否解决了提问者的问题。