首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用C#检测windows 7上的键盘

使用C#检测windows 7上的键盘
EN

Stack Overflow用户
提问于 2015-04-24 06:55:52
回答 2查看 1.6K关注 0票数 1

我一直在寻找一种方法来检测触摸屏设备(当它使用指针设备驱动程序而不是触摸屏显示驱动程序时),或者检测键盘何时从C# & WPF中出现。

请注意,这是在Windows 7嵌入式下,而不是windows 8。

我见过一些关于system.management等人的参考资料。但我不知道该怎么用这些东西。

本质上,如果没有附加键盘,并且用户输入文本框,WPF键盘就会出现。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-30 00:07:59

好的,我在几天前找到了这个解决方案,看起来它应该工作得很好,因为如果一个键盘连接到触摸屏设备上,它也不会显示屏幕上的键盘(至少它不应该,除非操作系统覆盖它,我还没有正确地测试它)

在这种方法中,我使用一个名为HIDSHARP的Nuget库查看usb列表,通过查找描述中的单词键盘来查看键盘是否附加。

然后,我通过Management找到一个ps/2键盘,如果没有找到USB。

代码语言:javascript
复制
 /// <summary>
    /// TEST AND SET GLOBAL KEYBOARD ATTACHED BOOL keyB
    /// </summary>
    internal static void TestKeyboard()
    {
        keyB = false;

        //FIND WHETHER A USB KEYBOARD IS PLUGGED IN
        HidSharp.HidDeviceLoader hd = new HidSharp.HidDeviceLoader();

        foreach (HidSharp.HidDevice item in hd.GetDevices())
        {
            if (item.ProductName.Contains("Keyboard"))
            {
                keyB = true;
                return;
            }
        }

        //FIND WHETHER A PS/2 KEYBOARD IS PLUGGED IN.
        string query = "select * from Win32_Keyboard";
        System.Management.ObjectQuery oQuery = new ObjectQuery(query);
        ManagementObjectSearcher searcher = new ManagementObjectSearcher(oQuery);
        ManagementObjectCollection recordSet = searcher.Get();
        foreach (ManagementObject record in recordSet)
        {
            if (record.Properties["Description"].Value.ToString().Contains("Keyboard"))
            {
                keyB = true;
                return;
            }
        }

    }
票数 0
EN

Stack Overflow用户

发布于 2015-04-24 07:01:41

如果textbox是通过Touch选择的,您应该得到GotTouchCaptureTouchDown事件。你可以注册其中一个并显示键盘如果它被触发..。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29840681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档