这是我的第一篇文章!

我试图简单地检测机器上的PS / 2端口是否连接了键盘。 这个想法是计算机将启动,尽管如果它检测到USB设备或PS / 2键盘,它将重新启动进入管理员模式。

尽管没有为PS / 2端口找到任何文档的运气,但我已经处理过USB方面的问题。 有些帖子说引导后无法检测到插入PS / 2端口的键盘,尽管我只是想检查引导时是否连接了一个键盘。

我正在为程序使用C#,因此,尽管使用任何语言的帮助都将是有益的,但是使用该语言的任何解决方案都将非常有帮助。

非常感谢

尤安

===============>>#1 票数:1 已采纳

WMI似乎正在这样做:

ConnectionOptions opts = new ConnectionOptions();
ManagementScope scope = new ManagementScope(@"\\.\root\cimv2", opts);
string query = "select * from Win32_Keyboard";
System.Management.ObjectQuery oQuery = new ObjectQuery(query);
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, oQuery);
ManagementObjectCollection recordSet = searcher.Get();
foreach (ManagementObject record in recordSet)
{
    Console.WriteLine("" + record.Properties["Description"].Value);
    Console.WriteLine("" + record.Properties["Layout"].Value);
    Console.WriteLine("" + record.Properties["DeviceID"].Value);
    Console.WriteLine("" + record.Properties["PNPDeviceID"].Value);
    Console.WriteLine("" + record.Properties["Status"].Value + "\n");
}

返回:

USB人机界面设备0000040C USB \\ VID_03F0&PID_0024 \\ 6&1A939CC4&0&1 USB \\ VID_03F0&PID_0024 \\ 6&1A939CC4&0&1 OK

标准101/102键或Microsoft Natural PS / 2键盘0000040C ACPI \\ PNP0303 \\ 4&3432CBB0&0 ACPI \\ PNP0303 \\ 4&3432CBB0&0错误

我没有ps / 2键盘,因此状态给出了错误,但是如果连接了一个,则应该具有OK状态

===============>>#2 票数:0

WMI应该允许您找到它。 有一个很棒的实用程序WMI代码创建者http://www.microsoft.com/download/zh-cn/details.aspx?displaylang=en&id=8572 ,它允许查找和打开不同的WMI类并生成各种格式的代码VB脚本,C#等等,当您在课程中进行搜索时,生活变得更加轻松-希望这对您有所帮助!

作为一般的顶级参考,我发现这对http://msdn.microsoft.com/en-us/library/windows/desktop/aa394587(v=vs.85).aspx也很有帮助

  ask by macraee translate from so

未解决问题?本站智能推荐:

1回复

检测任何按键并保存

我知道在Visual Studio中您可以检测到特定的按键(例如: 此处 ),但是有一种方法可以检测任何按键( AZ, 0-9, Shift, Ctrl, Alt, F1, F2等)并将其显示为标签(例如: label1 )。 我打算在任何窗口中都可以使用它,而不仅仅是我将要制作的Visual
1回复

在C#和XNA 4.0中检测多次按键

我想检测在C#和XNA 4.0中是否同时按下了一组特定的键盘键。 我这样做与下面的代码: 该代码检测用户是否一次按下了“ S”,“ K”和“ I”。 但是,我注意到该代码在一台计算机(Windows 8.1便携式计算机)上运行良好,而在另一台计算机(Windows 8台式机)上运行良
1回复

C#XNA4.0键盘状态错误

我试图移动一个精灵,但它甚至不允许我调试。 当我尝试调试时,出现以下错误: 错误1名称'键'在当前上下文中不存在 我究竟做错了什么? 或者是别的什么? 根据多个消息来源,这是使精灵移动的方法之一。 由于某些原因,我从未能够使用键盘输入来移动某些东西或使某件事发生。
1回复

如何识别与充电器端口的连接? [重复]

这个问题已经在这里有了答案: 检查设备是否插入 9个答案 我想检测是否有充电器或USB连接到设备的充电器端口,是否可以实现此目的? 我尝试了此链接。当充电器连接和断开时都可以使用。是否可以在所有设备上使用? 提前致谢
2回复

如何检测Android中是否显示键盘?

是否可以检测键盘是否显示在Android中? 我尝试了以下答案: 如何检查Android中软件键盘的可见性? 但什么也没发生。 我需要知道何时显示用于将一些EditText移动到屏幕前面的键盘。 或者,..我可以这样做吗?
2回复

检测输入是否被触摸(平板电脑)或点击(鼠标)

我们正在开发一个Web应用程序,它可以在桌面和平板电脑(iPad,Android或表面)上启动。 现在我们正在为数字输入构建自己的键盘。 使用mousclick将焦点设置在输入字段上时,costum键盘打开正确。 但是当您通过触摸的点击(平板电脑)将焦点设置为输入时,默认键盘也会打开。
2回复

如何检测我的应用程序在C#中处于空闲状态(包含表格)?

我今天有这个问题,我看到了这个解决方案: 如何检测我的应用程序在C#中处于空闲状态? 我尝试过,但是我的表单覆盖了userControls和其他元素,并且mouseover或keydown事件仅在这些元素的空白处触发。 有没有更好的办法?
6回复

在C#中检测特定进程的CPU架构

我用C#编写代码。 我的代码将在Any CPU模式下运行并升级。 我的目标是使用Process.GetProcesses()枚举机器中的所有进程,并为每个进程检测其CPU体系结构: x86 , x64或IA64 。 我正在C#中实现代码注入,需要检测目标进程的体系结构,以决定要注入
2回复

如何在C#中检测RegOpenKey或RegSetInfoKey事件

我试图从Mark Russinovich(Sysinternals)像进程监视器一样检测RegOpenKey或RegSetInfoKey事件。 有谁知道如何编写一个C#事件,当程序在RegistryKey上执行RegOpenKey或RegSetInfoKey时将触发该事件(不更改!)?
3回复

C#检测UserControl宽度

我正在使用Windows窗体,我想检测我的UserControl宽度,并在宽度达到限制时更改AnchorStyle。 这是我试着写的代码。 现在它做的是当我调整大小时,它已经是顶部和底部锚点。 但是只有当它达到600时才需要顶部和底部,否则当它小于600时将锚定在所有方向。