Autor Beitrag
berniebutt
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mi 13.07.16 14:41 
Ich möchte in einer Anwendung wissen, ob eine Tastatur vorhanden ist oder nicht, um ggfs.
eine virtuelle Tastatur bereitzustellen. Die für Windows10 vorgesehene Methode möchte ich
nicht nutzen, um die Anwendung auch unter Vista/Windows7 lauffähig zu halten.


Zuletzt bearbeitet von berniebutt am Do 14.07.16 11:57, insgesamt 1-mal bearbeitet
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 13.07.16 15:30 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 13.07.16 16:30 
Hallo berniebutt :welcome:

schön, dich hier zu sehen. Du beziehst dich auf deinen Beitrag c-plusplus.net - Abfrage ob Tastatur vorhanden für Vista/Windows7 ?

Ich habe mal jetzt selber ein bißchen gestöbert:
How to check programatically if keyboard is connected or not?
Get the Keyboard Details of Your System in Windows Form
Win32 determining when keyboard is connected/disconnected
Detect keyboard presence in Windows 8 desktop program

Zuersteinmal würde ich den Ansatz mittels WMI ausprobieren (wobei ich nicht weiß, wie sich dieser bei NICHT-USB Keyboards verhält).
Ansonsten müßtest du doch mal die WINAPI bemühen (von C# aus dann entweder per P/Invoke oder C++/CLI).
berniebutt Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Do 14.07.16 11:32 
Ich habe die Lösung gefunden mit:


ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Management;     // vs2010 --> Verweis hinzufügen!
using System.Management.Instrumentation;
// ------------------------------------------------------------------------------------------------
// Prüfen, ob Tastatur vorhanden
// ------------------------------------------------------------------------------------------------
namespace DetectDevice1
{
    public partial class Form1 : Form
    {
        private bool   kbExists = false;
        private string text1 = "", text2 = "";

        public Form1()
        {
            InitializeComponent();
        }
        
        private bool DetectKeyboard()
        {
            bool exists = false;
            ManagementObjectSearcher searcher = 
                new ManagementObjectSearcher("Select Name from Win32_Keyboard");
            foreach (ManagementObject keyboard in searcher.Get())
            {
                if (!keyboard.GetPropertyValue("Name").Equals(""))
                {
                    text2 += "\nKB name:   " + keyboard.GetPropertyValue("Name");
                    exists = true;
                }
            } 
            return exists;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            text1 = "Keyboard exists:      ";
            kbExists = DetectKeyboard();
            if (kbExists) text1 += "YES";
            else          text1 += "NO";
            label1.Text = text1;
            label2.Text = text2;
        }
     }
}


Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt