Gå til innhold

Anbefalte innlegg

Videoannonse
Annonse

Jobber med en ny versjon. Har blant annet lagt til en ny modus med bare prikker, hotkey som skifter og tooltip med legend. Men jeg kan for alt i livet mitt ikke forstå hvorfor programmet stopper på windows resize. Bare plutselig sluttet det å funke, kan noen hjelpe meg?

 

#include <Array.au3>

Opt('MouseCoordMode', 0)
Opt('PixelCoordMode', 0)
Global $witch = 0
Global $dotsdrawn = 0
Global $linesdrawn = 0
Global $drawdots = 0
Global $threshold = 10
Global $barpos[2] = [764, 68]
Global $xbaroff = 22.5 ;distance between positions of the color pads
Global $xbarmult = random(0,9) ;random picks, from 1 to 6 bar right
Global $ybarmult = random(0,1) ;random, down or not
$paintWindow = "[CLASS:Afx:7f0000:8]"
$xoffset = 24
$yoffset = 164
$winw = 750
$winh = 350
$colorcounter = 0

HotKeySet("{END}", "slutt")
HotKeySet("{0}", "togglemode")
HotKeySet("{9}", "threshold")
Run("mspaint")
WinWaitActive("Untitled - Paint")
WinActivate("Untitled - Paint")
WinMove("Untitled - Paint","",0,0,1200,720)
MouseClick("left",189,91,1)
Sleep(200)
WinWaitActive("Resize and Skew")
Send("{TAB}")
Sleep(200)
Send("{TAB}")
Sleep(200)
Send("{TAB}")
Sleep(200)
Send("{SPACE}")
Sleep(200)
Send("{TAB}")
Sleep(200)
Send("{TAB}")
Sleep(200)
Send("{TAB}")
Sleep(200)
Send("{TAB}")
Sleep(200)
Send("{TAB}")
Sleep(200)
Send("{RIGHT}")
Sleep(200)
Send("{TAB}")
Sleep(200)
Send($winw + 50) ;lagt til margin
Send("{TAB}")
Send($winh + 50) ; -||-
Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Sleep(200)
Send("{ENTER}")
MouseClick("",636,108)
Send("{DOWN}")
Send("{DOWN}")
Send("{DOWN}")
Send("{DOWN}")
Send("{SPACE}")
MouseMove(200,200)
While 1
   ToolTip("Press 0 to toggle modes or END to exit" & @CR & @CR &  "Dots Drawn: " & $dotsdrawn & @CR & "Lines Drawn: " & $linesdrawn & @CR & "Mode: " & $witch , $winw + 200, $winh )
   $colorcounter += 1
   $x = random(1 + $xoffset, $winw + $xoffset)
   $y = random(1 + $yoffset, $winh + $yoffset)

  If $colorcounter > $threshold Then ;Make sure we never get stuck here for infinity.
  $barx = $barpos[0] + $xbaroff * random(0,9)
  $bary = $barpos[1] + $xbaroff * random(0,1)
  MouseClick("left", $barx, $bary)
  $colorcounter = 0
  EndIf



   If  $drawdots == 1 Then
MouseClick("left",$x,$y,1,1)
   $dotsdrawn = $dotsdrawn + 1
EndIf
If $drawdots == 0 Then
   MouseClick("left")
   MouseDown("left")
   MouseMove($x,$y,1)
MouseUp("left")
   $linesdrawn = $linesdrawn + 1
   EndIf


  Sleep (200)
Wend

func slutt()
  MouseClick("left")
  Send("!{F4}")
  Exit
EndFunc

func togglemode()
  If $drawdots == 0 Then
  $drawdots = 1
  Else
  $drawdots = 0  
  EndIf
  ;MsgBox(1,"", "yolo")
EndFunc





Lenke til kommentar

Første jeg tenker når jeg ser koden din er mangelen på loops, jeg ser du har omtrent akkurat samme kode repitert over halve programmet ditt.. Det kan nok gjøres om til en funksjon på bare noen få linjer.

 

La også merke til at programmet ditt ikke fungerer på Win XP-(64) samt virtualisert 7-(64), gir seg så fort paint er åpnet på begge systemene.

- Sansynligvis fordi du har kompilert det.

 

NOTE: Sansynligvis er det veldig få her som faktisk har brukt, eller kjenskap til autoit, og dens funksjoner samt syntax, du er nok mer tvungen til å bruke det offisielle forumet.

 

Personlig er jeg veldig kresen på indentering. Det er noe du bør lære deg - indeneringsnivå spiller liten rolle, enten du bruker 2,3 eller 4 space (men kun en av de, ikke mix)... Vakker kode er viktig så fort det blir mer en noen få linjer.

 

Bare for å få det sagt, så missliker jeg syntaxen til AutoIt, sterkt. Fordelen er vel at du kan lage en .exe med AutoIt (det er alt). Ser heller inget poeng i å lære seg det, da det ikke er mer en et LITE script-språk, før eller siden så må en (sansynligvis) over på et annet språk.

 

Autoit har binds for bl. a Python. Om du bruker Python så vil du sansynligvis spare deg for lang kode, samt kunne få mer generel støtte. Med Py2exe kan du lage en exe-fil. Du finner også python-moduler som lar deg gjøre omtrent det samme som AutoIt, og mer..

Endret av warpie
Lenke til kommentar

 

Hei og takk for tilbakemelding :) Jeg er som sagt ny på denne skriptingen og har troen på at jeg, etterhvert som jeg lærer vil få det til enda ryddigere. Har selv bemerket meg uheldigheten ved indenteringen min ved et par anledninger. Det er lett å skrive men når det skal debugges er det et rent helvete, så takk for tips det skal jeg ta til meg og forhåpentligvis i god nytte. Men denne python... Er den virkelig så bra. Dersom det lar seg gjøres på et par linjer, kan du vær så snill å vise meg? Hvis det ikke er å kreve for mye av deg da...

La også merke til at programmet ditt ikke fungerer på Win XP-(64) samt virtualisert 7-(64), gir seg så fort paint er åpnet på begge systemene.- Sansynligvis fordi du har kompilert det.

Jeg la ut koden i rent textformat. Da vil du slik jeg forstår det kunne kompilere det selv dersom du har autoit og scite da, vel å merke.

Lenke til kommentar

Nå har jeg aldri brukt AutoIt, men i følge http://stackoverflow.com/questions/3301561/calling-autoit-functions-in-python er det ikke så vanskelig å bruke fra python.

 

Et enkelt eksempel på forkortning:

 

import time
import win32com.client
autoit = win32com.client.Dispatch("AutoItX3.Control")


sequence = ["TAB"] * 4 + ["SPACE"] + ["TAB"] * 5 + ["RIGHT"] + ["TAB"]
for key in sequence:
   autoit.Send("{%s}" % key)
   time.sleep(200)

 

Ville være omtrent likt som:

Send("{TAB}")
Sleep(200)
Send("{TAB}")
Sleep(200)
Send("{TAB}")
Sleep(200)
Send("{SPACE}")
Sleep(200)
Send("{TAB}")
Sleep(200)
Send("{TAB}")
Sleep(200)
Send("{TAB}")
Sleep(200)
Send("{TAB}")
Sleep(200)
Send("{TAB}")
Sleep(200)
Send("{RIGHT}")
Sleep(200)
Send("{TAB}")
Sleep(200)

  • Liker 1
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...