Tutorial2

Aus AutoitWiki

Wechseln zu: Navigation, Suche

HIER IST TEIL 2 DES TUTORIALS, WELCHES AUS TECHNISCHEN GRÜNDEN GETEILT WERDEN MUSSTE!

NEUE TEXTE BITTE HIER HINEIN!

TUTORIAL TEIL 1: Tutorial

Inhaltsverzeichnis

UDF

Bugfix hat für das Tutorial ein Tutorial (Achtung - Witz) geschrieben, wie man am besten UDFs erstellt und was sonst noch so dazugehört.

Zu finden ist das ganze natürlich auch hier, und zwar genauer gesagt da : --> Eigene_Funkionen



In AutoIt gibt es die sog. UDF's ( User Defined Functions ). Dies sind Sammlungen von mehreren Funktionen zu einem Themenkreis, beispielsweise Arrays oder Dateien. Viele dieser UDFs werden schon mit der normalen AutoIt-Installation auf die Festplatte gebannt, zahlreiche sind in den angesprochenen Foren kostenlos herunterladbar. Wenn du der Meinung bist, eine deiner UDFs sollte in der nächsten AutoIt-Version eingebunden werden, dann kannst du sie hier unter Beachtung dieser Regeln posten.

UDFs verwenden

Um eine UDF in ein Script einzubauen und damit die darin enthaltenen Funktionen verfügbar zu machen, dient das Schlüsselwort include, also z.B.

#include <Array.au3>

Eigene UDFs erstellen

Jede AutoIt-Datei kann als Include eingebunden werden und damit auch als UDF dienen. In der Regel enthalten UDFs wirklich nur Funktionen, die mit zusätzlichen Informationen dokumentiert sind (Parameter, Rückgabewerte usw.).

Standards für das Programmieren von UDFs

Funktions Namen

Alle Funktionen müssen mit einem Unterstrich (_) beginnen. Jedes Wort in der Funktion sollte groß geschrieben werden. Das erste Wort eines Funktion sollte zeigen zu welcher Kategorie die Funktion gehört wie zb. "Date", "String", "Array", "Network" usw. Wenn das Wort jedoch zu kurz ist sollte eine leicht verständliche Abkürung benutz werden, wie etwa anstatt "Window", "Win" oder "Net" anstatt "Network". Alle Funktionsnamen müssen der internen Namens Bestimmung von Autoit entsprechen.

Variabel Namen

Das erste Paar von Zeichen nach dem Dollarsymbol ($), sollten dem darin gespeicherten Wert passend zugeordnet werden. Hier ist eine List mit verschiedenen Vorzeichen und dem dazu gehörenden Datentype.

$a<Zeichen> - Array (Das zweite Zeichen beschreibt den Datentype der darin enthaltenen Werte)
$b - Binäre Daten
$h - Datei oder Fensterhandle
$i - Interger
$f - boolescher Wert (true/false)
$n - Float
$s - String
$v - Variante (Unbekannter Datentype)

Für den Rest der Variabel werden großgeschriebene Wörter benutzt, die den Zweck der Variabl eindeutig Beschreibt. Namen wie zum Beispiel "$iC" sind nicht zu akzeptieren. "$aiWeekDayNames" oder "$iCounter" sind viel eindeutiger und leichter zu verstehen. Alle Variablen müssen vor der ersten Verwendung lokal deklariert werden (Local). Dim oder Global sollten vermieden werden, alle Variablen sollten über Funktions Paramter übergeben werden. ByRef wird verwendet falls es ein Rückgabe Wert geben muss.

Parameter

Auf Parameter müssen die selben Namensbestimmungen angewand werden wie für Variablen. Die übergebenen Wert müssen auf ihr Gültigkeit hin überprüft werden (isarray, isstring, isint...).

IE.au3 - Fernsteuerung des Internet Explorers

