Schlagwort-Archive: autoit

autoit Syntax Text in Datei?

Überprüfen, ob ein TEXT in einer DATEI enthalten ist:

 

If StringInStr(FileRead('C:\Test.txt'), 'String') Then MsgBox(0,"", "String vorhanden!")

 

Ausführlich:

 

$Dateipfad = 'C:\Test.txt'

$Suchstring = 'String'

$Dateitext = FileRead($Dateipfad)

If StringInStr($Dateitext, $Suchstring) Then MsgBox(0,"", "String vorhanden!")

oder:

If StringInStr(FileRead($Dateipfad), $Suchstring) Then MsgBox(0,"", "String vorhanden!")

 


 

Text in einer Datei finden und ersetzen:

 

$ConfigFile = $Path & "\" & "File.config"

$Find = "SUCHEN"

$replace = "Finden"

 

$retval = 0

Local $retval = _ReplaceStringInFile($ConfigFile, $Find, $replace)

If $retval < 1 Then

;                MsgBox(0, "ERROR", "The pattern " & $Find & " could not be replaced in file: " & $ConfigFile & " Error: " & @error)

Else

       MsgBox(0, "INFO", "Found " & $retval & " occurances of the pattern: " & $find1 & " in the file: " & $ConfigFile)

       MsgBox(0, "INFO", "Replaced ServerName " & $Find & " in Config File to " & $replace)

EndIf

 


 

Text-Teile in einer Datei finden und Zeile ersetzen, oder anhängen, wenn nicht gefunden:

 

autoit Syntax Start Parameter

Commandline Parameter einlesen und auswerten:

 

z.B.:        /h , -h , /? oder -?        zeigt die Hilfe an

       /i oder -i                zeigt Informationen an

       /d oder -d                zeigt Debug-Informationen (z.B. Variablen-Werte) an

 

Diese müssen natürlich im Programm vorbereitet werden:

 

dim $debug=0        ; wenn 1, dann Debug-Infos anzeigen

dim $info=0                ; wenn 1, dann Info-Infos anzeigen

 

dim $setupDir=@ScriptDir        ; @AppDataDir

 

 

; ### check for CommandLineParameters

if $CmdLine[0]>0 Then

  if StringInStr($CmdLineRaw, "/h", 2) OR  StringInStr($CmdLineRaw, "/?", 2) OR StringInStr($CmdLineRaw, "-h", 2) OR  StringInStr($CmdLineRaw, "-?", 2) then HelpBox()

  if StringInStr($CmdLineRaw, "/d", 2) OR  StringInStr($CmdLineRaw, "-d", 2)then $debug=1

  if StringInStr($CmdLineRaw, "/i", 2) OR  StringInStr($CmdLineRaw, "-i", 2)then $info=1

EndIf

 

if $debug = 1 Then MsgBox(48, "_DEBUG_", "Var: $setupDir := " & $setupDir _

       & @CRLF &  "Var: $iniFile := " & $iniFile )

EndIf

 

if $info = 1 Then MsgBox(64, "_INFO_", "Info…" _

       & @CRLF & "Setupdatei lautet:" _

       & @CRLF & $setupFile & @CRLF & "Status: " & $setFileExists)

EndIf

 

; ################# eigene Funktionen ######################

 

Func HelpBox()

  MsgBox(32, "_HELP_", "Hilfe:" & @CRLF &  "Dieses Programm automatisiert die Installation von AEB – WUP." & @CRLF _

  & "In einer INI-Datei namens wup-install.ini muss die Setup-Datei angegeben werden." & @CRLF & @CRLF  _

  & "Beispiel der INI-Datei:" & @CRLF _

  & "        [setup]" & @CRLF _

  & "        file=wup.exe" & @CRLF & @CRLF _

  & "wobei WUP.EXE die Setup-Datei der Installation ist." & @CRLF & @CRLF _

  & "——————————————————" & @CRLF & @CRLF _

  & "Man kann dieses Programm mit folgenden Parametern starten:" & @CRLF _

  & "        diese Hilfe:        /h oder /? oder -h oder -? " & @CRLF _

  & "        InfoMode:        /i oder -i" & @CRLF _

  & "        DebugMode:        /d oder -d" & @CRLF & @CRLF _

  & "——————————————————" & @CRLF & @CRLF _

  & "Bei Fragen oder Änderungswünschen wende man sich an George " & @CRLF _

  & "Phone: +49 2773 924 3915 · mailto:quinting.g@loh-services.de" & @CRLF )

  EXIT

EndFunc        ; HelpBox

 

; ==================================================================

 

 


 

Funktion findet den Parameter-Wert nach einem Erkennungs-String (z.B: /u:)

 

