我一直在寻找一种方法来检测触摸屏设备(当它使用指针设备驱动程序而不是触摸屏显示驱动程序时),或者检测键盘何时从C# & WPF中出现。
请注意,这是在Windows 7嵌入式下,而不是windows 8。
我见过一些关于system.management等人的参考资料。但我不知道该怎么用这些东西。
本质上,如果没有附加键盘,并且用户输入文本框,WPF键盘就会出现。
发布于 2015-04-30 00:07:59
好的,我在几天前找到了这个解决方案,看起来它应该工作得很好,因为如果一个键盘连接到触摸屏设备上,它也不会显示屏幕上的键盘(至少它不应该,除非操作系统覆盖它,我还没有正确地测试它)
在这种方法中,我使用一个名为HIDSHARP的Nuget库查看usb列表,通过查找描述中的单词键盘来查看键盘是否附加。
然后,我通过Management找到一个ps/2键盘,如果没有找到USB。
/// <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;
}
}
}发布于 2015-04-24 07:01:41
如果textbox是通过Touch选择的,您应该得到GotTouchCapture或TouchDown事件。你可以注册其中一个并显示键盘如果它被触发..。
https://stackoverflow.com/questions/29840681
复制相似问题