Seit Version 3.2.0.0 enthält AutoIt bereits im Auslieferungszustand die UDF IE.au3. Diese bietet phantastische Möglichkeiten für die Interaktion von AutoIt mit Webseiten. Wie der Name bereits vermuten lässt, funktioniert das im Moment nur mit dem Internet Explorer. Für Firefox gibt es derzeit keine vergleichbar komfortable Möglichkeit der Automation mit AutoIt.
Einschub: Thorsten Willert hat eine Bibliothek FF.au3 zum Zugriff auf den FF geschrieben, die über | seine Homepage zugänglich ist. Man wähle 'FF.au3' im linken Menü. Die Direktzugriffsadresse ist | hier. Ich habe diese Bibliothek aber noch nicht gross getestet...
Aber es ist insofern kein Problem, den IE zu benutzen, als man alles im Hintergrund ablaufen lassen kann und so der IE noch nicht mal sichtbar gestartet werden muss. Mit dem IE7 und der Auto-IT-Version v3.2.10.0 gibt es derzeit noch Probleme, man sollte also ggf. einen IE6 installiert haben, damit es ordentlich funktioniert. Wenn man jedoch die Version v3.2.11.12 installiert, funktioniert es auch ganz gut mit dem IE7. Allerdings kann man nicht alle Funktionen in allen Zusammenhängen testen...

Eine Seite im IE Öffnen

Den Beginn einer IE-Automation bildet meist das Öffnen des IE-Fensters:

_IECreate ( [$s_Url = "about:blank" [, $f_tryAttach = 0 [, $f_visible = 1 [, $f_wait = 1 [, $f_takeFocus = -1]]]]] )

Man kann also direkt eine Seite mitgeben, die beim Start geladen werden soll, ob ein neues Fenster erzwungen werden soll ($f_tryAttach = 0), ob das Fenster sichtbar ist, ob gewartet werden soll bis die angegebene Seite geladen ist und ob das Fenster aktiv gesetzt werden soll.
Ein einfacher Beispielaufruf lautet so:

#include <IE.au3>
_IECreate("http://www.autoit.de", 1, 1)

Eine zweite Möglichkeit wäre ein "Embedded Object", womit man ein IE-Fenster in einer GUI darstellen kann:

#include <IE.au3>

$oIE = _IECreateEmbedded ()
GUICreate("Embedded Internet Explorer", 800, 600)
GUICtrlCreateObj($oIE, 0, 0, 800, 600)
GUISetState()

_IENavigate ($oIE, "http://www.autoit.at")

While GUIGetMsg()<>-3
WEnd

Formularfelder ausfüllen

Eine Hauptleistung, die mit Hilfe der IE.au3 vollbracht werden kann, ist ein einfacher automatischer Login auf einer bestimmten Webseite.
Eines vorneweg: Ganz ohne HTML-Kenntnisse kommt man da nicht sicher zu Ergebnissen, aber für solche Fälle gibt es ja Foren... Und die Quellcode-Ansicht des IE (im IE7 Menü /Ansicht/Quelltext) kann auch oft sehr hilfreich sein, ebenso wie der FF, weil damit geregelt werden kann, was Javascript alles darf. Bestimmte Websites arbeiten nämlich mit dynamischem und aktivem Code, z.B. mit JavaScript, und können damit u.a. das Ansehen des Quelltextes verhindern. Dann kommt man u. U. nicht an benötigte Infos, z.B. die Namen von Frames, Forms oder anderen Objekten, heran. Im FF kann man JavaScript verbieten, diverse Aktionen zu machen (z.B. das Kontextmenü zu deaktivieren). Das geht über Menü /Extras/Einstellungen, dann im Tab 'Inhalt' den Marker 'Javascript aktivieren' und den Button 'Erweitert' drücken. Dann öffnet sich ein Fenster, mit dem Javascript bestimmte Aktionen erlaubt werden. Dort nimmt man die Markierung vor 'Kontextmenü verändern oder verbieten' heraus. Nun sind auch z.B. dynamische Javascript-Menüframes der visuellen Quelltextanalyse zugänglich.
Um ein Feld auszufüllen, benötigt man eine eindeutige Referenz auf das Feld. Dazu sucht man erst das Formular, in dem das Feld liegt. Dessen Definition wird im HTML-Quelltext immer mit "<form" eingeleitet. Das Attribut "name" ist das entscheidende Merkmal. Sollte dieses Attribut nicht vorhanden sein, kann man Formulare auch durchzählen. In diesem Fall hätte dann das erste Formular den Index 0, das zweite Forumular 1 usw.. Das Gleiche gilt für Felder bei denen das Attribut "name" fehlt.

1. Beispiel mit Namen

#include <ie.au3>
;Einfaches Beispiel für das Anmelden an Webseiten mit Benutzer und Passwort am Beispiel des Autoit.de-Forums
;Autoit-Version:3.2
 