local $UserId

 

if $CmdLine[0]>0 Then

  if StringInStr($CmdLineRaw, "/u:", 2) then

          local $UserId = _ExtractParameter($CmdLine,"/u:")

 

          MsgBox(64,"INFO","$CmdLineRaw: " & $CmdLineRaw _

          & @CRLF & "$CmdLine[0]: “ & $CmdLine[0] _

          & @CRLF & "$CmdLine[1]: “ & $CmdLine[1] _

          & @CRLF & "$UserId: " & $UserId _

          )

  EndIf

 

EndIf

 

MsgBox(64,"INFO","$UserId: " & $UserId)

 

EXIT

; ——————————————————–

 

Func _ExtractParameter($Array,$SubString)        ; ========================================

       Local        $Parameter
       for $i = 1 to $Array[0]

               if StringInStr($Array[$i], $SubString, 2) > 0 Then

                       $Parameter = StringTrimLeft($Array[$i],StringLen($SubString))

               EndIf

       Next

 

       Return $Parameter

 

EndFunc        ; _ExtractParameter($Array,$SubString) ————————————————————

 

autoit Syntax SEND Keys

Schnell Referenz für SEND("keys" [,flag])

o^        Ctrl

o!        Alt

o+        Shift

o#        Win

 

WINdows-7 – Explorer beenden: Quelle

       CTRL+ESC um das Startmenu zu öffnen

       Rechts-Pfeil, so das die "Herunterfahren"-Schaltfläche aktiviert wird

       CTRL und SHIFT halten und zusätzlich die Application Taste (oder F10) drücken

       dann "x" (engl) bzw. "b" (deu) drücken, um den Explorer zu beenden.

 

if @OSLang = 0407 Then

       SEND("^{ESC} {RIGHT} ^+ {F10} {b}")        ; (deutsches Windows)

Else

       SEND("^{ESC} {RIGHT} ^+ {F10} {x}")                ; (englisches Windows)

Endif

 

 

WINdows-7 – Explorer starten:


RunWait("explorer.exe")

 

1.)        ALT-Taste drücken, dann erscheint die Menüleiste
dort EXTRAS anklicken
und dann Netzlaufwerk verbinden.

 

2.)        Rechtsklick auf Netzwerk
dann Linksklick auf Netzlaufwerk verbinden. (siehe Bild)

autoit Syntax Registry

Überprüft, ob der Schlüssel "v4" vorhanden ist:

 

For $i = 1 To 10

   Local $var = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP", $i)

   If @error <> 0 Then ExitLoop

       if StringInStr($var,"v4") then

               MsgBox(4096, "SubKey #" & $i & " under NET Framework Setup\NDP: ", $var)

       Endif

Next

 

Vorhandene Schlüssel- und WerteNamen:

 

Dim $KeyNames  = "KeyNames:" & @CRLF & @CRLF

Dim $KeyName = "HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Setup\Reader"

 

Dim $ValueNames = "Valuenames:" & @CRLF & @CRLF

Dim $ValueName = ""

 

Schlüssel-Namen:

For $i = 1 To 99

   Local $var = RegEnumKey($KeyName, $i)

   If @error <> 0 Then ExitLoop

       $KeyNames = $KeyNames & $i & ".) " & $var & @CRLF

 

Next

 

       MsgBox(65,"INFO","KeyNames under: " & $KeyName & @CRLF & @CRLF & $KeyNames)

 

 

Werte-Namen:

if RegRead($KeyName, "") >= ""  AND @error < 0 then                ; (es gibt den "(STANDARD)"-Wert)

               For $i = 1 To 100

                       Local $var = RegEnumVal($KeyName, $i)

                       If @error <> 0 Then ExitLoop

                       $ValueNames = $ValueNames & $i & ".) " & $var & " : " & RegRead($KeyName,$var) & @CRLF

               Next

 

                       MsgBox(65,"INFO","ValueNames under: " & $KeyName & @CRLF & @CRLF & $ValueNames)

Else

       MsgBox(65,"INFO","Kein STANDARD Wert unter: " & $KeyName)

EndIf

 

——————————————————————-

 

if RegRead($KeyName, "") >= ""  AND @error > 0 then                ; (es gibt den "(STANDARD)"-Wert NICHT)

 


 

