Mausklicks auf Desktop simulieren

Anfängerfragen zum Programmieren mit PureBasic.
Herror
Beiträge: 3
Registriert: 19.12.2008 18:40
Kontaktdaten:

Mausklicks auf Desktop simulieren

Beitrag 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...
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag 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?
Windows 10 Pro, 64-Bit / Outtakes | Derek
Dare Devil
Beiträge: 237
Registriert: 17.10.2008 18:24
Kontaktdaten:

Beitrag 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
Bild + Bild

Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Herror
Beiträge: 3
Registriert: 19.12.2008 18:40
Kontaktdaten:

Beitrag 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?
Dare Devil
Beiträge: 237
Registriert: 17.10.2008 18:24
Kontaktdaten:

Beitrag 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.
Bild + Bild

Bild
Herror
Beiträge: 3
Registriert: 19.12.2008 18:40
Kontaktdaten:

Beitrag 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!
Antworten