Danek Skrevet 18. februar 2013 Del Skrevet 18. februar 2013 Hei, driver på å lærer meg nytt scriptingspråk også lurer jeg på hva dere synes om mitt aller første program noensinne! Setter pris på feedback Nedlasting (Windows 7 x86_x64): danek's paint.zip Lenke til kommentar
Danek Skrevet 19. februar 2013 Forfatter Del Skrevet 19. februar 2013 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
slacky Skrevet 21. februar 2013 Del Skrevet 21. februar 2013 (endret) 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 3. mars 2013 av warpie Lenke til kommentar
Danek Skrevet 21. februar 2013 Forfatter Del Skrevet 21. februar 2013 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
Terrasque Skrevet 28. februar 2013 Del Skrevet 28. februar 2013 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) 1 Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå