C# 如何在Windows CE或Windows Mobile上启用和禁用触摸屏?

C# 如何在Windows CE或Windows Mobile上启用和禁用触摸屏?,c#,windows-mobile,windows-ce,C#,Windows Mobile,Windows Ce,如何在Windows CE或Windows Mobile上启用和禁用触摸屏 我需要任何C#示例代码触摸屏驱动程序与大多数驱动程序不同。它在启动时直接加载到GWES中,不能轻易地从基础设施中“删除”。没有通用的API来启用或禁用它,尽管我曾经合作过的一些OEM确实能够影响触摸屏驱动程序,因此如果您针对特定的设备,您可以向设备OEM进行检查 你也可以考虑告诉我们你想要达到什么样的目的,为什么我们可以提供一些其他的机制来让你达到你想要的。一般来说,禁用触摸屏是一个不友好的坏主意。试试TouchPane

如何在Windows CE或Windows Mobile上启用和禁用触摸屏


我需要任何C#示例代码

触摸屏驱动程序与大多数驱动程序不同。它在启动时直接加载到GWES中,不能轻易地从基础设施中“删除”。没有通用的API来启用或禁用它,尽管我曾经合作过的一些OEM确实能够影响触摸屏驱动程序,因此如果您针对特定的设备,您可以向设备OEM进行检查


你也可以考虑告诉我们你想要达到什么样的目的,为什么我们可以提供一些其他的机制来让你达到你想要的。一般来说,禁用触摸屏是一个不友好的坏主意。

试试
TouchPanelDisable
。归功于:

有一个
TouchPanelEnable
,但它是。因此,在这种情况下,用户必须进行热重置以重新启用面板


在完全禁用触摸之前,您是否考虑过修改应用程序以忽略触摸输入引起的事件?

在谷歌搜索数小时后,终于在此处找到了正确答案:

在底部,您可以在code.google上找到源代码:

c#的实际工作源代码:


正如@ctacke在其评论中提到的,这是针对OEM的。在进行调用之前,您需要测试应用程序运行的特定设备是否支持它。您可以通过Marshal.GetFunctionPointerForDelegate(delegateObject)将指向托管函数的指针传递给非托管代码
[DllImport("touch")]
private static extern void TouchPanelDisable();
    [DllImport("coredll.dll", SetLastError = true)]
    private static extern IntPtr GetDesktopWindow();

    [DllImport("touch.dll", SetLastError = true)]
    private static extern bool TouchRegisterWindow(IntPtr hwnd);

    [DllImport("touch.dll", SetLastError = true)]
    private static extern void TouchUnregisterWindow(IntPtr hwnd);

    public static Boolean Disable()
    {
        return TouchRegisterWindow(GetDesktopWindow());
    }

    public static void Enable()
    {
        TouchUnregisterWindow(GetDesktopWindow());
    }