Auslesen von allen Registrywerten unterhalb eines Schlüssels:

       Global $RegPath        = "HKEY_LOCAL_MACHINE\SYSTEM\FLG-Landesk\"        ; Registry-Pfad

       $IniFile                = @ComputerName & "_" & @YEAR & @MON & @MDAY & "-" & @HOUR & @MIN & ".ini"

 

               #Region ; ***** Read Registry Info and write to INI-File

 

               For $i = 1 To 50        ; zweiter Wert größer als erwartete Anzahl

                       Local $var = RegEnumKey($RegPath, $i)        ; $var ist Unterschlüssel unter $RegPath

                       If @error <> 0 Then ExitLoop

                       IniWrite($IniFile,$var,"Productname",RegRead($RegPath & $var,"Productname"))

                       IniWrite($IniFile,$var,"IsInstalled",RegRead($RegPath & $var,"IsInstalled"))

                       IniWrite($IniFile,$var,"Productversion",RegRead($RegPath & $var,"Productversion"))

                       IniWrite($IniFile,$var,"Revision",RegRead($RegPath & $var,"Revision"))

                       IniWrite($IniFile,$var,"ProgramFile",RegRead($RegPath & $var,"ProgramFile"))

                       IniWrite($IniFile,$var,"InstallPath",RegRead($RegPath & $var,"InstallPath"))

                       IniWrite($IniFile,$var,"Installdate",RegRead($RegPath & $var,"Installdate"))

                       IniWrite($IniFile,$var,"Installtime",RegRead($RegPath & $var,"Installtime"))

                       IniWrite($IniFile,$var,"UNInstalldate",RegRead($RegPath & $var,"UNInstalldate"))

                       IniWrite($IniFile,$var,"UNInstalltime",RegRead($RegPath & $var,"UNInstalltime"))

                       IniWrite($IniFile,$var,"InstallState",RegRead($RegPath & $var,"InstallState"))

               Next

 


 

(Standard) Wert setzen und auslesen:

 

#RequireAdmin                                                                                ; wichtig, da Berechtigung benötigt wird!

RegWrite("HKEY_CLASSES_ROOT\AutoIt3Script\Shell","","Reg_SZ","Edit")        ; "" so wird der (Standard) angesprochen (oder "ÿ" = ALT+152)

$wert = RegRead("HKEY_CLASSES_ROOT\AutoIt3Script\Shell","")

MsgBox(64,"Reg","Standard enthältt: " & $wert)                                        ; der ausgelesene Wert wird angezeigt

 


 

Überprüfen, ob ein Schlüssel vorhanden ist: (funktioniert so nicht!)

Local $Fehler

$PendingFileRenameOperations = RegEnumKey("HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager", "PendingFileRenameOperations")

$Fehler = @error

 

Switch $Fehler

   Case -1

       $FehlerText = "unable to retrieve requested subkey (key instance out of range)"

   Case 1

       $FehlerText = "unable to open requested key"

   Case 2

       $FehlerText = "unable to open requested main key"

   Case 3

       $FehlerText = "unable to remote connect to the registry"

EndSwitch

 

MsgBox(0,"RegEnumKey", "$PendingFileRenameOperations ist: " & $PendingFileRenameOperations _

       & @CRLF & "@Error ist: " & $Fehler _

       & @CRLF & @TAB & $FehlerText _

       )

 


 

 

Registry Type

Empirum

Autoit

0x00000000

REG_SZ

0x00000001

REG_BINARY

0x00010000

REG_MULTI_SZ

0x00020000

REG_EXPAND_SZ

0x00010001

REG_DWORD

0x00020001

REG_NONE

 

 

 

autoit Syntax MAIL

eMails senden:

 

#include <Inet.au3>

 

Local $s_SmtpServer = "smtp-Server.com"

Local $s_FromName = "Sender"

Local $s_FromAddress = "postmaster@localhost.de"

Local $s_ToAddress = "george@mail.com"

Local $s_helo = ""

Local $s_Subject = "Das ist ein Test"

Local $as_Body[3]

$as_Body[0] = "AD Email Text"

$as_Body[1] = "Zeile 2"

$as_Body[2] = "Zeile 3"

Local $Response = _INetSmtpMail ($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, $s_helo, -1,1)

Local $err = @error

If $Response = 1 Then

       MsgBox(0, "Success!", "Mail sent")

Else

       MsgBox(0, "Error!", "Mail failed with error code " & $err)

EndIf

 

 

autoit Syntax MACRO Reference

 

AutoIt Macro

Description

DOS Variable

Target

@CommonFilesDir

Path to Common Files folder

%CommonProgramFiles%

C:\Program Files\Common Files

 

   

 

   

 

 

@AppDataCommonDir

Path to Application Data

%ALLUSERSPROFILE%

C:\ProgramData

@DesktopCommonDir

   

C:\Users\Public\Desktop

@DocumentsCommonDir

   

C:\Users\Public\Documents

@FavoritesCommonDir

   

C:\Users\adm-quinting.g\Favorites

@ProgramsCommonDir

   

