检测VB6中存在的键盘

Her*_*erk 5 vb6 keyboard

我有一个旧的 VB6 项目,现在可以在没有附加键盘的系统上运行。在这种情况下,程序会在屏幕键盘上打开 MS。我需要检测是否连接了键盘。如果连接了键盘,则跳过打开屏幕键盘。此时它会打开屏幕键盘,然后用户必须关闭它。它是笨重的。我无法迁移此应用程序,因为它支持一些 VB.net 无法访问的旧设备。请有任何想法。

Bri*_*ord 4

Windows Management Instrumentation是您可以采用的一种方法。以下代码查找状态为 OK 的键盘:

Private Function hasKeyboard() As Boolean
   Dim WMIService As Object
   Dim Items As Object
   Dim Item As Object

   hasKeyboard = False
   Set WMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")
   Set Items = WMIService.ExecQuery("SELECT * FROM Win32_Keyboard")

   For Each Item In Items
      If InStr(1, UCase(Item.Status), "OK") > 0 Then
         hasKeyboard = True
         Exit Function
      End If
   Next
End Function
Run Code Online (Sandbox Code Playgroud)