Artikel top billede

(Foto: Computerworld)

Automatiser din pc - del 2

Spar tid, slip for bøvl og sæt produktiviteten i vejret med scriptværktøjet AutoIt.

Af Redaktionen, Alt om Data

Denne artikel er oprindeligt bragt på Alt om Data. Computerworld overtog i november 2022 Alt om Data. Du kan læse mere om overtagelsen her.

Når man har en pc, sparer man tid. I hvert fald i teorien: Computeren overtager de simple gentagne opgaver, så man selv kan beskæftige sig med vigtigere sager.

Men i praksis virker det ikke altid sådan. Mange pc-brugere følger den samme rutine hver dag, kører den samme række programmer, bruger de samme tastetryk og udfører de samme kedsommelige vedligeholdelsesopgaver skridt for skridt.

Sidste gang kiggede vi på, hvordan det gratis automatiseringsprogram, AutoIt, kan afhjælpe mange af den slags gentagelsesopgaver, og på hvordan du automatiserede for eksempel CCleaner. Denne gang går vi mere i dybden med, hvad du kan bruge AutoIt til.

Simulerede tastaturtryk

Det er nyttigt at kunne starte programmer, men det er kun det første skridt hen mod at automatisere din pc. Det næste består i at kontrollere disse programmer eller Windowstjenester, så de gør, hvad du vil have. Det kan AutoIt gøre ved at give dem simulerede tastaturtryk med Sendfunktionen:

Run(”Notepad.exe”)
WinWaitActive(”Untitled –
Notepad”)
Send(”The time and date is
{F5}”)
Snd(”^p”)
WinWaitActive(”Print”)
Send(”!p”)

Her starter vi Notepad og bruger WinWaitActive til at vente, indtil Notepadvinduet beslutter sig for at komme frem. Så sender scriptet den rå tekst »the time and date is«, før det simulerer at trykke [F5] for at vise klokkeslæt og dato.

Hvis du bruger et-tegnet i en Sendfunktion, simulerer det et tryk på tasten [Ctrl]. Hvis man sender &p, svarer det altså til at trykke [CTRL]+[P] (pas på: Der er ofte forskel på store og små bogstaver, så &p og &P har sjældent den samme virkning. Brug små bogstaver, medmindre du er sikker på, at der skal bruges store).

Den næste WinWaitActive-funktion venter på, at Printvinduet kommer frem. Endelig simulerer et udråbstegn [Alt]-tasten. Hvis man sender !p, svarer det altså til at trykke [Alt]+[P], hvilket udløser knappen Print.

Du kan bruge den samme teknik til at starte enhver applikation. Kør for eksempel Internet Explorer – Run(”c:program filesinternet exploreriexplore.exe”). Brug så Send (”!d”) til at simulere [Alt]+[D], der vælger adressebjælken. Tilføj en url og tasten [Enter] – Send (”www.google.com{enter}”), så opsøger IE dette site for dig.

Du kan også automatisere nogle nyttige Windowstastaturtryk. Tegnet »#« repræsenterer for eksempel [Windows]-tasten, og man kan derfor bruge Send(”#d”) til at simulere [Win]+[D], der minimerer alle vinduer, viser skrivebordet. En anden mulighed er at låse din pc fra et script med Send(#1”).>

Sendfunktionen understøtter også koder til simulering af mange alternative tastaturtryk, herunder [Tab], [Page Up], [Page Down}, [Numlock Off], [Numlock On], [Printscreen] og mange andre (se onlinedokumentationen og den komplette liste på www.bit.ly/5YW93W).

Makrooptager

»Send« er en ekstremt stærk funktion, der gør det muligt at automatisere stort set enhver Windows- eller applikationsogave. Men det kan være anstrengende at få den til at arbejde manuelt, navnlig ved lange sekvenser.

Du skal omhyggeligt notere hvert af de tastaturtryk, du foretager og måske tilføje WinWaitActive eller andre statements for at sikre dig, at dine simulerede taster ender de rigtige steder.

Hvis det går galt, er det umuligt at vide, hvilke problemer det udløser. Der findes heldigvis et enkelt alternativ: Brug AutoIts SciTE til at optage de nødvendige skridt.

Du skal først åbne SciTE, klikke på »File | Save As« og give din fil et navn i retning af First Macro.au3.

Klik på »Tools | Au3 Recorder« for at starte makrooptageren. Hvis du ikke ser en Au3 Recorder-menu, skal du sikre dig, at du har downloadet og installeret den komplette version af SciTE fra www.autoitscript.com/autoit3/downloads.shtml.

Klik på »Browse« og gå til det program, du vil automatisere. Vælg noget enkelt som Notepad.exe, MSPaint.exe eller Calc.exe, når du begynder. Disse og mange andre appletter ligger som regel i mappen WindowsSystem32.

Klik på knappen »Recorder«, så starter Au3 Recorder den angivne applikation og begynder at optage dine musebevægelser, klik og tastaturtryk. Færdiggør de skridt, du vil foretage – klik »2+2=« i Calc, for eksempel – og klik igen på »Au3 Recorder« for at stoppe optagelsen.

Der kommer nu et script, der repræsenterer at, hvad du har gjort: En Runkommando, Sendfunktioner for alle tastaturtryk, WinWaitActive-statements; alt hvad du har foretaget dig inklusive musebevægelser.

Virker det? Prøv. Luk den applikation, du har automatiseret, hvis du ikke allerede har gjort det. Gå tilbage til SciTE og tryk [F5] for at starte scriptet. Nu bør du se programmet åbne og følge den sekvens, du har defineret, på få sekunder. Det er meget ligetil og gør det langt lettere at automatisere komplicerede Windowsopgaver.

