Visual Basic Forum

Visual Basic Forum
für VB6 und VB.NET Programmierer
 
RegistrierenRegistrieren  LoginLogin
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB.NET] Fragen - Antworten
Autor
Nachricht
bla
Coder
Coder

Anmeldedatum: 02.05.2008
Beiträge: 267

Hotkeys benutzerdefinieren...
Verfasst am: 10.09.2008, 14:09

hi,
wie kann ich einen hotkey vom user selbst bestimmen lassen?
hotkey sollte aus operator + taste bestehen: z.B.: strg+F1

strg, alt, shift kann man ja als operatoren in eine combobox packen und mit select case auswerten.

aber wie mach ich das mit zahlen, buchstaben, sondertasten, ziff.block... ?
die kann man ja schlecht in ner combobox packen -.-

hab mir gedacht per keypressed-event oder so... kA. aber ich müsste die dann iwie in keys.? konvertieren. da weiß ich aber auch nicht wie man das machen könnte.

kennt sich da jmd mit aus?
 
KleinesVoodoo
Coder
Coder

Anmeldedatum: 17.04.2008
Beiträge: 78


Verfasst am: 10.09.2008, 14:34

IsNumeric() und Operatoren (Kleiner 10, größer -1).
Dann einfach in die dazugehörige Keycode-Konstante umwandeln.
 
sollniss
Überflieger
Überflieger

Anmeldedatum: 01.05.2008
Beiträge: 699


Verfasst am: 10.09.2008, 18:06

Vll. auch ganz brauchbar:
http://www.vbarchiv.net/tipps/details.php?id=537
 
bla
Coder
Coder

Anmeldedatum: 02.05.2008
Beiträge: 267


Verfasst am: 10.09.2008, 20:31

hab was rausgefunden: AscW(Chr(...)) wandelt keycodes in "keys" um...

aber jetzt n problem:

Visual Basic: [code]Private Sub Form1_KeyUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyUp
Label3.Text = Chr(e.KeyCode)
End Sub[/code]

wieso wird dann im label, wenn ich zB. F1 drücke, ein "p" angezeigt?
 
sollniss
Überflieger
Überflieger

Anmeldedatum: 01.05.2008
Beiträge: 699


Verfasst am: 11.09.2008, 14:14



?!?!?
 
KleinesVoodoo
Coder
Coder

Anmeldedatum: 17.04.2008
Beiträge: 78


Verfasst am: 11.09.2008, 15:53

(bla;8216)
wieso wird dann im label, wenn ich zB. F1 drücke, ein "p" angezeigt?


Weil das

(bla;8216)
hab was rausgefunden: AscW(Chr(...)) wandelt keycodes in "keys" um...

so nicht stimmt.

Du wandelst innerhalb der ersten Klammer eine Ascii Id in das dazugehörige Zeichen um und mit AscW wieder in einen Ascii-Identifier. Very Happy

Vielleicht hier mal vorbeischauen und dann eine entsprechende Funktion schreiben.

Visual Basic: [code]Function StringToKeyCode(sKey As String) As Long
Dim lKeyCode As Long = 0

Select Case UCase(sKey)
Case "A"
lKeyCode = A
Case "Shift"
lKeyCode = ShiftKey
End Select

Return lKeyCode
End Functionn[/code]
Stimmt das so für VB.NET?

Übrigens, in deine Textbox würde ich dann grundsätzlich nichts eingeben lassen. Nur über Tastendruckerkennung mit eben diesen Keycodes. Wink
 
bla
Coder
Coder

Anmeldedatum: 02.05.2008
Beiträge: 267


Verfasst am: 11.09.2008, 17:06

Zitat:
Zitat von bla
wieso wird dann im label, wenn ich zB. F1 drücke, ein "p" angezeigt?

Weil das

Zitat:
Zitat von bla
hab was rausgefunden: AscW(Chr(...)) wandelt keycodes in "keys" um...

so nicht stimmt.


_______

aber das eine hat doch nichts mit dem anderen zu tun :confused:

es geht ja darum, dass falsche ascii werte ausgegeben werden wenn man auf die form ne taste drückt...

Visual Basic: [code]Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.KeyPreview = True
End Sub
Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
MsgBox(e.KeyCode & "|" & Chr(e.KeyCode))
End Sub[/code]

das kann doch eigentlich nicht -.-
 
KleinesVoodoo
Coder
Coder

Anmeldedatum: 17.04.2008
Beiträge: 78


Verfasst am: 11.09.2008, 17:35

Die Keycodes sind zwar an Ascii angelehnt, aber nicht gleich. Geht ja auch gar nicht, da es beispielsweise für F12 kein Character gibt.
 
bla
Coder
Coder

Anmeldedatum: 02.05.2008
Beiträge: 267


Verfasst am: 11.09.2008, 17:53

und wie kann man dann auswerten, welche taste gerade gedrückt wurde? (also für alle tasten)
 
KleinesVoodoo
Coder
Coder

Anmeldedatum: 17.04.2008
Beiträge: 78


Verfasst am: 11.09.2008, 18:02

Überprüfen, ob die Tasten, die du unterstützen willst, gerade gedrückt werden.

Visual Basic: [code]Sub Some_Simple_Sample()
If GetAsyncKeyState(StringToKeyCode("A")) And GetAsyncKeyState(StringToKeyCode("Shift")) Then
Text1.Text = "Shift+A"
ElseIf GetAsyncKeyState(StringToKeyCode("Shift")) Then
Text1.Text = "Shift"
ElseIf GetAsyncKeyState(StringToKeyCode("A")) Then
Text1.Text = "Shift+A"
End If
End Sub[/code]
Wenn du nicht immer den Textboxinhalt überprüfen willst, kannst du ja noch Konstanten für alle Möglichkeiten und eine globale Variable deklarieren.
 
bla
Coder
Coder

Anmeldedatum: 02.05.2008
Beiträge: 267


Verfasst am: 11.09.2008, 18:45


puh, dadurch wird der src ja endlos lang [img]/sad.gif[/img] Very Happy
 
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB.NET] Fragen - Antworten

Tags: hotkeys, bestimmen, packen, hotkey, zahlen

 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Wichtig: Filebrowser z.B. für ein RAT 2204 13.01.2008, 12:14
Keine neuen Beiträge msgbox mit symbol _&_ z.B. yesno oder systemmodal 1156 27.09.2008, 00:16
Keine neuen Beiträge Abändern eines Ordnernamens (z.B. C:\Programme = Programme) 1294 23.04.2008, 16:33
Keine neuen Beiträge "Zurück-Funktion" mit Listview und z.B. DirView 823 17.04.2008, 14:30
Keine neuen Beiträge Fenster auslesen z.b von icq oder msn wer online kommt 1336 11.02.2008, 17:46
 


[ Time: 0.0721s ][ Queries: 112 (0.0245s) ][ GZIP on - Debug on ]