KeyDown und MouseDown "simulieren"
Übersicht

![]() |
simiBetreff: KeyDown und MouseDown "simulieren" |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() cu simi |
||
![]() |
TheProgrammer |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
genau sowas hab ich gerade gesucht! | ||
In Online Games Gilt:
Luck Beats Skill Lag Beats Skill Cheat Beats Skill |
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ! |
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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... ![]() Ich hoffe das stimmt auch ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielen Dank, sowas habe ich gerade gesucht ![]() |
||
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 |
![]() |
derAtomkeksehemals "Sethus" |
![]() Antworten mit Zitat ![]() |
---|---|---|
kann man damit auch wieder zeichen löschen die man zuvor mit presskey geschrieben hat? | ||
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
indem du die return taste drücken läst ![]() |
||
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 |
![]() |
derAtomkeksehemals "Sethus" |
![]() Antworten mit Zitat ![]() |
---|---|---|
Oh, danke, ich denke immer viel zu kompliziert ![]() |
||
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
geht es nur bei B+?? | ||
Webspaceanbieter?
Klick hier! Kultige Spieleschmiede? Klick hier! |
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() Allerdings ist die Tabelle nicht nach ASCII, sondern nach den Scancodes. Ist eh besser so, zu mindestens bei diesen Funktionen ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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... |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group