Autor |
Beitrag |
Ak-Alex
Gast
Erhaltene Danke: 1
|
Verfasst: Sa 05.04.03 00:27
Hallo!
Habe mal wieder ein kleines Problem...
Habe bisher ein Programm geschrieben mit dem ich alle Leds über der Numernblock an und ausschalten kann. Das geschieht bis jetzt über 2 Buttons, einer für ein und der andere für aus.
Jetzt möchte ich, dass in einer Schleife die lichter immer wieder an und aus gehen, bis ein bestimmtes ereignis eintritt. Wie mache ich das?
Hier mein Code:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56:
| implementation
{$R *.dfm} type TKeyType = (ktCapsLock, ktNumLock, ktScrollLock);
procedure SetLedState(KeyCode: TKeyType; bOn: Boolean); var KBState: TKeyboardState; Code: Byte; begin case KeyCode of ktScrollLock: Code := VK_SCROLL; ktCapsLock: Code := VK_CAPITAL; ktNumLock: Code := VK_NUMLOCK; end; GetKeyboardState(KBState); if (Win32Platform = VER_PLATFORM_WIN32_NT) then begin if Boolean(KBState[Code.]) <> bOn then begin keybd_event(Code, MapVirtualKey(Code, 0), KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(Code, MapVirtualKey(Code, 0), KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0); end; end else begin KBState[code.] := Ord(bOn); SetKeyboardState(KBState); end; end;
procedure TForm1.Button1Click(Sender: TObject); begin SetLedState(ktCapsLock, True); // CapsLock on SetLedState(ktNumLock, True); // NumLock on SetLedState(ktScrollLock, True); // ScrollLock on end;
procedure TForm1.Button2Click(Sender: TObject); begin SetLedState(ktCapsLock, False); // CapsLock on SetLedState(ktNumLock, False); // NumLock on SetLedState(ktScrollLock, False); // ScrollLock on end;
end. |
Moderiert von UGrohne: Quote-Tags durch Code-Tags ersetzt und Code sinnwahrend gekürzt (bitte keine kompletten Units posten, wenn nicht dringend notwendig!)
Moderiert von Aya: mußte das [code] im Text durch [code.] ersetzen, wegen BB Formatierung.
|
|
Aya
Beiträge: 1964
Erhaltene Danke: 15
MacOSX 10.6.7
Xcode / C++
|
Verfasst: Sa 05.04.03 03:53
Hi,
ich würd's so machen:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| var StopLED, LED: Boolean;
procedure LEDBlink(Time: Integer); begin while not StopLED do begin LED:=not LED; SetLedState(ktCapsLock,LED); SetLedState(ktNumLock,LED); SetLedState(ktScrollLock,LED); Sleep(Time); end; end; |
Au'revoir,
Aya
_________________ Aya
I aim for my endless dreams and I know they will come true!
|
|
ShadowCaster
Beiträge: 312
|
Verfasst: Mo 07.04.03 13:19
EINFACH GEIL.... !!
habs probiert... und funzt echt klasse. Schnöne Spielerrei wenn man jemanden ärgern will..
|
|
Motzi
Beiträge: 2931
XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
|
Verfasst: Mo 07.04.03 14:29
@Aya: sofern dein Code aber nicht in einem separaten Thread läuft kommt man nicht mehr aus der Schleife raus...
_________________ gringo pussy cats - eef i see you i will pull your tail out by eets roots!
|
|
Aya
Beiträge: 1964
Erhaltene Danke: 15
MacOSX 10.6.7
Xcode / C++
|
Verfasst: Mo 07.04.03 17:00
doch, sobald man StopLED true setzt...
(Ok, dürfte schwer werden weil das Programm dauer ausgelastet is.. *g* aber.. mit ProzessMessages sollte das gehen, wenn nich halt extra Thread oder einfach anstelle von Sleep nen Timer)
Au'revoir,
Aya~
_________________ Aya
I aim for my endless dreams and I know they will come true!
|
|
Motzi
Beiträge: 2931
XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
|
Verfasst: Mo 07.04.03 19:35
Aya hat folgendes geschrieben: | (Ok, dürfte schwer werden weil das Programm dauer ausgelastet is.. *g* aber.. mit ProzessMessages sollte das gehen, wenn nich halt extra Thread oder einfach anstelle von Sleep nen Timer) |
Genau das meinte ich...!
_________________ gringo pussy cats - eef i see you i will pull your tail out by eets roots!
|
|
Aya
Beiträge: 1964
Erhaltene Danke: 15
MacOSX 10.6.7
Xcode / C++
|
Verfasst: Mo 07.04.03 19:40
Motzi hat folgendes geschrieben: | Aya hat folgendes geschrieben: | (Ok, dürfte schwer werden weil das Programm dauer ausgelastet is.. *g* aber.. mit ProzessMessages sollte das gehen, wenn nich halt extra Thread oder einfach anstelle von Sleep nen Timer) |
Genau das meinte ich...! |
Nun ja, aber ich kaue ungern jedem wirklich alles bis auf's letzte Detail vor..
Ich beantworte das, was man mich fragt... schließlich soll der Fragende ja seler noch nen bissel denken. (Ich beantworte auch fragen, wenn ich weiß das die Antwort sinnlos, bzw falsch ist... denn der Fragende soll selber drauf komme nwas er machen muß, und ggf. nochmal danach fragen So lernt er aufjedenfall mehr)
Au'revoir,
Aya~
_________________ Aya
I aim for my endless dreams and I know they will come true!
|
|
|