KeyDown und MouseDown "simulieren"

Übersicht BlitzBasic DLLs und Userlibs

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

simi

Betreff: KeyDown und MouseDown "simulieren"

BeitragSo, Sep 05, 2004 19:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
ich glaube es wurde schon ein paar mal gefragt, wie man einen Tastendruck simulieren kann. Hier die Lösung:

Die .decls Datei:
Code: [AUSKLAPPEN]

.lib "user32.dll"
Presskey(K%,S%,F%,E%):"keybd_event"

und hier ein Bespiel:
Code: [AUSKLAPPEN]

Const VK_H = 72
Const VK_E = 69
Const VK_L = 76
Const VK_O = 79
Const KEYEVENTF_KEYUP = $2

Presskey VK_H,0,0,0
Presskey VK_H,0,KEYEVENTF_KEYUP,0


Man sollte immer immer wieder KeyUp ausführen, sonst wenn man die Taste Shift "simuliert", markiert man plötzlich alle Zeilen...
Hier findest du die Virtual Key-Codes...


Das gleiche geht auch mit der Maus:

Hier die decls:
Code: [AUSKLAPPEN]

.lib "user32.dll"
ChangeMouse(F%,dx%,dy%,D%,S%):"mouse_event" ;Mir fiehl kein besserer Name ein....


So, und nun ein Bespiel:
Code: [AUSKLAPPEN]

Const ME_LDOWN = $2
Const ME_LUP = $4
Const ME_MDOWN = $20
Const ME_MEUP = $40
Const ME_MOVE = $1
Const ME_ABSOLUTE = $8000
Const ME_RDOWN = $8
Const ME_RUP = $10

ChangeMouse ME_LDOWN or ME_LUP,0,0,0,0   ;simuliert einen Normalen Mauklick
ChangeMouse ME_MOVE,100,100,0,0   ;Verschiebt die Maus um 100 Pixel nach rechts und unten


Auch hier sollte man immer DOWN und UP miteinander kombinieren, sonst kommt es auch zu Problemen...

cu simi

P.S: Von hier hab ichs: http://www.mentalis.org/agnet/apiguide.shtml
  • Zuletzt bearbeitet von simi am So, März 06, 2005 17:24, insgesamt 2-mal bearbeitet

TheProgrammer

BeitragMo, Sep 06, 2004 16:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi.

Coole Lib. (Brauche ich
nämlich gerade bei meinem Projekt)

Eine Frage: Kannste mal die einzelnen
Parameter und Werte erklären?

und:

Code: [AUSKLAPPEN]

Const KEYEVENTF_KEYUP = &H2


gibt Fehler aus (&H2)
aktuelles Projekt: The last day of human being

simi

BeitragMo, Sep 06, 2004 17:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Musst das &H wegnehmen, und durch ein $ erstzen (&H ist für C)

Wie alles ist weiss ich auch nicht genau....

Also bei Presskey musst du zuerst den Tastencode angeben (<> Asciicode <> Scancode(Ich suche noch nach einer guten Tabelle))
der 2. und 4. Parameter muss null sein.
Der 3. gibt an ob die Taste angeschlagen(0) oder losgelassen wird(2).
also: Presskey Tastencode,0,drücken(0)/loslassen(2),0


Zur Maus:
Code: [AUSKLAPPEN]

Const ME_LDOWN = $2        ;Linke Maustaste drücken
Const ME_LUP = $4             ;Linke Maustaste loslassen
Const ME_MDOWN = $20     ;Mittlere Maustaste drücken
Const ME_MEUP = $40         ;Mittlere Maustaste loslassen
Const ME_MOVE = $1          ;Maus bewegen
Const ME_ABSOLUTE = $8000    ;Absolute Mauskordinaten bei Bewegung
Const ME_RDOWN = $8       ;Rechte MAustaste drücken
Const ME_RUP = $10           ;Rechte Maustaste loslassen