Automatiseret installation

De AutoIt-kommandoer, vi hidtil har set på, er meget enkle: Kør et program, send et tastaturtryk, vent på et vindue og så videre. De er ikke undtagelser – resten af sproget er lige så enkelt.

Hvis du for eksempel får brug for at downloade en fil i et script, skal du bruge en kommando som denne: InetGet(»http://www.domain.com/folder/file.exe«,»c:downloadsfile.exe«). Den finder en fil på url’en og kopiere den til den lokale sti, du angiver. Det fungerer både med ftp- og http-servere.

Den store fordel ved AutoIt kommer imidlertid, når du begynder at samle disse kommandoer. Forestil dig, at du skulle bygge et script til katastrofeberedskab – noget, du kan bruge, hvis du har mistanke om en malwareinfektion.

Hvis du vil downloade en gratis antivirusscanner for at beskytte din computer, skal du normalt gå online, browse til producentens website, følge downloadlinket, finde den rigtige version til dit system, downloade scanneren og installere den.

Med AutoIt undgår man alt det bøvl. Du kan bruge InetGet til at downloade den nyeste version af nogle få antivirusværktøjer – hvis du skriver InetGet(”http://security.symantec.com(sscv6/Setup.exe”,”c:setup.exe”) får du således Norton Security Scanner.

En Run-kommando starter den, og du kan bruge Send til at simulere tastaturtryk og gennemgå setup-wizarden. Det er nemmere og sikkert hurtigere end at gøre det hele manuelt.

Det fremragende AutoClean-script (www.bit.ly/7UCE2X) går endnu videre og opretter et værktøj, der kan bruges til at reparere beskadigede eller inficerede pc’ere.

Det automatiserer download og start af strålende værktøjer som CCleaner, RegSeeker, Defraggler, Vipre Rescue og andre, og det kan automatisk afinstallere ragelse, optimere Windowsindstillinger og så videre. Download det og se på hjemmesiden, hvordan man gør.

Det var første del af vores guide til AutoIt. Vi ser på den automatisering, der ligger bag tastaturtryk en anden gang, og forklarer, hvordan du kan kontrollere vigtigt Windowsfunktioner ved hjælp af nogle få og meget enkle AutoIt-scripts.

Vi har andetsteds talt om kommandoen WinWait og om, hvordan du kan bruge den til at lade et script vente, indtil et bestemt vindue kommer frem. For eksempel vil en linje som WinWait(”Internet Explorer”) vente, indtil der kommer et vindue med »Internet Explorer« i titlen.

Det lyder fornuftigt, men hvad nu, hvis en anden vinduestitel indeholder den tekst, måske et eksemplar af Stifinder, hvor du har set på mappen ProgrammerInternet Explorer?

Der findes heldigvis en mere pålidelig måde at identificere vinduer på. Brug deres klassenavn, en intern beskrivelse, der har langt større sandsynlighed for at være unik. Somme tider er klassenavnet det samme som applikationen. Således vil WinWait(”[CLASS:Notepad]”) vente, indtil kun Notepad er indlæst. Som regel er klassenavnet mere kryptisk, men det kan man nemt finde ud af.

Klik »Start | Programmer | AutoIt v3 | AutoIt Window Info«. Klik »Options | Freeze«, så funktionen er slået fra. Start så IE (for eksempel) og klik i dets vindue. Se på CLASS-egenskaben i AutoIt Window Info – IE-klassenavnet er IEFrame.

Nu kan du bruge det. Skriv WinWait(”[CLADD:IEFrame]”), ikke titlen, for at finde browseren. Der er situationer, hvor denne fremgangsmåde ikke virker, men den er som regel meget robust, og vi anbefaler, at du bruger CLASS-metoden først, når du skal identificere et applikationsvindue.

Det er nemt at skrive AutoIt-scripts, der simulerer tastaturtryk, som styrer handlinger på din pc. Det er vanskeligere at sikre sig, at de er lige så driftssikre på andre systemer.

Du skriver måske noget, der skal styre Kontrolpanel eller Stifinder, hvorefter du sender [Tab]-taster for at vælge den ønskede funktion. Det kan godt fungere, men hvad nu, hvis du går fra Klassisk visning til Kategorier i Kontrolpanel eller bruger en anden visning i Stifinder?

De tastaturtryk, man skal bruge til at simulere en handling, kan også ændre sig, hvis man går fra et operativsystem til et andet, eller hvis man tilføjer eller fjerner addons. Man kan risikere, at scriptet starter den forkerte dialogboks med katastrofale resultater til følge.

Tænk altid over porterbarhed, når du laver et script. Undgå om muligt at vælge noget ved at bruge Send til at simulere en lang sekvens af tastaturtryk – send det hellere direkte.

Brug ikke piletaster til at flytte rundt i Kontrolpanel – find den rigtige kommando til at starte den applet, du skal bruge. I dialogbokse skal du bruge genvejstaster til at gå direkte til den ønskede funktion.

Tænk over, hvordan til kan ændre sig i andre Windowsversioner, navnlig hvis du automatiserer sådan noget som Startmenuen. Og tænk dig grundigt om, før du bruger AutoIt til at styre noget, der kan beskadige dit system, såsom at formatere drev. Risikoen for fejl vejer tungere end fordelene.

[themepacific_accordion]
[themepacific_accordion_section title="Fakta"]

Det skal du bruge…

[/themepacific_accordion_section]
[themepacific_accordion_section title="Fakta"]

Opret advarsler

[/themepacific_accordion_section]
[themepacific_accordion_section title="Fakta"]

Flere oplysninger

[/themepacific_accordion_section]
[/themepacific_accordion]