我想知道檢測鼠標或鍵盤是否插入計算機的最佳方法是什麼?我有一個主要用於觸摸屏獨立應用程序的應用程序,但我想知道是否有插入的鍵盤不會觸發拔出Windows鍵盤或包含數字鍵盤的窗體。如果沒有插入鼠標,則改變一些行爲。編程檢測鼠標和鍵盤是否插入
2
A
回答
2
使用VB.Net,我會用System.Management
(不要忘記在項目[菜單]添加此引用 - >添加引用)ManagementObjectSearcher
與System.Linq
相結合,找到解決這個樣子,
Imports System
Imports System.Management
Imports System.Linq
Public Module Module1
Public Sub Main()
Console.WriteLine(HasDevice("PointingDevice"))
Console.WriteLine(HasDevice("Keyboard"))
Console.ReadKey()
End Sub
Public Function HasDevice(strtype As String)
Dim searcher As New ManagementObjectSearcher("root\CIMV2", "SELECT * FROM Win32_" + strtype)
Dim result = From mobj In searcher.Get()
Select mobj Where mobj("Status").ToString() = 0
Return Not IsNothing(result)
End Function
End Module
結果
你也硬編碼,以避免輸入錯誤像三合建議(雖然使用C#)
Public Function HasPointingDevice()
Dim searcher As New ManagementObjectSearcher("root\CIMV2", "SELECT * FROM Win32_PointingDevice")
Dim result = From mobj In searcher.Get()
Select mobj Where mobj("Status").ToString() = 0
Return Not IsNothing(result)
End Function
Public Function HasKeyboard()
Dim searcher As New ManagementObjectSearcher("root\CIMV2", "SELECT * FROM Win32_Keyboard")
Dim result = From mobj In searcher.Get()
Select mobj Where mobj("Status").ToString() = 0
Return Not IsNothing(result)
End Function
,並呼籲他們這樣
Public Sub Main()
Console.WriteLine(HasPointingDevice())
Console.WriteLine(HasKeyboard())
Console.ReadKey()
End Sub
他們會產生相同的結果
1
您可以使用C#System.Management
和ManagementObjectSearcher
這裏是一個示例代碼。根據需要進行修改。
public bool isPointingDeviceAttached()
{
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_PointingDevice");
int devCount = 0;
foreach (ManagementObject obj in searcher.Get()) {
if(obj["Status"].ToString().Contains("OK")) // if device is ready
devCount++;
}
return devCount>0;
}
public bool isKeyboardAttached()
{
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_Keyboard");
int devCount = 0;
foreach (ManagementObject obj in searcher.Get()) {
if (obj["Status"].ToString().Contains("OK")) // if device is ready
devCount++;
}
return devCount>0;
}
確保添加using System.Management;
線,並在添加引用System.Management
。 您可以根據需要使用更多的ManagementObject屬性。以下是屬性列表和一些其他外部參考。
相關問題
- 1. LWJGL鍵盤和鼠標檢測按
- 2. 如何檢測Windows Mobile上的鍵盤和/或鼠標輸入?
- 3. 檢查鍵盤和鼠標是否可用於Qt
- 4. 檢測鼠標是否被拖入AppKit
- 5. 如何檢測外接鍵盤是否插入iPad?
- 6. 鍵盤/鼠標輸入C++
- 7. X11:檢測一般鼠標和鍵盤事件
- 8. 禁用鍵盤和鼠標
- 9. 如何檢測鍵盤是否存在
- 10. 檢測鼠標左鍵按
- 11. 使用嵌入PDF檢測iframe中的鼠標和鍵盤事件
- 12. 檢測鍵盤輸入Matlab
- 13. 鍵盤輸入檢測
- 14. 我想在鼠標移動事件中檢測鼠標右鍵或鼠標鍵是否關閉
- 15. 檢測鼠標是否無線
- 16. 如何檢測鼠標是否爲真?
- 17. 以編程方式禁用鼠標和鍵盤
- 18. 檢測是否執行了鍵或鼠標粘貼
- 19. 檢測鼠標左鍵是否在表格之外按住
- 20. 鍵盤輸入與可編程鍵盤
- 21. 鍵盤檢測
- 22. 在發送鼠標左鍵後,檢測鼠標左鍵按下
- 23. 如何檢測 - 鼠標右鍵還是左鍵主要是?
- 24. 是否可以重新編程鍵盤?
- 25. 簡化的鍵盤鼠標:輸入
- 26. 檢測是否基於鼠標和鍵盤交互計算機處於空閒狀態
- 27. 如何以編程方式檢查鍵盤是否連接?
- 28. SendInput發送鼠標輸入和鍵盤輸入
- 29. Autohotkey結合鼠標和鍵盤?
- 30. Sikuli不犧牲鼠標和鍵盤
不是我曾經嘗試過的,但[this](http://www.codeproject.com/Articles/51477/How-to-Get-a-List-of-Non-Working-Devices-Using -VB)也許有用,也許你可以做一些事情使用它來找到鼠標/鍵盤。但不知道。 –