1. Parameter: Eine von diesen Konstanten
2. Parameter: bei MOVE X-bewegung oder neue X-Koordinate(Bei ABSOLUTE)
3. Parameter: Y-Bewegung/Koordinate
4.Parameter: Wäre für Scrollrad, hab noch nicht rausgefunden, wies geht...
5. Parameter: Unwichtig Very Happy (0)

cu simi

TheProgrammer

BeitragMo, Sep 06, 2004 17:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Ach so. Danke.
(Brauch ich nämlich, um den Spielverlauf
aufzunehmen und wiederzugeben. Dabei
werden nur die gedrückten Tasten gespeichert
und bei der Wiederholung "simuliert")

PS.: Solltest du jetzt nicht im Klassenlager
sein?
aktuelles Projekt: The last day of human being
 

ZAiMoN

BeitragSa, Okt 09, 2004 20:18
Antworten mit Zitat
Benutzer-Profile anzeigen
genau sowas hab ich gerade gesucht!
In Online Games Gilt:

Luck Beats Skill
Lag Beats Skill
Cheat Beats Skill

Artemis

BeitragFr, Feb 18, 2005 18:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Habe gerade eine Liste aller Virtuellen Keys gemacht:
Dezimal und nicht Hexadezimal!!!
VirtualKey ASCII-CodeTabelle hat Folgendes geschrieben:

Buchstaben
65 a
66 b
67 c
68 d
69 e
70 f
71 g
72 h
73 i
74 j
75 k
76 l
77 m
78 n
79 o
80 p
81 q
82 r
83 s
84 t
85 u
86 v
87 w
88 x
89 y
90 z
186 ü
220 ä
222 ö

Zahlen
48 0
49 1
50 2
51 3
52 4
53 5
54 6
55 7
56 8
57 9

Funktionstasten
112 F1
113 F2
114 F3
115 F4
116 F5
117 F6
118 F7
119 F8
120 F9
121 F10
122 F11
123 F12

NumPad
96 0
97 1
98 2
99 3
100 4
101 5
102 6
103 7
104 8
105 9
106 *
107 +
108 Enter
109 -
110 ,
111 /
144 NumLock

Pfeiltasten
37 Links
38 Oben
39 Rechts
40 Unten

6er-Block
33 Bild auf
34 Bild ab
35 Ende
36 Pos1
45 Einfg
46 Entf

Steuerungstasten
8 Backspace
9 Tabulator
13 Enter
16 Shift
17 Ctrl
18 Alt
19 Pause
20 Caps Lock
27 Esc
32 Space
44 Print Screen
91 Linke Win-Taste
92 Rechte Win-Taste
93 Menütaste
145 Scroll Lock
160 Shift Links
161 Shift Rechts
162 Ctrl Links
163 Ctrl Rechts
164 Linke Menütaste
165 Rechte Menütaste

Multimedia-Tasten
166 Zurück
167 Vor
168 Wiederholen
169 Stopp
170 Suchen
171 Favoriten
172 Home
173 Volume Mute
174 Volume Plus
175 Volume Minus
176 Nächster Track
177 Vorheriger Track
178 Stop
179 Play
180 Mail
181 Select MediaKey
182 Launch Application 1
183 Launch Application 2

Sonderzeichen
188 ,
189 -
190 .
191 §
192 !
219 ?
221 ^
223 $
226 \

flexo

BeitragMo, Nov 14, 2005 21:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Ich weiß nicht ob das stimmt aber...
wenn ich mein Programm kompiliere,
dann werden alle API Aufrufe gleich mit eingenommen oder?
dh. man muss sich nur bei der Programmierung
um die decls Datei kümmern?


Ich hab schon ein paar Sachen damit versucht..
aber es ist schwer durchzublicken (ich hab eine ganze Sammlung
in mehreren decls-Dateien).
Dh. Ich such mir den Befehl raus - UH - was sind das für Variablen
die er verlangt?
Deshalb habs ich wohl auch relativ schnell wieder in den Sand gesetzt...
Du bist eizigartig - genau wie jeder andere auch.

Sebastian

