# bestimmte tasten deaktivieren?



## yovani1896 (11. Oktober 2008)

hi @ all,

ich hätte da mal ne frage, und zwar wollte ich fragen, ob es einen befehl gibt bestimmte tasten der tastatur zu blocken? also zum beispiel die "p" taste oder so... oder kann man auch tastatur folgen wie (strg + alt + entf) blocken?

vielen dank schonmal im voraus

MFG yovani1896

p.s.: ich habe schon gesucht aber nichts besonderes gefunden...


----------



## DosCoder (12. Oktober 2008)

Hi, 
warum möchtest du die Tastatur blocken?  Was ist das Ziel des Programms? Kannst du mal den entsprechenden Codeabschnitt posten? Ich bin sicher, wenn diese Fragen geklärt sind, wird es einfacher sein, dein Problem zu lösen.
Ciao
DosCoder


----------



## yovani1896 (12. Oktober 2008)

ja klar... 
also das ziel meines programmes ist einfach nur, dass ich meinem freund so ein scherz programm mache. das soll dann so ein programm sein, das einen großen button hat und wenn er da drauf klickt, sollen ganz viele msgboxen kommen wo was draufsteht...
nur es sollte halt die kombination strg + alt + entf für ein paar minuten blockieren...
oder es sollte eine tastenkombienation geben, mit der man das wieder aktivieren kann...
(nicht das ihr es falsch versteht... ich will kein "verarsche" virus machen... soll nur so ein witz sein =) )


MFG yovani1896


----------



## DosCoder (12. Oktober 2008)

Hi,
Windows-Kombinationen zu blocken geht leider mit VB nicht. Einfachste Lösung, wäre. die Tastatur  von PC zu entfernen, oder eine der 3-Tasten auszubauen und den taster zu manipulieren. (Ich  übernehme keine Haftung für defekte Tastaturen)
Ciao
DosCoder


----------



## yovani1896 (12. Oktober 2008)

also kann man bestimmte tasten nicht deaktivieren? zb. nur die alt taste oder ähnliches


MFG yovani1896


----------



## Zvoni (13. Oktober 2008)

DosCoder hat gesagt.:


> Hi,
> Windows-Kombinationen zu blocken geht leider mit VB nicht.



Geht doch, nur ist das für nen Anfänger heftiger Tobak.
Stichwort: System-Hook


----------



## DrSoong (13. Oktober 2008)

Die Kombination <Strg>+<Alt>+<Entf> lässt sich überhaupt nicht blocken, da wäre schon ein verdammt tiefer Eingriff ins System erforderlich. Man kann aber Tastatur und Maus komplett blocken, wie steht hier, hier noch eine Ergänzung.

Da darfst du dann aber nicht vergessen, die auch wieder freizugeben (z.B. nach einer gewissen Zeitspanne), sonst hilft nur mehr der Resetknopf.


Der Doc!


----------



## yovani1896 (14. Oktober 2008)

DrSoong hat gesagt.:


> Man kann aber Tastatur und Maus komplett blocken, http://www.activevb.de/tipps/vb6tipps/tipp0413 wie steht hier.



könnte mir vielleicht jemand erklären, was da alles passiert? also was zb. aussagt, wie lange die tastatur dann gesperrt ist? ich bin noch neu in dieser programmiersprache =)

MFG yovani1896


----------



## DosCoder (14. Oktober 2008)

hi 

```
Option Explicit

Private Declare Function BlockInput Lib "user32" (ByVal fBlock As Long) As Long 'Funktion, die die Tastatur blockt

Const API_FALSE As Long = 0&
Const API_TRUE As Long = 1&

Private Sub Command1_Click() 'Button zum aktivieren der Deaktivierung
    Timer1.Interval = 500            'Timer(s. u.) wird alle 500 millisiekunden aufgerufen
    Timer1.Enabled = True         'Timer wird gestartet
    Call BlockInput(API_TRUE)   'Tastatur wird geblockt. Parameter sagt: blocken
End Sub

Private Sub Timer1_Timer() 'Timer
    Static Cnt As Long 'STATIC sorgt dafür, dass die Variable nach verlassen der Methode erhalten bleibt
    
    Cnt = Cnt + 1
    If Cnt > 10 Then 'wenn die Prozedur 10 mal durchlaufen wurde dann ...
        Cnt = 0 
        Timer1.Enabled = False ' Timer stoppen
        Call BlockInput(API_FALSE) 'Tastaturblockade wird aufgehoben. Parameter sagt: Aktivieren
        Label1.Caption = ""
    Else 'sonst
        Label1.Caption = "Verbleibende Zeit bis zur Rückstellung: " _
                         & Format$(CStr((10 - Cnt)) / 2, "0.0") 'Ausgabe der Zeit
        
    End If
End Sub
```
In diesem Fall wird die Blockade alle 500 mls aufgerufen. Die Gesamtzeit errechnet sich durch 500 mls * 10 = 5000 mls = 5 sek.
Ciao
DosCoder


----------



## yovani1896 (14. Oktober 2008)

Das heißt also, dass wenn ich in dieser zeile:

Timer1.Interval = 500

die 500 zur 50000 machen würde, wäre die tastatur für 500 sekunden geblockt?
wenn das so ist kann ich doch den code übernehmen... nur was müsste ich alles in die form packen? wie viele timer etc. ?

ps: vielen dank schonmal an alle wart ne große hilfe für mich =)


MFG yovani1896


----------



## DosCoder (14. Oktober 2008)

hi
erstelle einfach ein neues Projekt, setze einen Button und einen Timer drauf und schreib den jeweiligen Code einfach die Subs, die du erhälst, wenn du einen Doppelklick auf die Komponenten machst. Es reicht ein Timer und ja, die Tastatur ist 500 sek geblockt.

PS: Wenn du dich bedanken willst, dann gib allen ein Renomee.

Ciao
DosCoder


----------

