Seite 1 von 1

Tastaturabfrage

Verfasst: Di 31. Jul 2007, 03:10
von ws1964
Hallo,

Ich suche nach einem Befehl oder ähnlichem, der mir die Tastatur abfragt und mir einen Tastencode (ASCII-Code) zurück gibt.
Das soll aber nicht über grafische Objekte erfolgen wie Textboxen o.ä..
Ich möchte eine kleine Funktion schreiben, die solange wartet, bis eine Taste gedrückt wird und den Funktionsnamen dann den Tastencode zurück gibt. Das soll dann ein Kommandozeilenprogramm werden.

Gibt es einen Befehl, der nur einfach auf einen Tastendruck wartet?

Danke

Wolf

Verfasst: Fr 3. Aug 2007, 11:30
von roemi
Du meinst als Dienst der im Hintergrund läuft?
Da gibt es was von Ratiopharm ... neee, im Ernst.

Was hast Du denn vor?

(Sorry, aber ich kann mich erst am Sonntag wieder melden)

Verfasst: Sa 4. Aug 2007, 18:39
von ws1964
roemi hat geschrieben:Du meinst als Dienst der im Hintergrund läuft?
...
Was hast Du denn vor?

(Sorry, aber ich kann mich erst am Sonntag wieder melden)
Hallo,
Danke für die Antwort.
Also was habe ich vor.

Ich will einfach eine ganz normale Funktion schreiben, die mir als Rückgabe den Tastencode einer beliebigen Taste liefert.
Dies soll aber ohne Fenster o.ä. Schnickschnack laufen.
Dieses Programm will ich aus einem Linux-Script aufrufen, die Funktion wartet bis eine Taste gedrückt ist und gibt dann über den Funktionsnahmen den T-Code zurück.

Ein Beispiel-Code aus BASIC-Urzeiten:

Code: Alles auswählen

Function TastenCode () as String
 
dim Taste as String

 Taste=Inkey$  : REM Tastatur abfragen
 TastenCode=Taste : REM Code an den Funktionsnamen übergeben

End  Function
Ich weiss, bei Gambas heißt dass:

Code: Alles auswählen

RETURN Taste
Aber deswegen :"Basic-Urzeiten". :-)

Danke Wolf

Verfasst: Mo 6. Aug 2007, 09:20
von roemi
Sorry, da muss ich passen.
Bis dato habe ich das ganze nur innerhalb einer Gambas-Form praktiziert.
Da aber dann so:

Code: Alles auswählen

PUBLIC SUB txtergebnis_KeyPress()
'die eingabe auf gültigkeit prüfen

    SELECT CASE key.Code

        CASE key.Enter
            aufgabepruefen()
        CASE key.Return
            aufgabepruefen()
        CASE key.BackSpace
        CASE 44
            ',
            'ist bereits ein komma da ....
            IF InStr(ME.txtergebnis.Text, ",") THEN STOP EVENT
            'steht das komma an erster stelle ...
            IF Len(ME.txtergebnis.Text) = 0 THEN ME.txtergebnis.text = "0"
            'folgt das komma einem - ...
            IF Len(ME.txtergebnis.Text) = 1 AND ME.txtergebnis.Text = "-" THEN STOP EVENT
        CASE 45
            '-
            'darf nur an die erste stelle ...
            IF Len(ME.txtergebnis.Text) <> 0 THEN STOP EVENT
        CASE 48
            '0
        CASE 49
            '1
        CASE 50
            '2
        CASE 51
            '3
        CASE 52
            '4
        CASE 53
            '5
        CASE 54
            '6
        CASE 55
            '7
        CASE 56
            '8
        CASE 57
            '9
        CASE 4103
            ME.txtergebnis.clear
        CASE ELSE
            STOP EVENT
    END SELECT
END
Ich glaube zwar nicht, aber vielleicht hilft es.

Verfasst: Mo 6. Aug 2007, 11:38
von ws1964
Hallo,
Danke für Deine Hilfe.
Ja, dass kenne ich schon. Wollte aber den Tastendruck ohne Form abfragen. Ich versuchs mal, in dem ich einfach die Form nicht anzeige, sie also im "Verdeckten" belasse.

Wolf