BeitragDi, Nov 15, 2005 17:36
Antworten mit Zitat
Benutzer-Profile anzeigen
flexo hat Folgendes geschrieben:

Ich weiß nicht ob das stimmt aber...
wenn ich mein Programm kompiliere,
dann werden alle API Aufrufe gleich mit eingenommen oder?
dh. man muss sich nur bei der Programmierung
um die decls Datei kümmern?
.


Is hier im Forum sicher schon x-mal erklärt worden :

Der Kompeiler leißt in den delc's in welcher dll er welche function suchen muss und bindet die in deine exe ein.
Einzige Bedingung damits kalppt ist , das delc's korrekt sind und das die dll entweder im system-Verzeichnis oder im gleichen Verzeichnis wie dein Programm liegt ........
Seit 2 Jahren kein BlitzBasic und kein Windows mehr, und stolz darauf !
 

#Reaper

Newsposter

BeitragSa, Jan 21, 2006 22:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich die Maus gedrücken lassen will, muss ich die erst zweimal drücken lassen, bevor es geh... :-/

Naja, hab mir eben mal nen progg geschrieben, was mir dann aus JonasCleve's Liste ein Dim Feld erstellt hat:

[ Removed, die stimmten nicht... Sad (siehe unten!) ]

Ich hoffe das stimmt auch Wink

Hier mein unschönes proggi, das das aus der liste entnommen hat, wenns wen interessiert:
Code: [AUSKLAPPEN]

textfl = OpenFile("tasten.txt")

fl = WriteFile("tasts2.txt")
WriteLine fl,"Dim Tasts(256)"

While Not Eof(textfl)
   ln$ = ReadLine(textfl)
   
   s = Instr(ln$,Chr("32"))
   le = Len(ln$)
   
   tl$ = Left(ln$,s)
   tr$ = Right(ln$,le-s)
   
   WriteLine fl,"Tasts("+Asc(tr$)+")="+tl$
   Print "Tasts("+Asc(tr$)+")="+tl$
Wend

CloseFile fl
CloseFile textfl
End


#Reaper
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7
  • Zuletzt bearbeitet von #Reaper am Sa, Aug 12, 2006 21:22, insgesamt einmal bearbeitet

Smily

BeitragDo, Jan 26, 2006 19:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank, sowas habe ich gerade gesucht Wink
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

derAtomkeks

ehemals "Sethus"

BeitragSa, Apr 08, 2006 14:29
Antworten mit Zitat
Benutzer-Profile anzeigen
kann man damit auch wieder zeichen löschen die man zuvor mit presskey geschrieben hat?
 

#Reaper

Newsposter

BeitragSa, Apr 08, 2006 17:37
Antworten mit Zitat
Benutzer-Profile anzeigen
indem du die return taste drücken läst Wink
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7

derAtomkeks

ehemals "Sethus"

BeitragSo, Apr 09, 2006 6:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh, danke, ich denke immer viel zu kompliziert Embarassed !
 

#Reaper

Newsposter

BeitragDi, Mai 23, 2006 15:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie kann ich es denn machen, das eine Taste dauerhaft gedrückt wird, aber ohne dass ich auch dauerhaft PressKey verwenden muss?
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7

Jan_

Ehemaliger Admin

BeitragDi, Mai 23, 2006 15:33
Antworten mit Zitat
Benutzer-Profile anzeigen
hm, für sowas, nutze ich immer die Hardware Schleife.

du nimmst ein Blatt Papier, falltest es 4 mal und Klemmst es dann so, das die Taste nach unten gedrückt wird
between angels and insects

Kryan

BeitragMo, Mai 29, 2006 19:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Hat jemand einen Code, wo man auch erkennen kann, dass es funktioniert?!
Dieser geht irgendwie nicht:

Code: [AUSKLAPPEN]
Graphics 640,480,0,2
SetBuffer BackBuffer()
Const KEY_UP=2
Const KEY_DOWN=0
Repeat
 Cls
 PressKey 75,0,KEY_DOWN,0
 Text 1,1,KeyDown(37)
 PressKey 75,0,KEY_UP,0
 Flip
