[BlitzMax]Mausklick an beliebiger Position simulieren
Übersicht

dubitatBetreff: [BlitzMax]Mausklick an beliebiger Position simulieren |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ich habe mit einigen Code Schnipseln hier aus dem Forum und aus dem Netz eine Funktion für die WindowsAPI geschrieben, mit welcher ihr einen Mausklick an eine beliebige Stelle setzen könnt, unabhängig von dem BlitzWindow, da alles über die Api Funktionen läuft. Für Anregungen bin ich gerne offen. Code: [AUSKLAPPEN] Strict Extern "win32" Function win32_LoadLibrary:Int(lpFileName$z) = "LoadLibraryA@4" Function win32_GetProcAddress:Byte Ptr(hModule:Int, lpProcName$z) = "GetProcAddress@8" End Extern Function MouseHitLeft(x,y) Local Mouse_LDOWN = $2 Local Mouse_LUP = $4 Local hModule:Int = win32_LoadLibrary("user32.dll") If hModule = 0 Then Return EndIf Local MousePos(point:Byte Ptr) "win32"=win32_GetProcAddress(hModule, "GetCursorPos") 'In MouseKoords[0] ist die X und in MouseKoords[1] die Y Position gespeichert Local MouseKoords:Int[] MouseKoords = New Int[2] MousePos(MouseKoords) Local ChangeMouse(F:Int, dx:Int, dy:Int, D:Int, S:Int) "win32"=win32_GetProcAddress(hModule, "mouse_event") MoveMouse x,y ChangeMouse Mouse_LDOWN,0,0,0,0 ChangeMouse Mouse_LUP,0,0,0,0 MoveMouse MouseKoords[0],MouseKoords[1] End Function MouseHitLeft(1240,10) mfg dubitat P.S. Ich habe keine Ahnung, ob ihr diesen BlitzMax Code als sauber empfindet, da es meine ersten versuche in BlitzMax sind vorher Blitz3d |
||
Erare humanum est - Irren ist Menschlich |
DjDETE |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also in BlitzBasic geht das doch eh, und wenn der Code für BlitzMax ist (was er definitv ist) gehört er doch ins BlitzMax Codearchiv.
MfG DeTe |
||
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden. |
![]() |
Valnar |
![]() Antworten mit Zitat ![]() |
---|---|---|
DjDete, du hast anscheinend nicht dne Sinn u nd Zweck dieses Scruptes erfunden. Du kannst, wenn ich es richtig verstanden habe, AUSSERHALB deines Blitzfensters einen klick Simulieren. Also kannst du sowas ähnliches wie AutoIt (oder wie dieses Programm heisst) basteln.
Aber ja: Falsches Forum scheint es definitiv zu sein! |
||
![]() |
hamZtaAdministrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
~VERSCHOBEN~ Falsches Codearchiv ![]() mfg, hamZta |
||
Blog. |
dubitat |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
heute sind wohl viele Nachtaktive unterwegs ![]() Ich muss zu meiner Schande gestehen, dass ich das BlitzMax Codearchiv glatt übersehen habe... mfg dubitat Edit: Hier gibts nochmal die abgewandelte Version um unabhängig von Pixeln und somit Auflösung zu sein: (Angegeben in Prozentwerten zwischen 0% und 100% als Float) Code: [AUSKLAPPEN] Strict Extern "win32" Function win32_LoadLibrary:Int(lpFileName$z) = "LoadLibraryA@4" Function win32_GetProcAddress:Byte Ptr(hModule:Int, lpProcName$z) = "GetProcAddress@8" End Extern Function MouseHitLeft(x:Float,y:Float) Local Mouse_LDOWN = $2 Local Mouse_LUP = $4 Local hModule:Int = win32_LoadLibrary("user32.dll") If hModule = 0 Then Return EndIf Local ScreenRes(point:Int) "win32"= win32_GetProcAddress(hModule, "GetSystemMetrics") Local MousePos(point:Byte Ptr) "win32"=win32_GetProcAddress(hModule, "GetCursorPos") 'In MouseKoords[0] ist die X und in MouseKoords[1] die Y Position gespeichert Local MouseKoords:Int[] MouseKoords = New Int[2] MousePos(MouseKoords) Local ChangeMouse(F:Int, dx:Int, dy:Int, D:Int, S:Int) "win32"=win32_GetProcAddress(hModule, "mouse_event") MoveMouse (ScreenRes(0)*x/100),(ScreenRes(1)*y/100) ChangeMouse Mouse_LDOWN,0,0,0,0 ChangeMouse Mouse_LUP,0,0,0,0 MoveMouse MouseKoords[0],MouseKoords[1] End Function MouseHitLeft(50,50) |
||
Erare humanum est - Irren ist Menschlich |
![]() |
kog |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe es noch einbisschen umgeschrieben. Da du die Befehle nicht aus der DLL manuell laden gehen musst. Sondern sie direkt per Extern "laden" kannst:
Code: [AUSKLAPPEN] SuperStrict
Extern "win32" Function ScreenRes:Int(point:Int)="GetSystemMetrics@4" Function MousePos(point:Byte Ptr)="GetCursorPos@4" Function ChangeMouse(f:Int,dx:Int,dy:Int,d:Int,s:Int)="mouse_event@20" End Extern Function MouseHitLeft(x:Float,y:Float) Local Mouse_LDOWN:Int = $2 Local Mouse_LUP:Int = $4 'In MouseKoords[0] ist die X und in MouseKoords[1] die Y Position gespeichert Local MouseKoords:Int[] MouseKoords = New Int[2] MousePos(MouseKoords) Print(mousekoords[0]+"x"+mousekoords[1]) MoveMouse ( ScreenRes(0)*x/100),( ScreenRes(1)*y/100) ChangeMouse Mouse_LDOWN,0,0,0,0 ChangeMouse Mouse_LUP,0,0,0,0 MoveMouse MouseKoords[0],MouseKoords[1] End Function MouseHitLeft(50,50) |
||
DjDETE |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vielleicht liegt es daran dass ich B+ besitze, aber ich kann auch einfach wenn ich kein Fenster offen habe die Maus mit Movemouse irgendwo auf dem Bildschirm positionieren.
MfG DeTe |
||
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden. |
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
DjDETE hat Folgendes geschrieben: Vielleicht liegt es daran dass ich B+ besitze, aber ich kann auch einfach wenn ich kein Fenster offen habe die Maus mit Movemouse irgendwo auf dem Bildschirm positionieren.
MfG DeTe Aber wohl kaum damit zum klicken bewegen, gell? ![]() Hier mal alle Mouse-Events: Code: [AUSKLAPPEN] Const MOUSEEVENT_MOVE :Short = $1 , ..
MOUSEEVENT_ABSOLUTE :Short = $8000 , .. MOUSEEVENT_LEFTDOWN :Short = $2 , .. MOUSEEVENT_LEFTUP :Short = $4 , .. MOUSEEVENT_RIGHTDOWN :Short = $8 , .. MOUSEEVENT_RIGHTUP :Short = $10 , .. MOUSEEVENT_MIDDLEDOWN :Short = $20 , .. MOUSEEVENT_MIDDLEUP :Short = $40 , .. MOUSEEVENT_WHEEL :Short = $800 (Ok, mit Tabs war er ordentlich eingerückt...) Ich meine es sollten so alle stimmen. |
||
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 |
DjDETE |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nein, aber dafür gibt's ja auch schon ne dll für BlitzBasic.
Ich wollte ja auch eigentlich nur auf das falsche Codearchiv hinweisen ![]() MfG DeTe |
||
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group