C:\ProgramData\Microsoft\Windows\Start Menu\Programs

@StartMenuCommonDir

   

C:\ProgramData\Microsoft\Windows\Start Menu

@ProgramsCommonDir

   

C:\ProgramData\Microsoft\Windows\Start Menu\Programs

@StartupCommonDir

   

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup

@TempDir

Temporary folder

%temp%

C:\Temp

 

 

autoit Syntax _IE.au3

_IE.au3 Tutorial für absolute Anfänger

Als erstes mal will ich aber sagen das Ihr Grundkenntnisse der GUI benötigen werdet (Koda Form Designer)
Ihr müsst wissen wie ihr dann diese Buttons etz. verwendet das zeige ich zwar gehe aber nicht näher drauf ein
Ihr sollt zur einfachen Benutzung euch Firefox und das Addon "Firebug" runterladen da das meiste darin einfach und schnell zu finden ist.
Ich werde hauptsächlich versuchen wenig in den "Domelementen zu graben und diese Methoden anders zu verwirklichen die vielleicht einfach sind.

Das Tutorial soll nun mal einen einfachen Einblick in IE.au3 geben, dessen Möglichkeiten die viel zu oft unterschätz wird offen legen und auch manche die mit dem derzeitigen Problemen der FF.au3 Funktionen eine Option bieten.

Auch möchte ich vorweg klarstellen das sich die Rechtschreibung und ich seit Jahren auf Kriegsfuss befinden, wenn ihr also beschwerden habt über meine Rechtschreibung etz. Bitte an das Salzamt wenden. (Werde mich aber bemühen)

Inhalt:
1. Öffnen einer IE Browseranwendung
2. Öffnen einer IE Browseranwendung in einer GUI ( Embedded )
3. Das Navigieren zwischen Seiten
4. Das Schliessen von IEFenster
5. Das Klicken auf Bilder
6. Das Klicken auf Link´s
7. Warten bis eine Seite geladen wurde
8. Das Ausfüllen von Formularen ( Form ) und Absenden
9. Die Wichtigsten _IEAktion Befehle
10. Webseiten obtisch bearbeiten

Start Tutorial

Wichtig: Das $oIE ist immer beim erstellen des zu behandelnden IE Objekts zu Deklarieren

#include <IE.au3>
Global $oIE = _IECreate( "www.autoitbot.de")
Global $oIE = _IECreateEmbedded()

 

1. Öffnen einer IE Browseranwendung


Als Erstes Schauen wir uns mal die Parameter an

 

AutoIt – Quellcode

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

#include <IE.au3>

 

$s_Url = "www.google.de" ;Deine Gewünschte URL die beim Start geladen wird

; Standart ist "about:blank"

 

$f_tryAttach = 0 ; Ein Vorhandenes Fenster Ansteuern oder ein Neues

; 0 = Neues Fenster (Standart)

; 1 = Vorhandenes Verwenden wenn nicht neues erstellen

 

$f_visible = 1 ;Sichtbarkeit des Fensters

; 0 = Unsichtbares Fenster

; 1 = Sichtbar (Standart)

 

$f_wait = 1 ; Warten bis seite geladen wurde

; 0 = Nicht warten Sofort weitermachen (Nicht zu empfehle wenn du etwas Im browser erledigen willst)

; 1 = Warten bis Seite Geladen (Standart)

 

$f_takeFocus = 1 ;Fenster den Fokus übergeben (wird dann zum Aktivierten Fenster)

; 0 = Nicht Fokusieren

; 1 = Fokus Übertragen (Standart) ( Bei Unsichtbarkeit erhällt es nicht den Sichtbaren Fokus)

 

$oIE = _IECreate( $s_Url, $f_tryAttach , $f_visible , $f_wait , $f_takeFocus )

 

Und nun Praktische Anwendungsmöglichkeiten

 

AutoIt – Quellcode

1

2

3

4

5

6

7

8

9

; Versuche ein Vorhandenes Fenster zu Autoitbot zu verbinden wenn nicht ein neues erstellen

$oIE = _IECreate( "www.autoitbot.de", 1)

 

; Neues Unsichtbares Fenster zu Google

$oIE = _IECreate( "www.google.at", 0, 0)

 

;Extremes Beispiel

; Neues fenster zu google bei dem nicht gewartet werden soll bis es fertig ist und ohne Fokus

$oIE = _IECreate( "www.google.at", 1, 0, 0, 0)

 

2. Öffnen einer IE Browseranwendung in einer GUI ( Embedded )


Hier ein Einfaches "Praxisbeispiel"welches einfach zu verstehen ist und dementsprechend Auskommentiert wurde

 

AutoIt – Quellcode

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

