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

时间:2011-03-17 13:12:16

标签: c# windows-mobile windows-ce

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

我需要任何C#示例代码

3 个答案:

答案 0 :(得分:3)

经过几个小时的谷歌搜索终于找到了正确答案:

http://www.hjgode.de/wp/2012/09/24/windows-mobile-disable-touch-input/#more-1543

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

https://code.google.com/p/win-mobile-code/source/browse/#svn%2Ftrunk%2FdisableTouch

c#的实际工作源代码:

    [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());
    }

答案 1 :(得分:0)

触摸屏驱动程序与大多数驱动程序不同。它在启动时直接加载到GWES中,并且不能轻易地从该基础结构中“移除”。没有通用的API来启用或禁用它,尽管我使用过的某些OEM确实能够影响触摸屏驱动程序,因此如果您要定位特定设备,则可以与设备OEM进行核对。 / p>

您可能还会考虑告诉我们您正在尝试实现的目标,以及为什么我们可以提供其他一些机制来帮助您实现目标。一般来说,禁用触摸屏将是一个不友好的坏主意。

答案 2 :(得分:0)

试试TouchPanelDisable。积分转到Peter Foot

[DllImport("touch")]
private static extern void TouchPanelDisable();

有一个TouchPanelEnable,但isn't usable from managed code。因此,在这种情况下,用户必须进行热重置才能重新启用面板。

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