Windows系统 .NET6 WPF程序中如何获取TouchScreen设备未经过系统处理的原始数据?

Yujie Tian 25 信誉分
2024-03-19T06:34:45.87+00:00

我现在面临了一个问题是在Windows系统 .NET6 WPF程序中如何获取TouchScreen设备未经过系统处理的原始数据,或者是否存在标准触摸协议作为参考以便于我能通过API接口获取到的处理后的数据重新转化为处理前的原始数据呢?

开发人员技术 | Windows Presentation Foundation
Windows 商业版 | 面向 IT 专业人士的 Windows 客户端 | 用户体验 | 其他
开发人员技术 | .NET | 其他
0 个注释 无注释
{count} 票

问题作者接受的答案
  1. Hui Liu-MSFT 48,711 信誉分 Microsoft 外部员工
    2024-03-19T14:03:04.04+00:00

    你好,在.NET 6 WPF应用程序中,要获取未经过系统处理的原始触摸数据并不直接支持,因为Windows操作系统通常会对触摸数据进行处理和抽象化,以提供更简单、更一致的接口供应用程序使用。你可以尝试通过Win32 API来获取更接近于原始触摸数据的信息。

    1. 注册触摸事件: 在 WPF 中,您可以订阅 TouchDownTouchMoveTouchUp 等触摸事件,以获取触摸操作的信息。这些事件提供了已处理的触摸数据,但不是原始数据。
    2. 使用 Windows API: 如果您需要获取原始触摸数据,可能需要使用 Windows API 来进行处理。您可以使用 RegisterTouchWindow 函数注册窗口以接收原始触摸输入,并使用 GetTouchInputInfo 函数来获取原始触摸数据。

    不确定你的具体代码,下面是一个简单的示例:

    
    
        protected override void OnSourceInitialized(EventArgs e)
    
        {
    
            base.OnSourceInitialized(e);
    
            HwndSource hwndSource = PresentationSource.FromVisual(this) as HwndSource;
    
            if (hwndSource != null)
    
            {
    
                hwndSource.AddHook(WndProc);
    
                RegisterTouchWindow(hwndSource.Handle, 0);
    
            }
    
        }
    
        private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
    
        {
    
            switch ((WindowMessages)msg)
    
            {
    
                case WindowMessages.WM_TOUCH:
    
                    // 处理触摸消息
    
                    handled = true;
    
                    break;
    
            }
    
            return IntPtr.Zero;
    
        }
    
        [DllImport("user32.dll")]
    
        private static extern bool RegisterTouchWindow(IntPtr hWnd, uint flags);
    
        private enum WindowMessages : int
    
        {
    
            WM_TOUCH = 0x0240
    
        }
    
    
    

    希望这对你有所帮助。


    希望这对你有所帮助。 如果回复有帮助,请单击“接受答案”并投赞成票。

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


0 个其他答案

排序依据: 非常有帮助

你的答案

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