#include <GUIConstantsEx.au3>

#include <WindowsConstants.au3>

#include <IE.au3>

 

Opt("GUIOnEventMode", 1) ; Einfacher in der verwendung da man Funktionen Direkt aufrufen kann durch Buttons etz.

 

 

; Wir erstellen ein Com objekt welches in unserer Gui angezeigt wird

_IEErrorHandlerRegister()

$oIE = _IECreateEmbedded()

 

;Nun erstellen wir unsere Gui

GUICreate("Gui mit IE embedded", 600, 600)

GUISetOnEvent($GUI_EVENT_CLOSE, "_exit") ; durch eventmode muss das gesetzt werden und auch die Funktion dazu erstellt werden

 

;Nun das wichtige Obj das zu unserem Browser wird da wir ja $oIE einbinden

$GUIActiveX = GUICtrlCreateObj($oIE, 10, 10, 580, 560)

 

_IENavigate($oIE, "http://www.google.de"); Dazu Später noch eine genaue Erklärung

 

GUISetState() ; Anzeigen der GUI

 

; Wartet, bis der Benutzer das Fenster schließt

While 1

Sleep(1000)

WEnd

 

;unsere selbstgemachte exitfunktion

Func _exit()

Exit

EndFunc   ;==>_exit

 

3. Das Navigieren zwischen verschiedenen Seiten


Erklärung

 

AutoIt – Quellcode

1

2

$oIE ; ist unser zufor geöffnetes Obj , entweder eigenes Fenster oder eine embedded variante

_IENavigate($oIE, "www.google.de") ; danach follgt der link


Praxisbeispiel 1
( Wir erstellen uns ein IE fenster wie wir aus 1. kennen und Navigieren auf 3 Verschiedene Seiten in Folge )

 

AutoIt – Quellcode

1

2

3

4

5

6

#include <IE.au3>

 

$oIE = _IECreate( "www.autoitbot.de"); Wir Öffnen IE mal mit Autoit

_IENavigate($oIE, "www.google.de") ; nachdem wir geladen haben wandern wir Schnurstrax auf Google

_IENavigate($oIE, "www.yahoo.de") ; schaun uns das neuste auf Yahoo an

_IENavigate($oIE, "www.autoit.at") ; da wir aber an promienws kein Interresse haben sind wir schnell wieder bei nem Autoit Forum


Praxisbeispiel 2
(Wenn Wir uns Google genauer Ansehen und z.B. AutoItbot darin suchen ändert sich oben der Link … das versuchen wir mal Direkt)

 

AutoIt – Quellcode

1

2

3

4

5

6

7

#include <IE.au3>

 

$suche = "Ich habe Feuer gemacht Uga Aga" ;suchen wir bei google

$suche = StringReplace($suche," ","+") ;da google in der "linkleiste" keine leerzeichen will sonder + wandeln wir leerzeichen in + um

$oIE = _IECreate( "www.google.at")  ;wir könnten diese suche auch schon beim öffnen machen allerdings erklär ich grade das Navigate

 

_IENavigate($oIE, "http://www.google.com/search?q="& $suche ) ;das währe unsere suche

 

4. Das Schliessen von IEFenster


Das ist vorallem dann Wichtig wenn ihr unsichtbare fenster benützt da diese dan der User sollte euer scrippt beenden nicht mehr auf normalen wege schliessen können und den taskmanager benützen müssen. ( bei embedded versionen nicht benötigt da diese mit gui selbst Schliessen)

 

AutoIt – Quellcode

1

2

3

#include <IE.au3>

$oIE = _IECreate( "www.google.at") ;Öffnen wir ein Fenster

_IEQuit($oIE) ; machen wir es wieder zu ^^


Ein TIPP

 

AutoIt – Quellcode

1

2

3

4

Func _exit()

_IEQuit($oIE)

Exit

EndFunc   ;==>_exit

 

5. Das Klicken auf Bilder


Zuerst die Grundlagen, um zu sehen wie wir etwas ansteuerm

 

AutoIt – Quellcode

1

2

3

4

_IEImgClick ($oIE, "Eindeutiger Parameter des Bildes", "Suchoption")

; src = (Standard) Bild wird nach seiner Quelle identifiziert

; name = Bild wird anhand seines Namens identifiziert

; alt = Bild wird anhand seines Alternativtextes identifiziert


Hier ein Paar praxisbeispiele
Autoit.at Button im Autoitbot.de Forum Anklicken

 

PHP-Quelltext

1

