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

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

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

Windows 10
Windows 10
在个人计算机和平板电脑上运行的 Microsoft 操作系统。
62 个问题
.NET
.NET
基于 .NET 软件框架的 Microsoft 技术。
34 个问题
Windows Presentation Foundation
Windows Presentation Foundation
.NET Framework 的一部分,它提供统一的编程模型,用于在 Windows 上构建业务线桌面应用程序。
65 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. Hui Liu-MSFT 41,146 信誉分 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 个其他答案

排序依据: 非常有帮助