Tastendruck in Visual Basic 10 einbringen

Peybro

Grünschnabel
"Key" in Visual Basic 2010 deklarieren

Hallo ihr,
ich möchte gerne in Visual Basic 2010 eine Deklaration für "Key" o.Ä. einbringen, sodass ich
Code:
If My.Computer.Keyboard.CtrlKeyDown AndAlso My.Computer.Keyboard.AltKeyDown andalso Key "Z" Then
         Me.Show()
End If
...benutzen kann.
Im mOment würde da dann stehen, dass ich den Begriff Key noch nich deklariert habe...
Weis einer von euch vielleicht, wie ich das mache?
 
Zuletzt bearbeitet:
Hallo Peybro,

das ist so Ohne weiteres nicht möglich.
Das Problem ist, dass ein Formular nur dann KeyStrokes empfängt, wenn es aktiv ist.
das heist, du musst ein Formular geöffnet und aktiv haben, das auf die Eingaben reagieren kann und kannst dann ein anderes Formular öffnen.


Dazu must du zuersteinmal die Property "KeyPreview" deines Formulars auf "True" setzen, damit das Formular überhaupt die Tastatureingaben verarbeiten kann.

Anschließend registrierst du das Event KeyDown des Formulars.
in diesem Event kannst du die Keys abfragen.
in deinem Falle würde der so aussehen:
Code:
private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Control && e.Alt && e.KeyCode == Keys.Z)
            {
                this.MyForm.Show();
            }
        }

Wenn du allerdings kein Formular hast, das aktiv im vordergrund liegt und die Eingaben empfangen kann, bleibt dir nur übrig im Betriebssystem einen Hotkey zu Registrieren, der vom Betriebssystem aus verwaltet wird.

Wie das geht, kannst du dir hier ansehen.

Gruß
10110010
 
Wieso ist es dann möglich beispielsweise
Code:
My.Computer.Keyboard.CtrlKeyDown
zu Benutzen? Das geht dann auch wenn die Anwendung im Hintergrund liegt...
 
Hallo Peybro,

wie gedenkst du den diese Property zu verwenden?
Du müsstest dazu einen Hintergrund Thread laufen lassen, der permanent prüft, ob die Taste gedrükt ist.
Ergo musst du selber die Prüfung übernehmen.
In dem oberen Fall würde das Windows für dich machen und dich einfach benachrichtigen, wenn diese Kombination gedrückt wird.

Was machst du wenn im Betriebssystem eine von dir angegebene Kombination bereits existiert?
wenn du es über die Native-API machst, wird die Kombination nur ein mal registriert werden und bei einem weiteren male erhällst du eine Fehlermeldung.

Für die, die in c# Programmieren exestiert der zugriff auf "My" nicht. um über c# darauf zugreifen zu wollen müsste man sich erst die "Microsoft.VisualBasic" Referenz einbinden :mad: und eine neue Instanz von "Microsoft.VisualBasic.Devices.Computer" instanzieren um auf die Property Keyboard zugreifen zu können.

Der Optimalere Weg währe die Native-API zu verwenden.

Gruß
10110010
 
Zuletzt bearbeitet:
Zurück