;Erstellt eine Instanz (neues Fenster) des InternetExplorers und gibt ein entsprechendes Objekt zurück.
$oIE = _IECreate ("http://www.autoit.de/portal.php")
;Prüfen ob ein Objekt erzeugt wurde
If IsObj($oIE) Then
;warten bis die Seite komplett geladen wurde
_IELoadWait($oIE)
;Erzeugen eines HTML-Formular-Objekts mit Hilfe des Formularnamens
$oForm = _IEFormGetObjByName($oIE, "loginform")
;Erzeugen eines Formularfeld-Objekts mit Hilfe des Feldnames
$oUsername = _IEFormElementGetObjByName($oForm, "l_username")
;Setzen des Formularfeldinhalts
_IEFormElementSetValue($oUsername, "Benutzer")
;Erzeugen eines Formularfeld-Objekts mit Hilfe des Feldnames
$oPasswd = _IEFormElementGetObjByName($oForm, "l_password")
;Setzen des Formularfeldinhalts
_IEFormElementSetValue($oPasswd, "Passwort")
;Absenden des Formulars
_IEFormSubmit($oForm)

;wenn kein Objekt erzeugt wurde, Fehlermeldung ausgeben.
Else
;Detailierte Fehlerbehandlung überlasse ich einem separaten Tutorial ;)
MsgBox(48,"Erstellen des IE-Objekts fehlgeschlagen","Es konnte keine neue InternetExplorer-Instanz erzeugt werden!")
EndIf

2. Beispiel mit Index

#include <ie.au3>
;Einfaches Beispiel für das Anmelden an Webseiten mit Benutzer und Passwort am Beispiel des Autoit.de-Forums
;Autoit-Version:3.2
 
;Erstellt eine Instanz (neues Fenster) des InternetExplorers und gibt ein entsprechendes Objekt zurück.
$oIE = _IECreate ("http://www.autoit.de/portal.php")
;Prüfen ob ein Objekt erzeugt wurde
If IsObj($oIE) Then
;warten bis die Seite komplett geladen wurde
_IELoadWait($oIE)
;Erzeugen eines HTML-Formular-Objekts mit Hilfe des Index
;In diesem Beispiel ist das gesuchte Formular, das fünfte in der Webseite. 
$oForm = _IEFormGetCollection ( $oIE, 4 )
;Erzeugen eines Formularfeld-Objekts mit Hilfe des Index
;In diesem Beispiel muss Index 2 verwendet werden, da zwei versteckte Felder index 0 und 1 belegen.
$oUsername = _IEFormElementGetCollection ( $oForm, 2)
;Setzen des Formularfeldinhalts
_IEFormElementSetValue($oUsername, "Benutzer")
;Erzeugen eines Formularfeld-Objekts mit Hilfe des Index
$oPasswd = _IEFormElementGetCollection ( $oForm, 3)
;Setzen des Formularfeldinhalts
_IEFormElementSetValue($oPasswd, "Password")
;Absenden des Formulars
_IEFormSubmit($oForm)

;wenn kein Objekt erzeugt wurde, Fehlermeldung ausgeben.
Else
;Detaillierte Fehlerbehandlung überlasse ich einem separaten Tutorial ;)
MsgBox(48,"Erstellen des IE-Objekts fehlgeschlagen","Es konnte keine neue InternetExplorer-Instanz erzeugt werden!")
EndIf


Finden der passenden Forms

Da man bei den beiden gezeigten möglichkeiten eigentlich immer darauf angewiesen ist den HTML Quellcode zu durchsuchen um das passende Ergebnis zu erhalten ist dieses Script wohl sehr hilfreich um die passenden Forms zu finden. Leider gibt der Script Fehler aus wenn z.B. auf der Website Javascript eingesetzt wird so kommt man manchmal nicht darum selbst den HTML Quellcode zu durchsuchen. (Wills jemand verbessern?)

(Prgramm ist nicht von mir ich hab es bloß ins Wiki gestellt und ein bischen verändert)
#include <IE.au3>


$name = "info.txt" ;legt den Namen der Datei mit den Ergebnissen fest
$Url = InputBox("Url Eintragen","Bitte hier die komplette URL eintragen") ;eine Inputbox wo die URL eingetragen wird

