Seite 1 von 1

Mausklicks auf Desktop simulieren

Verfasst: 19.12.2008 18:49
von Herror
Hallo,

Bin eigentlich ein totaler Anfänger in PureBasic.

Habe erst gestern angefangen ein Programm zu schreiben, dass Mausklicks simuliert.

Möchte nämlich ein Programm schreiben, dass für mich eine Internetseite durchklickt. Alle 10x10 Pixel ein Klick.

Kann ich irgendwie direkt mit dem Browser arbeiten oder wie schaffe ich es ganz normal Klicks auf dem Desktop hinzubekommen?

Bin gerade so weit:

Code: Alles auswählen

Procedure Mouseklickleft()
mouse_event_(#MOUSEEVENTF_LEFTDOWN, 0,0,0,0)
mouse_event_(#MOUSEEVENTF_LEFTUP, 0,0,0,0)
EndProcedure

InitSprite() 
InitMouse()

OpenWindowedScreen(GetDesktopWindow_(), 0, 0, GetSystemMetrics_(0), GetSystemMetrics_(1), 0, 0, 0)    
  ExamineMouse() 
  MouseLocate(20, 780)
  ExamineMouse() 
  Mouseklickleft()

End
Das klappt aber nicht ganz...
Wenn ich ein Fenster öffne, agiert der Mauszeiger nur innerhalb des Fensters, geht aber nicht auf den Windows-Start Button...

Verfasst: 19.12.2008 18:52
von Fluid Byte
Möchte nämlich ein Programm schreiben, dass für mich eine Internetseite durchklickt. Alle 10x10 Pixel ein Klick.
Darf man nach dem Sinn fragen?

Verfasst: 19.12.2008 19:02
von Dare Devil

Code: Alles auswählen

Procedure Mouseklickleft() 
mouse_event_(#MOUSEEVENTF_LEFTDOWN, 0,0,0,0) 
mouse_event_(#MOUSEEVENTF_LEFTUP, 0,0,0,0) 
EndProcedure 

SetCursorPos_(10, 590)
Mouseklickleft() 
Damit gehts... Den Sinn des ganzen versteh ich aber auch nicht... :?

Koenntest ja auch ein WebGadget oeffnen

Verfasst: 19.12.2008 19:51
von Kaeru Gaman
@Herror

der Grund warum es bei dir nicht funktioniert ist der,
dass die Mouse-Lib eben nur für den Screen context da ist.

sie steht auch unter "2D Spiele & Multimedia Libraries"
und in der Einleitung heißt es
... speziell zur Benutzung in Spielen. Verwenden Sie die Befehle dieser Library nicht in einer regulären Applikation ...
also, ganz klar ein Fall von Bild was die MouseLib betrifft.



weitergehend interessiert mich natürlich auch, wozu
> Alle 10x10 Pixel ein Klick.
gut sein soll.

Verfasst: 19.12.2008 19:59
von Herror
Danke für die schnelle Hilfe ^^

Und angemerkt:
Ich habe erst gestern mit PureBasic angefangen... und ich durchforste echt schon seit Stunden die Anleitung und diverse Internetseiten und Foren und habe mich, nach ca. 8 Stunden selber probieren, mal dazu entschieden hier mal paar leute damit zu quälen.

Wozu das gut sein soll:
Ich will Programmieren ^^

Und nebenbei möchte ich an einem Gewinnspiel teilnehmen:
http://www.giga.de/aktionen/wiese/motiv/

Ich weiß, dass die Felder immer 10x10 Pixel groß sind.

Nun, wären da WebGadget besser dafür geeignet?

Verfasst: 19.12.2008 21:05
von Dare Devil
Also ich weiss jetzt nicht wirklich was du vor hast - aber allgemein wuerde ich sagen waere ein WebGadget geeignet.

Den erstellst du ueber dein Fenster und oeffnest die Seite die du haben willst. Anschliessend kannst du dann dein Vorhaben in die Tat umsetzen.

Hier eine kleine Demonstration:

Code: Alles auswählen

Procedure Mouseklickleft() 
mouse_event_(#MOUSEEVENTF_LEFTDOWN, 0,0,0,0) 
mouse_event_(#MOUSEEVENTF_LEFTUP, 0,0,0,0) 
EndProcedure

Procedure SimuliereKlick()
If WindowMouseY(0) < 400
  If WindowMouseX(0) < 100
    SetCursorPos_(DesktopMouseX() + 1, DesktopMouseY() + 1)
  ElseIf WindowMouseX(0) > 172
    SetCursorPos_(DesktopMouseX() - 1, DesktopMouseY() + 1)
  Else
    SetCursorPos_(DesktopMouseX(), DesktopMouseY() + 1)
  EndIf
  ProcedureReturn 1
Else
  Mouseklickleft()
  ProcedureReturn 0
EndIf
EndProcedure


OpenWindow(0, 0, 0, 800, 500, "Demonstration", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget)

CompilerIf #PB_Compiler_Version < 430
CreateGadgetList(WindowID(0))
CompilerEndIf

button1 = ButtonGadget(#PB_Any, 350, 10, 100, 30, "Simulation!")
webseite = WebGadget(#PB_Any, 0, 50, 800, 450, "http://www.purebasic.fr/german")
klicksimulation = 0

Repeat
  EventID = WindowEvent()
  
  If EventID = #PB_Event_CloseWindow
    Break
  ElseIf EventID = #PB_Event_Gadget
    If EventGadget() = button1
      klicksimulation = 1
    EndIf
  EndIf
  
  If klicksimulation = 1
    klicksimulation = SimuliereKlick()
  EndIf
  
  Delay(20)
ForEver
Wenn man auf "Simulation" klickt bewegt sich die Maus wie von Geisterhand auf "Ankuendigungen" und klickt darauf.

Viel Spass damit!
Und herzlich willkommen im Forum! Hab erst vorhin gesehen dass du neu bist.

Verfasst: 19.12.2008 21:27
von Herror
Oh, danke.

Habe schon angefangen mich mit dem WebGadget auseinanderzusetzen, hab es aber nicht hinbekommen das zum Laufen zu bringen ^^

Das bringt mich auf jeden Fall einen Schritt weiter.

Danke sehr!