Seite 1 von 1

Abfrage, ob gewisse Taste gedrückt wurde

Verfasst: 02.02.2006 19:12
von willy-billy
Hallo,
wie kann ich abfragen, ob inzwischen die Taste F8 gedrückt wurde? Die Taste F8 soll für einen Abbruch des Programms sorgen.
Bitte denkt dran: Bin Anfänger, d.h. eine möglichst einfache Lösung.

Anmerkung: Die Meldungen sind nur als Beispiel gedacht.

Code: Alles auswählen

;Scherzprogramm
;
y.l = 1 ; Beginn der Schleife = 1
a.l = 5 ; Zufallswert für die 5 Zufallszahlen
k.l = 0
j.l = 0
i.l = 0
h.l = 0
g.l = 0
f.l = 0




SCHLEIFE1:
For x = y To 50
 e = Random(a.l)+1

If e = f Or e = g Or e = h Or e = i Or e = j Or e = k Or e = l Or e = m Or e = n Or e = o 
  y = x
        Goto SCHLEIFE1
 EndIf

;b.l = 2000000+Random(3000000)      ; Wert ohne Verzögerung (Delay) Echtzeitbetrieb, Zeit in 1/1000 Sekunden, d.h. zwischen 2000 und 5000 Sekunden
;b.l = 20000+Random(30000)          ; Wert ohne Verzögerung (Delay) für Testzwecke, Zeit in 1/1000 Sekunden, d.h. zwischen 20 und 50 Sekunden
;b.l = 8000+Random(12000)           ; Wert mit Verzögerung (Delay) Echtzeitbetrieb in 1/4 Sekunden (250 Millisekunden), d.h. zwischen 2000 und 5000 Sekunden
b.l = 80+Random(120)               ; Wert mit Verzögerung (Delay) für Testzwecke in 1/4 Sekunden (250 Millisekunden), d.h. zwischen 20 und 50 Sekunden

; SCHLEIFE2
For t = 1 To b.l Step 1
u=t*250/1000
Delay(250)
                                    ; hier müsste die Abfrage, ob F8 gedrückt wurde, herein. Kann durch die Verzögerung jede 1/4 Sekunde abgefragt werden.

Next


 
If e = 1
  MessageRequester("Drucker-Warnmeldung!", "Der Druckkopf versagt wegen eines"+Chr(10)+"schweren Problems. Bitte kaufen Sie"+Chr(10)+"einen neuen leichten Drucker.", #PB_MessageRequester_Ok)
ElseIf e = 2
  MessageRequester("Druckköpfe reinigen!", "Sie müssen die Druckköpfe reinigen!"+Chr(10)+"Am besten schlecken Sie sie mit der Zunge ab!"+Chr(10)+"Oder Sie gehen mit ihnen schwimmen!", #PB_MessageRequester_Ok)
ElseIf e = 3
  MessageRequester("Drucker-Warnmeldung!", "Der schwarzweisse Druckkopf muss demnächst"+Chr(10)+"ausgetauscht werden."+Chr(10)+"Am besten kaufen Sie sofort einen neuen Drucker.", #PB_MessageRequester_Ok)
ElseIf e = 4
  MessageRequester("Drucker-Warnmeldung!", "Der magentablaue Druckkopf muss demnächst"+Chr(10)+"ausgetauscht werden."+Chr(10)+"Am besten kaufen Sie sofort einen neuen Drucker"+Chr(10)+"mit einem blaumagenta Druckkopf.", #PB_MessageRequester_Ok)
ElseIf e = 5
  MessageRequester("Drucker-Warnmeldung!", "Der cyanrote Druckkopf muss demnächst"+Chr(10)+"ausgetauscht werden."+Chr(10)+"Am besten kaufen Sie sofort einen neuen Drucker"+Chr(10)+"mit einem rotcyanen Druckkopf.", #PB_MessageRequester_Ok)
ElseIf e = 6
  MessageRequester("Feierabend!", "Sie haben Glück gehabt!"+Chr(10)+"Dieses nervige Programm ist endlich zu Ende."+Chr(10)+"Schade, dass jetzt Feierabend ist.", #PB_MessageRequester_Ok)
  End
  
                                    ; hier sind in Wirklichkeit mehr Fehlermeldungen!!! Deshalb unten auch mehr Überprüfungen!
EndIf
o = n
n = m
m = l
l = k
k = j
j = i
i = h
h = g
g = f
f = e

Next 


End
Edit by NicTheQuick: Code-Tags gesetzt

Verfasst: 02.02.2006 20:15
von Icke

Code: Alles auswählen

...
  If GetAsyncKeyState_(#VK_F8)
    End
  EndIf
...
Gilt dann aber auch wenn ein anderes Fenster den Focus hat.

Verfasst: 02.02.2006 20:26
von edel
Vielleicht reicht das ja schon :

Code: Alles auswählen

  ; // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/UserInput/VirtualKeyCodes.asp

  Repeat
    event = WaitWindowEvent()  
    
    If #WM_KEYUP = event
      
      If EventwParam() = #VK_F8
        MessageRequester("","F8")
      EndIf 
      
    EndIf      
  Until event = #WM_CLOSE