[url=’http://www.codebot.de/index.php?page=Register‘][Inhalt nur für registrierte Mitglieder sichtbar.][/url]

 

 

AutoIt – Quellcode

1

2

3

4

5

6

7

8

9

10

;Also entweder über "slt" oder "src"

;"src"

#include <IE.au3>

$oIE = _IECreate( "www.autoitbot.de") ;Öffnen wir ein Fenster

_IEImgClick ($oIE, "http://www.autoit.at/button.png", "src")

;=============== oder aber

;"alt"

#include <IE.au3>

$oIE = _IECreate( "www.autoitbot.de") ;Öffnen wir ein Fenster

_IEImgClick ($oIE, "AutoIt.@ – Tutorials, Tools, Skripte, UDF's, Forum", "alt")


Autoit.at Toolsbereich auf "spiele" Klicken

 

AutoIt – Quellcode

1

2

3

#include <IE.au3>

$oIE = _IECreate( "http://www.autoit.at/Mehr-Tools.html") ;Öffnen wir ein Fenster

_IEImgClick ($oIE,"images/buttons/autoitspiele.png", 'src')

 

6. Das Klicken auf Link´s


Wir Können natürlich auch Link´s "Klicken" anstatt direkt aufzurufen, das ist vorallem dan ein vorteil wenn wir nicht den ganzen link kennen.

Linkklick über den Index ( 0 ist der erste link auf einer seite )
Diese Methode empfehle ich nicht

 

AutoIt – Quellcode

1

_IELinkClickByIndex ($oIE, 2)

Dann können wir Den link auch per angezeigten text Knlicken (dieser sieht bei html In etwa so aus

 

PHP-Quelltext

1

  [url=’http://www.codebot.de/index.php?page=Register‘][Inhalt nur für registrierte Mitglieder sichtbar.][/url] 


und würde bei IE uns So aussehen (sehr brauchbar)

 

AutoIt – Quellcode

1

_IELinkClickByText ($oIE, "Shoutbox")

und dann gibt es noch meine Inoffizielle Methode die ich als UDF vorbereitet habe In einem beispiel

 

AutoIt – Quellcode

1

2

3

4

5

6

7

8

9

10

11

12

13

Global $oIE = _IECreate("www.wikipedia.de")

_IELinkClick("pedia.or") ; klickt auf den link > http://de.wikipedia.org/ <

; weil pedia.or darin vorkommt ( man sollte es sogenau als möglich angeben um sicher den erwünschten treffer zu erziehlen )

Func _IELinkClick($sLink)

    $oLinks = _IELinkGetCollection($oIE) ; alle Links werden als objekte gespeichert

For $oLink In $oLinks

    If StringInStr($oLink.href,$sLink) Then ;befindet sich der teil den wir anklicken wollen in einem Opjekt dann

        _IEAction($oLink,"click") ;Klick auf das objekt

        Return True ;Rückgabe True

    EndIf

Next

Return SetError(1) ; Link nicht gefunden

EndFunc

 

 

7. Warten bis eine Seite geladen wurde


In den meinsten Funktionen ist das Warten Standartmässig aktiviert was heist das brauchen wir selten
ABER
NAtürlich kann es vorkommen das wir Diese Funktion/funktionen benötigen und zwar bei spiele die einen sogenanten "reload" haben
Das bedeutet die seite lädt sich nach bauabschluss oder alle 5 minuten um Info´s zu zeigen oder veränderungen etz
In diesem fällen ist Es unelässlich das wir vor einem Klick diese funktion aufrufen da sonnst unser klickbefehl Ins leere gehen würde
und das könnte bei nicht Ordnungsgemässen scrippten sogar zum Absturz führen.
Ausserdem Kann diese Funktion Zeitgleich Usersimulation durchführen
 

 

AutoIt – Quellcode

1

_IELoadWait ( $oIE , $i_delay = 0 , $i_timeout = -1 )


Das Bedeutet
$oIE ist die Internetexplorer Applikation ( unser Browser )
$i_delay ist die Zeit Wann die funktion gestartet werden soll In millisecunden standart 0 also sofort
$i_timeout ist die zeit die er maximal wartet bis er weitergeht Standart Siind 5 min ( 300000 ms)

Wie meinte ich das mit Usersimulation? Ich zeigs euch
 

 

AutoIt – Quellcode

1

2

_IELoadWait ( $oIE , Random(300,3500,1) )

;Nun würde das _IELoadWait erst 0,3 – 3,5 sec warten bis es weitermacht welches die klickzeit von user simmuliert

Wir Können nun Direkt oben nach den Include´s alle $i_timeout festlegen
und zwar mit
 

 

AutoIt – Quellcode

1

_IELoadWaitTimeout ( 1000*60*10 )


Das Bedeutet
;Nun hätten alle unsere danachfolgenden _IELoadWait einen Standart von 10 minuten [/autoit]
 

 

8. Das Ausfüllen von Formularen ( Form ) und Absenden


Gucken wir zunächst mal auf Google.at um zu sehen was wir da eigendlich für ein Inputfeld haben

 

PHP-Quelltext

1

<form onsubmit="google.fade=null" name="f" action="/search"><table cellspacing="0" cellpadding="0"><tbody><tr valign="top"><td width="25%">&nbsp;</td><td nowrap="" align="center"><input type="hidden" value="de" name="hl"><input type="hidden" value="hp" name="source"><input value="" title="Google-Suche" class="lst" size="55" name="q" maxlength="2048" onblur="google&amp;&amp;google.fade&amp;&amp;google.fade()" autocomplete="off"><br><input type="submit" onclick="this.checked=1" class="lsb" value="Google-Suche" name="btnG"><input type="submit" onclick="this.checked=1" class="lsb" value="Auf gut Glück!" name="btnI"></td><td width="25%" nowrap="" align="left" id="sbl" style="opacity: 1;"><font size="-2">&nbsp;&nbsp;  [url=’http://www.codebot.de/index.php?page=Register‘][Inhalt nur für registrierte Mitglieder sichtbar.][/url] 
&nbsp;&nbsp;  [url=’http://www.codebot.de/index.php?page=Register‘][Inhalt nur f
ür registrierte Mitglieder sichtbar.][/url]  </font></td></tr><tr><td align="center" colspan="3"><font size="-1"><span class="fade" style="text-align: left; opacity: 1;">Suche: <input type="radio" checked="" value="" name="meta" id="all"><label for="all"> Das Web </label> <input type="radio" value="lr=lang_de" name="meta" id="lgr"><label for="lgr"> Seiten auf Deutsch </label> <input type="radio" value="cr=countryAT" name="meta" id="cty"><label for="cty"> Seiten aus Österreich </label> </span></font></td></tr></tbody></table><input type="hidden" name="aq" value="f"><input type="hidden" name="oq" value=""><table cellspacing="0" cellpadding="0" class="gac_m" style="visibility: hidden; left: 270px; top: 213px; width: 485px;"></table></form>

Nebenbei: Firebug is schon ein feines Tool

Anmerkung
_IEbasiert auf Objekten das heist wir suchen objekte und tretten dennen In den *****
Achne ich meinte wir bearbeiten das diese objekte
Aus der FF.au3 kennen es viele das sie mit Array´s und Strings arbeiten, das ist bei IE bischen Anders aber keinesfalls schwerer

weitergehts, wir haben nun unsere Form und gehen ihr mal an den Kragen

 

AutoIt – Quellcode

1

2

3

4

5

6

7

8

9

10

11

12

13

Global $oIE = _IECreate("www.google.at")

;<form onsubmit="google.fade=null" name="f" action="/search">

;aha unsere Form heist "f" gut dan rufen wir sie

$oForm = _IEGetObjByName ( $oIE , "f" ) ;unsere Form anhand des Namens

; So wo ist nun unser Inputfeld

; <input value="" title="Google-Suche" class="lst" size="55" name="q" maxlength="2048" onblur="google&amp;&amp;google.fade&amp;&amp;google.fade()" autocomplete="off"

; ahh da isse ja und sie nennt sich "q"

$oInput = _IEFormElementGetObjByName($oform, "q"); fir greifen auf das Obj der Form und holen uns das obj des Inputfeldes

_IEFormElementSetValue($oInput, "Autoit ist Cool") ; nun setzen wir den wert des obj neu ( unser inputfeld )

;nun nurnoch Absenden

; <input type="submit" onclick="this.checked=1" class="lsb" value="Google-Suche" name="btnG">

_IEFormSubmit ( $oForm ) ; genau wir sagen einfach der form das sie nun Submit machen soll, wie brav das IE

 

Ich hab auch non einen Login für Wurzelimperium vorbereitet

 

AutoIt – Quellcode

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

#include <IE.au3>

 

Global $oIE = _IECreate("www.wurzelimperium.de")

 

$sServer = "Server 30"

$sUsername = "Autoitbot"

$sUserPasswort = "autologin"

 

 

$oForm = _IEGetObjById($oIE, "form_login") ; Obj der Form ausgelesen

 

$oServer = _IEFormElementGetObjByName($oForm, "server") ;hier wird die combobox ausgelesen

_IEFormElementOptionSelect($oServer, $sServer, 1, "byText") ; Hier wird der Combobox eine selection übertragen

 

$oName = _IEFormElementGetObjByName($oForm, "USR") ; inputfeld Name

_IEFormElementSetValue($oName, $sUsername )

 

$oPasswort = _IEFormElementGetObjByName($oForm, "dummy") ;inputfeld Passwort

_IEFormElementSetValue($oPasswort, $sUserPasswort)

 

_IELinkClickByText($oIE, "Einloggen") ;Linkclick auf "Einloggen"

 

 

9. Die Wichtigsten _IEAktion Befehle


Befehle Für den Browser

 

AutoIt – Quellcode

1

2

3

4

5

_IEAction($oIE,"back"); Geht in der Historyliste einen Eintrag rückwärts.

_IEAction($oIE,"forward"); Geht in der Historyliste einen Eintrag vorwärts.

_IEAction($oIE,"stop"); Beendet alle nicht erledigte Aufrufe, Downloads und dynamische Seitenelemente, wie z.B. Hintergrundgeräusche und Animationen.

_IEAction($oIE,"home"); Geht zur momentanen Home- oder Startseite.

_IEAction($oIE,"refresh"); Aktualisiert den Browser.(auch Frames kann es einzeln refreshen


Befehle Für Objekte die ihr mit _IEGetObjById oder mit _IEGetObjByName erhält

 

AutoIt – Quellcode

1

2

3

_IEAction($oIE,"click"); Simuliert einen Klick auf das angegebene Element.

_IEAction($oIE,"invisible"); Setzt den Status des Objekts auf versteckt.

_IEAction($oIE,"visible"); Setzt den Status des Objekts auf sichtbar.


 

10. Webseiten obtisch bearbeiten


Ist rein optisch und nur für euch sichtbar, man kann damit Homepages wie mit Greasemonkey auf HTML Wege bearbeiten

 

AutoIt – Quellcode

1

2

3

4

5

#include <IE.au3>

 

Global $oIE = _IECreate("www.google.de")

$oInput = _IEGetObjByName($oIE,"f")

_IEDocInsertHTML ($oInput, "Hilfe  Google hällt mich gefangen konnte nur noch diese Nachricht schreiben"&@CRLF&"Helft mir" )

 

 

 

autoit Syntax Info an User

Es gibt verschiedene Möglichkeiten, Infos an den User vor dem Monitor weiterzugeben.

 

; Messagebox – Programm wird erst nach schließen der MsgBox oder nach 15 Sek. fortgeführt

       $Timeout = 15

       MsgBox(4096, "Info", "Dies ist eine MessageBox." & @CRLF & "Sie verschwindet automatisch nach " & $Timeout & " Sekunden.",$Timeout)

 

 

; Tooltip – kann positioniert werden und ist parallel zum Programmablauf sichtbar

       $PosX = 300

       $PosY = 200

       $Title = "Tooltip-Titel"

       $Icon =        1        ; 0 = No icon, 1 = Info icon, 2 = Warning icon, 3 = Error Icon

       $Option = 4

;~        [optional] Sets different options for how the tooltip will be displayed (Can be added together):

;~                1 = Display as Balloon Tip Requires IE5+

;~                2 = Center the tip at the x,y coordinates instead of using them for the upper left corner.

;~                4 = Force the tooltip to always be visible confining it to monitor borders if necessary. If multiple monitors are used, then the tooltip will "snap-to" the nearest monitor.

 

       ToolTip("Dies ist ein Tooltip", $PosX, $PosY,$Title, $Icon, $Option)

       Sleep(2000) ; Sleep 2 sec. to give tooltip time to display

       MsgBox(4096, "Info", "Dies MessageBox wird während des Tooltips angezeigt.",20)

       Sleep(2000) ; Sleep 2 sec. to give tooltip time to display

       ToolTip("")                ; schließt bzw. löscht den Tooltip

 

 

 

; Traytip – funktioniert nicht unter Windows 7

       TrayTip("TrayTipTitle", "Ich bin ein TrayTip", 15, 1)

       MsgBox(4096, "Info", "Weiter mit OK.")

       TrayTip("Alle TrayTips löschen", "", 5, 2)

       TrayTip("TrayTipTitle", "Ich bin ein weiterer TrayTip", 15)

       Sleep(5000)
 

autoit Syntax GLOBALe Variablen

Globale Variablen, die in einer eingebundenen Datei z.B. in einer Funktion deklariert werden,
stehen auch im Hauptprogramm, welches die Funktion aufruft zur Verfügung.

Beispiel: $Var_A ist auch im HauptProgramm bekannt und definiert

HauptProgramm:

#include <_Test_SUB.au3>
_SetConstants()
MsgBox(0,"SubTest","$Var_A: " & $Var_A)
Exit

 

Eingeschlossene Datei mit Function:  _Test_SUB.au3

Func _SetConstants()
Global $Var_A = 5
EndFunc ; _GetConstants