Until KeyHit(1)
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!

Artemis

BeitragMo, Mai 29, 2006 19:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du BlitzPlus hast führ einfach folgenden Code aus:
Code: [AUSKLAPPEN]
Const KEY_UP=2
Const KEY_DOWN=0

PressKey 75,0,KEY_DOWN,0
PressKey 75,0,KEY_UP,0


Also Cursor im Editor positionieren und dann F5 drücken.

Kryan

BeitragMo, Mai 29, 2006 19:44
Antworten mit Zitat
Benutzer-Profile anzeigen
geht es nur bei B+??
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!
 

#Reaper

Newsposter

BeitragSa, Aug 12, 2006 21:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Dim Sim_Tast(256)


Sim_Tast(  1) = 27
Sim_Tast(  2) = 49
Sim_Tast(  3) = 50
Sim_Tast(  4) = 51
Sim_Tast(  5) = 52
Sim_Tast(  6) = 53
Sim_Tast(  7) = 54
Sim_Tast(  8) = 55
Sim_Tast(  9) = 56
Sim_Tast( 10) = 57
Sim_Tast( 11) = 48
Sim_Tast( 12) = 219
Sim_Tast( 13) = 0
Sim_Tast( 14) = 8
Sim_Tast( 15) = 9
Sim_Tast( 16) = 81
Sim_Tast( 17) = 87
Sim_Tast( 18) = 69
Sim_Tast( 19) = 82
Sim_Tast( 20) = 84
Sim_Tast( 21) = 90
Sim_Tast( 22) = 85
Sim_Tast( 23) = 73
Sim_Tast( 24) = 79
Sim_Tast( 25) = 80
Sim_Tast( 26) = 186
Sim_Tast( 27) = 0
Sim_Tast( 28) = 13
Sim_Tast( 29) = 162
Sim_Tast( 30) = 65
Sim_Tast( 31) = 83
Sim_Tast( 32) = 68
Sim_Tast( 33) = 70
Sim_Tast( 34) = 71
Sim_Tast( 35) = 72
Sim_Tast( 36) = 74
Sim_Tast( 37) = 75
Sim_Tast( 38) = 76
Sim_Tast( 39) = 222
Sim_Tast( 40) = 220
Sim_Tast( 41) = 221
Sim_Tast( 42) = 160
Sim_Tast( 43) = 0
Sim_Tast( 44) = 89
Sim_Tast( 45) = 88
Sim_Tast( 46) = 67
Sim_Tast( 47) = 86
Sim_Tast( 48) = 66
Sim_Tast( 49) = 78
Sim_Tast( 50) = 77
Sim_Tast( 51) = 188
Sim_Tast( 52) = 190
Sim_Tast( 53) = 189
Sim_Tast( 54) = 161
Sim_Tast( 55) = 106
Sim_Tast( 56) = 18
Sim_Tast( 57) = 32
Sim_Tast( 58) = 20
Sim_Tast( 59) = 112
Sim_Tast( 60) = 113
Sim_Tast( 61) = 114
Sim_Tast( 62) = 115
Sim_Tast( 63) = 116
Sim_Tast( 64) = 117
Sim_Tast( 65) = 118
Sim_Tast( 66) = 119
Sim_Tast( 67) = 120
Sim_Tast( 68) = 121
Sim_Tast( 69) = 144
Sim_Tast( 70) = 145
Sim_Tast( 71) = 103
Sim_Tast( 72) = 104
Sim_Tast( 73) = 105
Sim_Tast( 74) = 109
Sim_Tast( 75) = 100
Sim_Tast( 76) = 101
Sim_Tast( 77) = 102
Sim_Tast( 78) = 107
Sim_Tast( 79) = 97
Sim_Tast( 80) = 98
Sim_Tast( 81) = 99
Sim_Tast( 82) = 96
Sim_Tast( 83) = 110
Sim_Tast( 84) = 0
Sim_Tast( 85) = 0
Sim_Tast( 86) = 0
Sim_Tast( 87) = 122
Sim_Tast( 88) = 123