if $Url = '' then $Url = "http://wiki.autoit.de" ;wenn man nichts einträgt wird die diese URL genommen

$i = 1
while 1
If FileExists($name) then ;schaut ob die Datei vorhanden ist und erzeugt wenn ja eine Neue mit forlaufender Nummerierung
	
	$name = "info" & $i & ".txt"
	$i +=1
	Else
	ExitLoop
EndIf
WEnd

FileWriteLine($name,"Forms aus  " & $Url) ;schreibt in die Datei
FileWriteLine($name,"")

TrayTip("info","Bitte warten bis Informationen eingeholt wurden",5)
$oIE = _IECreate ($Url,0,0) ;ruft ein verstecktes Internetfenster auf

$oForms = _IEFormGetCollection ($oIE) ;holt sich jetzt einzeln die Forms raus und listet sie dann in der Text Datei auf
If @error Then 
    MsgBox(0, '', 'Keine Formen enthalten')
Else
    $Index = 0
    For $oForm In $oForms
        
		FileWriteLine($name,'Form-Index: ' & $Index & ' / Name: ' & $oForm.Name & @CRLF)
        $oFormElements = _IEFormElementGetCollection($oForm)
        If IsObj($oFormElements) Then
            $IndexElement = 0
            For $oElement In $oFormElements
                
				FileWriteLine($name,'Form: ' & $Index & ' /Element: ' & $IndexElement & ' /Name: ' & $oElement.Name & @CRLF)
                $IndexElement += 1
            Next
        EndIf
        $Index += 1
    Next
EndIf



_IEQuit($oIE)
TrayTip("Info","Programm beendet",5)
sleep(5000)
Exit

[Fortsetzung folgt... durch dich?]

Fehlersuche / Fehlermeldungen

[Weitere Erklärungen folgen]


Beispielprojekte

Installation automatisieren

Es ist sehr einfach, mit AutoIt ein Programm automatisch installieren zu lassen. Es sind dann keine Eingriffe des Anwenders mehr nötig.

Was benötige ich?

  1. Das 'AutoIt v3 Active Window Info Tool' (AU3Info.exe im AutoIt3-Verzeichnis)
  2. Einen Textedtior (z.B. SciTE, Proton, Ultraedit, Notepad) und natürlich
  3. das zu installierende Programm (als Bsp. PDFCreator-0_9_1_AFPLGhostscript.exe)

So wird's gemacht!

Als erstes starte ich meinen Texteditor und das Tool 'AutoIt v3 Active Window Info', mit diesem Tool ist es möglich, aus dem aktiven Windows-Fenster, informationen zu lesen/kopieren die ich in dem Installationsprogramm benötige.

Jetzt starte ich das Programm PDFCreator-0_9_1_AFPLGhostscript.exe, das ist auch schon gleich die erste Anweisung die ich in meinen Texteditor eintrage.

; Programm starten 
Run(@ScriptDir & "\PDFCreator-0_9_1_AFPLGhostscript.exe")

Man könnte auch RunWait oder ShellExecute verwenden, das hängt von den jeweiligen Gegebenheiten ab. Run ist aber die Lösung, die meistens benötigt wird.

Damit beim Start des Programms keine Fehlermeldung erscheint, weil das Programm nicht im gleichen Verzeichnis liegt wie das Installationsprogramm, füge ich am Anfang noch eine Überprüfung mit entsprechender Meldung ein.

; Überprüfen ob das Programm vorhanden ist und Meldung ausgeben falls nicht 
If Not FileExists(@ScriptDir & "\PDFCreator-0_9_1_AFPLGhostscript.exe") Then 
MsgBox(16,"Datei nicht gefunden", "Dieses Programm und PDFCreator-0_9_1_AFPLGhostscript.exe" & @CRLF & _ 
"müssen sich im gleichen Verzeichnis befinden!") 
Exit ; Programm beenden
EndIf 
 
; Programm starten 
Run(@ScriptDir & "\PDFCreator-0_9_1_AFPLGhostscript.exe")

Nach dem Start erscheint das Fenster zum wählen der Setup-Sprache.

Wenn ich es aktiviere, zeigt das Window Info Tool folgende Informationen zum Fenster an (mit STRG+ALT+F kann man jederzeit den Inhalt einfrieren und wieder freigeben).

