Hotkey für Tastatur?

Xakone47

Mitglied
hi leute ich verstehe das mit den hotkeys nicht wenn einer mir ein kurzes tut machen könnte also zum beispiel bräuchte ich mit "strg + y"und "strg + x" pls hilft mir und rechtsklick hotkey wer auch gut..

es gibt tut hier im forum die so ähnlich sind aber endweder ich habs nicht verstanden oder es hat nicht funktioniert also pls einen ausfürlichen den ich verstehen werde^^

und noch was ich will einfach nur ein button mit einen hotkey verbinden^^

also thx im voraus
 
Zuletzt bearbeitet:
Hallo Xakone47

Ich habe zwar noch nie ein Tut. geschrieben, aber ich liebe es Dinge zu erklären, wenn ich sie weis. (Ich bin halt der "Erklärbär)

Hotkeys macht man sich in VB einfach selbst und zwar folgendermaßen:
Erstmal solltest Du Dir eine Liste der Definitionen der "Ascii Codes" und der "KeyCodes"(die braucht man immer wieder, am Besten gleich kopieren und speichern. http://www.vbarchiv.net/commands/Ascii-Codes.php).

So und nun zu VB...
Es gibt in VB zwei Möglichkeiten, auf Tastatureeingaben zu reagieren.
Mit dem KeyDown/KeyUp und dem KeyPress Ereigniss.

Bei einem Tastendruck wird erst das KeyDown Ereign. ausgelöst dann das KeyUp Ereign...Wenn beides abgeschlossen ist wird das KeyPress Ereign. ausgelöst.

Ein Bsp. für KeyPress:
Code:
'Hier habe ich ein KeyPress Ereigniss an eine TextBox geheftet
Private Sub Text1_KeyPress(KeyAscii As Integer)
'Wenn Du jetzt in der "Text1" Textbox z.B eine "1" eingibst, dann wäre KeyAscii = 49
'jetzt brauchst Du nur noch anfangen auszufiltern.
if KeyAscii = 49 then 'wenn die Taste "1" gedrückt und losgelassen wurde...
  end 'Programm beenden
End Sub

So und jetzt kommt KeyDown/KeyUp.
(Leider habe ich nun nur noch wenig Lust weiter zu tippseln, deshalb... Teil 2 später)
 
Thx aber ich glaube das Hilft mir noch nicht richtig weil ich nichts bisher sodoll versteh sry
ich hoffe das mir einer noch helfen könnte wie schon Gesagt brauche einen hotkey auf strg + y und strg + x
denn ich glaube wenn ich Die weiß dann werde ich den Rest schon schaffen also nochmal Thx im Voraus
 
Zuletzt bearbeitet:
Sagen wir mal so, von mir kriegst du Hilfe wenn du dich an die Netiquette hältst. Besonders diesen Punkt 15 (Schreibstil bzw. Gtoß- und Kleinschreibung) solltest du dir zu Gemüte führen, wenn du das beherrscht meld dich wieder (korrekt).


Der Doc!

PS: Wenn nicht, kann es schnell sein, dass ein Admin/Mod dich einmal verwarnt und dann ausschließt, auf diesen Punkt legen die besonders Wert.
 
Su, Versuch der zweite (wollte schon früher schreiben, da ich aber auch Nachtdienst habe hab ich weg müssen).

Die erste Frage ist, ob du nur die Erkennung im Programm (dein Programm ist Aktiv) oder Systemweit (auch andere Programme können den Focus haben) brauchst.

Wenn es nur dein Programm ist, arbeitest du am besten mit dem KeyDown-Event. Dazu stellst du erst die KeyPreview-Eigenschaft deiner Form auf True, dann werdne alle Tastendrücke erst über die Form gejagt. Mit dem Code
Visual Basic:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
 If Shift And fmCtrlMask And KeyCode = vbKeyX Then
  '<Strg> + <x> wurde gedrückt, ich geb hier eine Messagebox aus
  MsgBox "Supa!"
 End If
End Sub
Alternativ kannst du mit Menus arbeiten, leider muss das Menu aber sichtbar sein.

Wenn du Systemweit auf die Kombi überwachen willst, brauchst du die GetAsyncKeyState-API. Ein Beispiel würde so aussehen:
Visual Basic:
'API-Deklaration:
Private Declare Function GetAsyncKeyState Lib "user32" _
        (ByVal vKey As Long) As Integer

'Die Prozedur:
Sub TastenÜberwachen()
 DoEvents 'Andere Tasts (z.B. Tasten erfassen durch System) zulassen
 If GetAsyncKeyState(vbKeyControl) = -32767 And GetAsyncKeyState(vbKeyX) = -32767 Then
  '<Strg> + <x> wurde gedrückt, ich geb hier eine Messagebox aus
  MsgBox "Supa!"
 End If
End Sub
Diese ganze Abfrage musst du halt nur in einer Schleife laufen lassen (Timer geht auch).

Eine weitere Systemweite Variante wäre das Registrieren eines Shortcuts, ist aber etwas komplexer.


Der Doc!
 
Danke aber ich glaube das funktioniert nicht ich hab das jetzt gemacht aber ich wollte ja nur ein Button verbinden und es funktioniert nicht irgendwie
ich weiß jetzt nicht was ich machen soll.
Help
 
Hi Xakone47,

was genau funktioniert denn nicht? Die Lösungen von den vorherigen Postern, müssen funktionieren. Kriegst du denn wenigstens eine Fehlermeldung?

Dass es einfach so nicht geht ist unglaublich ;)

Ciao:

Adam

PS: Ich kann mich nicht an einen solchen Thread erinnern, den du mir per PN geschrieben hast.
 
Zurück