Sim_Tast(153) = 176
Sim_Tast(154) = 0
Sim_Tast(155) = 0
Sim_Tast(156) = 108
Sim_Tast(157) = 163
Sim_Tast(158) = 0
Sim_Tast(159) = 0
Sim_Tast(160) = 173
Sim_Tast(161) = 0
Sim_Tast(162) = 179
Sim_Tast(163) = 0
Sim_Tast(164) = 178
Sim_Tast(165) = 0
Sim_Tast(166) = 0
Sim_Tast(167) = 0
Sim_Tast(168) = 0
Sim_Tast(169) = 0
Sim_Tast(170) = 0
Sim_Tast(171) = 0
Sim_Tast(172) = 0
Sim_Tast(173) = 0
Sim_Tast(174) = 175
Sim_Tast(175) = 0
Sim_Tast(176) = 174
Sim_Tast(177) = 0
Sim_Tast(178) = 172
Sim_Tast(179) = 0
Sim_Tast(180) = 0
Sim_Tast(181) = 111
Sim_Tast(182) = 0
Sim_Tast(183) = 44
Sim_Tast(184) = 18
Sim_Tast(185) = 0
Sim_Tast(186) = 0
Sim_Tast(187) = 0
Sim_Tast(188) = 0
Sim_Tast(189) = 0
Sim_Tast(190) = 0
Sim_Tast(191) = 0
Sim_Tast(192) = 0
Sim_Tast(193) = 0
Sim_Tast(194) = 0
Sim_Tast(195) = 0
Sim_Tast(196) = 0
Sim_Tast(197) = 19
Sim_Tast(198) = 0
Sim_Tast(199) = 36
Sim_Tast(200) = 38
Sim_Tast(201) = 33
Sim_Tast(202) = 0
Sim_Tast(203) = 37
Sim_Tast(204) = 0
Sim_Tast(205) = 39
Sim_Tast(206) = 0
Sim_Tast(207) = 35
Sim_Tast(208) = 40
Sim_Tast(209) = 34
Sim_Tast(210) = 45
Sim_Tast(211) = 46
Sim_Tast(212) = 0
Sim_Tast(213) = 0
Sim_Tast(214) = 0
Sim_Tast(215) = 0
Sim_Tast(216) = 0
Sim_Tast(217) = 0
Sim_Tast(218) = 0
Sim_Tast(219) = 91
Sim_Tast(220) = 92
Sim_Tast(221) = 93
Sim_Tast(222) = 0
Sim_Tast(223) = 0
Sim_Tast(224) = 0
Sim_Tast(225) = 0
Sim_Tast(226) = 0
Sim_Tast(227) = 0
Sim_Tast(228) = 0
Sim_Tast(229) = 0
Sim_Tast(230) = 171
Sim_Tast(231) = 168
Sim_Tast(232) = 169
Sim_Tast(233) = 166
Sim_Tast(234) = 0
Sim_Tast(235) = 0
Sim_Tast(236) = 180
Sim_Tast(237) = 181


Der alte Dim-Code von mit hatte nicht gestimmt, habe mal eben einen neuen menuell gemacht, sollte soweit nun alles stimmen Wink
Allerdings ist die Tabelle nicht nach ASCII, sondern nach den Scancodes. Ist eh besser so, zu mindestens bei diesen Funktionen Wink

MfG
#Reaper


PS: Bei mir funktioniert
ChangeMouse ME_ABSOLUTE,100,100,0,0
nicht. kA warum nicht :-/
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7
 

Schnuff

BeitragMo, Sep 11, 2006 15:22
Antworten mit Zitat
Benutzer-Profile anzeigen
entschuldigt wegen dem pushen, aber bei mir funktionieren die koordinaten angaben, bei der absoluten mausverschiebung überhaupt nicht, hat da jemand eine idee, wiso, oder was ich dagegen tun kann?
Programmers dont die. They gosub without return...

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic DLLs und Userlibs

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group