[B3D,B+] KeyDown und MouseDown ohne Dll simulieren
Übersicht

![]() |
Der EisvogelBetreff: [B3D,B+] KeyDown und MouseDown ohne Dll simulieren |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo
An alle, bei denen das hier nicht funktioniert, wie es bei mir der Fall ist. Ich habe diese Funktion für mein jetztiges Projekt gebraucht, und habe mich sehr geärgert, dass das mit der Dll-Funktion bei mir nicht funktioniert. Deswegen habe ich mir die Zeit genommen, mir selber eine solche Funktion zu schreiben. Da hab ich mir gedacht ihr könntet sie clt. auch gebrauchen. Ihr müsst nur Die Befehle: Code: [AUSKLAPPEN] KeyHit(code)
KeyDown(code) MouseHit(code) MouseDown(code) gegen diese eintauschen: Code: [AUSKLAPPEN] KeyHitEx(code)
KeyDownEx(code) MouseHitEx(code) MouseDownEx(code) Wenn ihr die Befehle eingesetzt habt, ist die Tastatur immernoch aktiv. Jetzt wird es Zeit euch die Funktionen zu geben. Bitte: Code: [AUSKLAPPEN] Dim keys(237)
Dim mouse(3) Function KeyHitEx(code) If code>237 Then code=237 If keys(code)=1 Then keys(code)=2 Return True Else Return KeyHit(code) EndIf End Function Function KeyDownEx(code) If code>237 Then code=237 If keys(code)=1 Or keys(code)=2 Then Return True Else Return KeyDown(code) EndIf End Function Function PressKey(code,down) If code>237 Then code=237 If down=True Then keys(code)=True Else keys(code)=False EndIf End Function Function MouseHitEx(code) If code>3 Then code=3 If mouse(code)=1 Then mouse(code)=2 Return True Else Return MouseHit(code) EndIf End Function Function MouseDownEx(code) If code>3 Then code=3 If keys(code)=1 Or mouse(code)=2 Then Return True Else Return MouseDown(code) EndIf End Function Function PressMouse(code,down) If code>3 Then code=3 If down=True Then mouse(code)=True Else mouse(code)=False EndIf End Function Und jetzt noch ein Anwendungsbeispiel: Code: [AUSKLAPPEN] Include "include.bb"
SetBuffer BackBuffer() Repeat Cls If KeyHitEx(57) Then Color 255,0,0 : Rect 10,10,100,100,1 If KeyDownEx(57) Then Color 0,255,0 : Rect 120,120,100,100,1 If KeyHitEx(28) Then PressKey(57,True) If KeyHitEx(54) Then PressKey(57,False) Delay 100 Flip Until KeyDownEx(1) Delay 100 Repeat Cls If MouseHitEx(1) Then Color 255,0,0 : Rect 10,10,100,100,1 If MouseDownEx(1) Then Color 0,255,0 : Rect 120,120,100,100,1 If KeyHitEx(28) Then PressMouse(1,True) If KeyHitEx(54) Then PressMouse(1,False) Delay 100 Flip Until KeyDownEx(1) End In "include.bb" müssen die Funktionen abgespeichert werden. Erläuterung des Anwendungsbeispiels: Ihr könnt jetzt entweder die Leertaste selber drücken oder die Entertaste, um dem Computer das drücken der Leertaste zu überlassen. Jetzt dürfte ein rotes Quadrat aufblitzen und wieder verschwinden und ein Grünes ist solange zu sehen bis die Taste wieder losgelassen wird. Wenn ihr die Taste vom Computer habt drücken lassen, dann könnt ihr sie mit Shift wieder loslassen. Wenn ihr jetzt ESC drückt, dann spielt sich das Ganze nochmal ab, aber diesmal kann die Maus simuliert werden. Zum Schluss noch ein Download-Packet: Download-Packet Ich wünsche euch viel Spaß damit. MfG Der Eisvogel |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
FWeinbehemals "ich" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das ist aber nicht das gleiche was die DLL macht oder sehe ich das falsch ? ![]() Die Dll ermöglicht es doch das die Tasten auch in anderen Programmen gedrückt wird und nicht nur im Eigenen ? mfg ich |
||
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs |
Marek |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Richtig. Die Dll verursacht einen realen virtuellen Tastendruck, während der code hier einen virtuellen virtuellen Tastendruck verursacht der nur Programmintern verfügbar ist. Zu dem, warum sollte die Funktion nicht funktionieren? Im prinzip müsste sie immer funtzen :confused:
MfG |
||
Wer lesen kann ist klar im Vorteil... |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, es geht nur im eigenen Programm, ich hbrauche es auch nur für mein Programm. Zum Thema das es bei jedem funktioniert: Bei mir geht es nicht. Es wusste auch niemand woran das liegen könnte. | ||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group