Die wichtigsten Daten sind:

  1. Im Abschnitt 'Windows Details' steht der Titel des aktiven Fensters, ich habe ihn bereits mit der Maus markiert und kopiert weil ich ihn gleich in meinem Script benötige.
  2. Informationen über Kontrollelemente im aktiven Fenster finde ich im Abschnitt 'Control Under Mouse', wenn ich die Maus darüber bewege.
  3. Der Abschnitt 'Visible Window Text' wird benötigt, wenn während der Installation mehrere Fenster mit gleichem Titel angezeigt werden, dazu später mehr.

In meinem Script benötige ich jetzt eine Anweisung ,die auf das Fenster wartet und dann entsprechende Aktionen ausführt. Denn Titeltext kopiere ich mir aus dem Infofenster, somit vermeide ich Tippfehler.

; Sprache auswählen 
WinWait("Setup-Sprache auswählen") 
Send("d{ENTER}") 

WinWait wartet bis das Fenster auf dem Bildschirm erscheint, dann Sende ich die Tastenfolge 'd' (= Deutsch) und {ENTER}, damit wird der Standardbutton, in diesem Fall der OK-Button (zu erkenne an dem etwas dickeren Rand), betätigt.

Jetzt wird es etwas komplizierter, die folgenden Fenster haben den gleichen Titel, ein einfaches WinWait("TITLE") reicht jetzt nicht mehr, um das richtige Fenster zu identifizieren. Dafür gibt es den zweiten Parameter WinWait("TITLE","TEXT"), in diesen trage ich einen Textteil, aus dem Abschnitt 'Visible Window Text' des Infofensters, ein der mir hilft das Fenster genau zu identifizieren.

; Willkommensfenster 
WinWait("Setup - PDFCreator", "Willkommen zum PDFCreator Setup-Assistenten") 
Send("!w") 

Wartet auf das Willkommensfenster und sendet ALT+w für Weiter (unterstriche auf Buttons stehen für die ALT-Taste, wie auf dem [Weiter >]-Button). Auch wenn das 'W' auf dem Button groß geschrieben ist, sollte man immer Kleinbuchstaben senden, bei Großbuchstaben wird auch noch SHIFT gesendet, das kann zu einer Fehlfunktion führen.

Als nächstes Fenster erscheint die Lizenzvereinbarung, diese muss ich akzeptieren bevor ich die Installation fortsetzen kann.

; Lizenzvereinbarung 
WinWait("Setup - PDFCreator", "Lizenzvereinbarung") 
Send("!a!w") 

Hier wird auf das Fenster mit der Lizenzvereinbarung gewartet, danach wird erst ALT+a zum akzeptieren der Vereinbarung und dann ALT+w zum fortsetzen betätigt.

Jetzt kommt die Auswahl der Installationsart.

 ; Installationsart 
WinWait("Setup - PDFCreator", "Bitte wählen Sie die Setup-Einstellungen.") 
Send("!w") 

Wie gehabt, warten bis das Fenster erscheint und dann die Standardinstallation, die ja schon ausgewählt ist, mit ALT+w akzeptieren.

Für die Serverinstallation muss ich es so schreiben.

; Installationsart 
WinWait("Setup - PDFCreator", "Bitte wählen Sie die Setup-Einstellungen.") 
ControlClick("Setup - PDFCreator", "Serverinstallation", "TRadioButton1") 
Send("!w") 

Durch ControlClick simuliere ich einen Klick auf das angegebene Kontrollelement.

So fahre ich jetzt für jedes Fenster fort, das komplette Script ist am Ende des Dokuments zu finden. Um zu verhindern das während der Installation Tasten auf Tastatur oder Maus gedrückt werden kann man mit dem Befehl BlockInput dieses unterbinden. Soll jeder Benutzer das Installationsprogramm ausführen können, muss vor dem Run-Befehl noch der RunAsSet-Befehl, mit den Daten eines Administrator-Accounts, eingefügt werden.

Viel Spaß beim "Scripten"!

Download mit 2 Prozentangaben

Hier habe ich euch ein kleines Tutorial geschrieben, mit dem ihr mehrere Dateien downloaden könnt und dies Grafisch dank 2 Prozentbars (1. Prozentbar für den momentan laufenden Download und die 2. bar für die gesamte Fertigstellung.)

Fall es Fragen dazu gibt bitte hier fragen

Hier ist das Beispiel-tutorial:

;Tutorial by GtaSpider

#include <GUIConstants.au3>

;Hier werden die Downloads als array deklariert. $FileToDownload[Wieviele downloads] = [Download1,Download2,...]
Global $FilesToDownload[3] = ["http://www.autoitscript.com/autoit3/files/beta/autoit/autoit-v3.2.9.4-beta-setup.exe","http://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3-setup.exe","http://ftp-mozilla.netscape.com/pub/mozilla.org/firefox/releases/2.0.0.8/win32/de/Firefox%20Setup%202.0.0.8.exe"]
;Wieviele downloads es sind
Global $Downloads = UBound($FilesToDownload)
;Wo die daten hingeladen werden sollen
Global $DownloadDir = @ScriptDir

;Gui
GUICreate("Test", 276, 76, 193, 115)
GUISetBkColor(0)

$Progress1 = GUICtrlCreateProgress(8, 8, 262, 9,$PBS_SMOOTH)
$Progress2 = GUICtrlCreateProgress(8, 24, 262, 9,$PBS_SMOOTH)
$StatLab = GUICtrlCreateLabel("",8,59,262,15)
GUICtrlSetColor(-1,0xffffff)
$Button = GUICtrlCreateButton("Start", 8, 37, 262, 20, 0)

GUISetState()

;Mainwhile
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button
If Not _Download() Then
;Wenn es bei _Download ein error gab (Abbrechen wurde gedrückt)
GUICtrlSetData($Progress1,0)
GUICtrlSetData($Progress2,0)
GUICtrlSetState($Button,$GUI_DISABLE)
GUICtrlSetData($Button,"Abgebrochen")
Sleep(1500)
GUICtrlSetData($Button,"Neustart")
GUICtrlSetState($Button,$GUI_ENABLE)
Else
;Wenn es kein error gab
GUICtrlSetData($Button,"Erfolgreich")
GUICtrlSetData($StatLab,"Komplett")
EndIf
EndSwitch
WEnd


;Funktionen
Func _Download()
Local $i,$iSize,$iBuf,$msg,$iProz,$iOldProz,$sFileName
GUICtrlSetData($Button,"Abbrechen (0%)"); Setze button
For $i = 0 To $Downloads - 1 
$iSize = InetGetSize($FilesToDownload[$i]);Holt sich die größe des downloads
$sFileName = StringTrimLeft($FilesToDownload[$i],StringInStr($FilesToDownload[$i],"/",1,-1));Der Dateiname des downlaods
InetGet($FilesToDownload[$i],$DownloadDir&"\"&$sFileName,0,1);Datei wird gedownloadet
GUICtrlSetData($StatLab,"Download: "&$sFileName &" (0%)");Setze statuslabel
While @InetGetActive; Solange der Download aktiv ist
$msg = GUIGetMsg(); Falls Abbrechen gedrückt wird
If $msg = $Button Then Return InetGet("abort")-1 ; Return ((Returnwert von Inetget = 1) - 1) = 0
$iProz = Round(100*@InetGetBytesRead/$iSize);Gibt die Prozentzahl (gerundet) zurück
If $iProz <> $iOldProz Then;Wenn neue Prozentangaben <> alte Prozentangaben dann.. (Verhinder mögliches Flickern von Label/Button)
$iOldProz = $iProz;Setze alte Prozentangabe = neue Prozentangabe
GUICtrlSetData($Progress1,$iProz);Setze Progress 1 mit Prozentangabe des momentanen downlaods
GUICtrlSetData($Progress2,$iBuf+($iProz/$Downloads));Setze Progress 2 auf die Insgesamte Prozentanzahl
GUICtrlSetData($Button,"Abbrechen ("&Round($iBuf+($iProz/$Downloads))&"%)");Setze Abbrechenbutton
GUICtrlSetData($StatLab,"Download: "&$sFileName &" ("&$iProz&"%)");Setze Statuslabel mit Dateiname des downlaods und prozentangabe des downlaods
EndIf

Sleep(50) ;Damit Prozessorlast < 100% ;-)
WEnd
$iBuf += (100/$Downloads)
Next
Return 1
EndFunc

Viel spaß wünscht euch GtaSpider :)

Setup's erstellen

Wenn ihr euer Programm / eure Programme veröffentlichen wollt sieht es immer professioneller aus, wenn zumindest optional ein Setup zur Verfügung zu steht.


Professionelle setup's

Hier stelle ich NSIS vor, da es kostenlos, übersichtlich, opensource und einfach ist. Allerdings gibt es auch viele weitere Alternativen. Zuerst downloadet ihr euch NSIS von hier: http://nsis.sourceforge.net/ und installiert es. Anschließend downloaded und installiert ihr noch HM NIS EDIT, um das ganze einfacher zu machen von hier: http://hmne.sourceforge.net/ Dabei wählt am besten "Full installation"

1. Startet HM NIS EDIT vom Desktop. 2. Mit strg+w oder dem Zauberstab in der Toolbar startet ihr den Wizard für ein neues Setup. 3. Nach einem Klick auf Weiter gebt ihr Name, Version, Autor und Website des Programms ein und klickt erneut auf Weiter. (Ich nenne das Programm simpel "Test") 4. Als Symbol für die am ende resultierende .exe könnt ihr entweder die Standard .ico verwenden oder eine eigene definieren. klickt hinter dem Textfeld für die Setup Datei auf "..." um Auszuwählen, wo das Setup gespeichert werden soll. Um andere Sprachen für das Setup zur verfügung zu stellen müsst ihr die Enstprechende Sprache einfach auswählen, solltet dabei aber bedenken, dass jede weitere Sprache die Setupdatei größer macht. Unter GUI kann ein Design für das Seup ausgewählt werden. Klickt auf Weiter. Die folgende Seite dürfte sich von selbst erklären. 5. Wählt die beiden vorgegebenen Dateien aus, und löscht sie mit einem Klick auf das X aus dem Setup. Mit einem Klick auf das leere Papier über "Datei" könnt ihr dann eure Programmdateien auswählen. Dazu klickt ihr hinter Quelldatei auf "..." und Wählt die Datei aus. Anschließend sucht ihr aus, wo sie hin installiert werden soll. Z.B. installiert $INSDIR\Testordner sie im Ordner, den der Benutzer / ihr selbst ausgewählt hat in den Ordner Testordner. 6. Wenn euer Programm verschiedene Plugins oder Extras hat, die der Benutzer optional installieren können soll, dann wählt "Der Anwender darf die zu installierenden Komponenten wählen". Wenn ihr über Hauptgruppe auf das leere Papier klickt, könnt ihr ein neues Plugin zur Wahl stellen, indem ihr einen Namen eingebt, und über "Datei" auf das leere Papier klickt um Dateien wie in 5. beschrieben hinzuzufügen, die das Plugin installieren soll. Die folgende Seite dürfte sich ebenfalls von selbst erklären. 7. Diese Seite ist optional. Hier könnt ihr einen Nachinstallationstrigger einstellen, oder euer Programm starten lassen, sobald es fertig installiert ist. 8. Die nächste Seite dient zur Konfiguration des uninstallers, und muss nicht verändert werden. 9. Auf der letzten Seite des Wizards wählt ihr alle Checkboxen aus, und sucht nach einem Klick auf "Fertigstellen aus, wo die scriptdatei für das Setup gespeichert werden soll, damit ihr es später noch bearbeiten können. Sollten beim Compilen Fehler auftreten wiederhohlt ihr den Wizard, und achtet darauf, das alle angaben stimmen, oder guckt, ob ihr im Quelltext des Installers die Fehler findet, und sie korrigieren könnet. Die Setup-.exe wird in dem Ordner gespeichert, den ihr in Schritt 4 ausgewählt habt.

Simple Setups mit iexpress

Zuerst einmal: Diese "Setup's" Sind sehr viel simpler zu erstllen. Ausserdem sind es nicht wirklich Setup's, sondern eher selbstextrahierende Archive.

Windows Vista/7: Drückt die Windowstaste, und gebt iexpress ein. Klickt mit der rechten Maustaste auf iexpress ==> Als Admin ausführen Windows XP: Meldet auf als ein Administrator an, drückt windows+r und gebt iexpress ein.

Wählt "Create new Self Extraction Directive file." und klickt auf weiter. Wenn ihr euer Programm direkt nach der Installation starten wollt, wählt "Extract files and run installation command", wenn ihr sie nur installieren wollt wählt "Extract files only". Im nächsten Schritt gebt ihr den Namen eures Programmes ein. Wählt "Prompt user with:" und gebt im Textfeld etwas wie "Do you really want to install {PROGRAMNAME}?" Wobei ihr Natürlich {PROGRAMNAME} durch den Namen eures Programms ersetz. Wenn ihr wollt, das der Benutzer einer Lizenz zustimmen Muss wählt auf der Nächsten Seite diese Option aus, und gebt den Pfad zur Lizenzdatei an. (Einfach eine .txt datei wo die Lizenz steht) Anschließend wählt ihr nach einem Klick auf Weiter alle Dateien aus, die installiert werden sollen. iexpress kann die Datei nicht in verschiedene Ordner installieren. Nun könnt ihr auswählen, wie die Installation stattfinden soll. (einfach in einem Fenster, versteckt, maximiert, oder minimiert) Auf der nächsten seite könnt ihr wenn ihr wollt etwas wie "Installation erfolgreich" nach der Installation anzeigen lassen. Nun wählt ihr, wo der installer gespeichert werden soll. Auf der letzten seite wählt ihr, ob der Installer-Quelltext gespeichert werden soll, damit er später noch einmal überarbeitet werden kann. Jezt klickt ihr noch ein Paarmal auf weiter, und wartet einfach, sobald er anfängt du arbeiten.


Vielen Dank fürst Lesen, bei weiteren Fragen bitte an thedwordmail@gmail.com wenden.

FAQ's

Zu den FAQ

Autoren

Der Autor der Grundlage dieses Tutorials ist peethebee. Er ist ein erfahrener AutoIt-Nutzer, der schon einige professionelle Skripte damit auf die Beine gestellt hat. Er engagiert sich für die englische AutoIt-Community, sowie die von ihm gegründete deutsche Community unter www.autoit.de. Bei Fragen steht er im Forum der deutschen Community bereit. Dort kann man sich auch zu diesem Tutorial äußern und Lob oder Kritik loswerden.

huggy hat den Abschnitt zu Ini-Dateien beigetragen,Speicher lesen / bearbeiten, Strings, Registry, Wiki aufgesetzt und einige Beispielskripte sowie Teile der FAQ geschrieben.

Bernd670 hat den Abschnitt über automatische Installationen beigesteuert. Bernd670 ist Moderator von www.autoit.de.

Daniel W. hat kleinere Scripte und Verbesserungsarbeiten durchgeführt -- > Danke !

pixeldoc hat Formatierung, Schreibfehler, Struktur und FAQ Singleton verändert.

BugFix (Mehrdimensionale Arrays, Arrays als Elemente eines Arrays, Colored Button, List-Control, UDF-Erstellung)

GtaSpider hat den Beitrag über TCP/IP verfasst. Auch er ist Moderator von www.autoit.de.

Das Schwert hat das Tutorial über die Erstellung von Setup's verfasst. Er ist ein mitglied von www.autoit.de

FirePanther (Korrektur der Rechtschreibung, passende Links hinzugefügt, Informationen korrigiert. Er ist Administrator von AutoIt.@)

[Andere Autoren können sich hier verewigen. Nach Möglichkeit mit Angabe, was beigetragen wurde!]

Danksagung

Dank geht an alle Entwickler von AutoIt speziell an den Initiator Jonathan Bennett, aber auch an alle anderen, die zu diesem großartigen Programm beigetragen haben und es uns allen kostenlos zur Verfügung stellen. Außerdem sei Gun-Food gedankt, der das deutsche Forum technisch betreut und hostet.


Rechtliches

Dieses Tutorial speist sich aus vielen Quellen. So leistet die englische Homepage von AutoIt große Hilfe. Außerdem sind Teile der deutschen Hilfe-Datei zur Version 3.1.1 eingeflossen, deren Kopierrechte (u.a.) bei peethebee liegen. Der größte Teil der nicht neu geschriebenen Elemente stammt aus alten Tutorials von peethebee, die aus verschiedenen Anlässen und zu verschiedenen Zwecken entstanden. Zu guter Letzt flossen noch Elemente aus Fragen im deutschen Forum und ICQ-Logs von peethebee ein. Es ist nicht gestattet, diesen Text ohne deutliche Quellenangabe zu kopieren und zu veröffentlichen. Es ist sehr erwünscht, auf diese Originalversion zu verlinken. Dadurch wird gewährleistet, dass immer die aktuelle Version im Umlauf ist.

Persönliche Werkzeuge