Archiv der Kategorie: Syntax

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

autoit Syntax Funktionstasten, Hot-Keys

Man kann das Betätigen von Tasten per Hot-Key-Funktion abfragen.

 

z.B.: die Hilfetaste F1

 

Parameter können bei diesem Funktionsaufruf nicht übergeben werden.

 

HotKeySet("{F1}", "HelpBox")

 

Func HelpBox()

  MsgBox(32, "- Hilfe -", "Hilfe:" & @CRLF &  "Dieses Programm dient zum Eingeben der Customfelder in die LANDesk LDMS Datenbank." & @CRLF _

  & "Die INI-Datei namens FLG_PC_Neu.ini muss im selben Verzeichnis liegen, wie dieses Programm." & @CRLF & @CRLF  _

  & "Im Register PC-Suche kann man nachsehen, ob der PC-Name schon in der DB vorhanden ist." & @CRLF _

  & "Dann werden die Daten im Register Eingabe aktualisiert und ergänzt." & @CRLF _

  & "Die neuen Daten werden in der Datenbank gespeichert."  & @CRLF & @CRLF  _

  & "Im Register Einstellungen kann man nach korrekter Passworteingabe die verschlüsselt gespeicherten Daten in der INI-Datei ansehen und ändern.." & @CRLF & @CRLF _

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

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

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

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

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

  & "Bei Fragen oder Änderungswünschen wende man sich an " & IniRead($ProgIniFile,"FLG","ProgrammerName","George") & @CRLF _

  & "Phone: " & IniRead($ProgIniFile,"FLG","ProgrammerPhone","+49 2773 924 3915") & " · mailto: " & IniRead($ProgIniFile,"FLG","ProgrammerMail","quinting.g@loh-services.de"))

EndFunc        ; HelpBox

 

 

autoit Syntax FTP und DLL

FTP with AutoIT – API Programming

It is really easy to call Win32 API functions through AutoIT. All that one needs to know is how to use the “DllCall” function in AutoIT and the functions which are available in the particular dll that one intends to utilize. In order to create an FTP client, it is really easy if one uses AutoIT. We can make use of the “Wininet.dll” for the sake of creating FTP client software. The functions that are useful for us will be as follows:

InternetOpen

InternetConnect

FtpGetFile

FtpPutFile

FtpFindFirstFile

InternetFindNextFile

InternetCloseHandle

There are many more functions which are available with wininet.dll, but in order to make the Ftp client software, the above mentioned files are more than enough. Now, let me describe the step by step process which needs to be followed in order to do an Ftp get.

1.Open an Internet Connection – This is to initialize the wininet API. One can use any connection name for achieving this 

1.$InternetOpen = DllCall("wininet.dll", "long", "InternetOpen", "str", “My FTP Control”, "long", 1, "str", “”, "str", “”, "long", 0);We can keep the proxy name and proxy bypass as blank.

2.Connect to the server with the username and password – One need to have a username and password for the same, as well as the handle returned from the previous step

2.$InternetConnect = DllCall("wininet.dll", "long", "InternetConnect", "long", $InternetOpen, "str", $ServerName, "int", 0, "str", $Username, "str", $Password, "long", 1, "long", 0, "long", 0); Servername, Username, Password need to be provided.

3. Start the file transfer with FtpGetFile function – Filename and handle needs to be provided as the inputs

3.$FTPget = DllCall("wininet.dll", "int", "FtpGetFile", "long", $InternetConnect, "str", $RemoteFile, "str", $SaveLocalFile, "int", 0, "long", 0, "long", 0, "long", 0);This would save the file in the local computer with the name as provided in place of variable $SaveLocalFile.

4. Close both the handles

4.$CloseCC = DllCall("wininet.dll", "int", "InternetCloseHandle", "int", $InternetOpen)

4.$CloseCC = DllCall("wininet.dll", "int", "InternetCloseHandle", "int", $InternetConnect)

That’s all the one needs. The file would be saved in the local machine with the desired name. For more details on the functions in wininet.dll, one can visit http://msdn.microsoft.com/en-us/library/aa385473%28VS.85%29.aspx.

 

I have created Ftp client software with the same function, and you can download it freely by clicking here.

 

If you want to access the code, kindly post a request for it through the comments section. I will share the code with anyone who requires.

Posted by Kishore Krishnan at 9:30 PM

Labels: API Programming, FTP Client, Wininet.dll

 


 

wininet.dll

FtpCommand function

The FtpCommand function sends commands directly to an FTP server.

 

Syntax

C++

BOOL FtpCommand(

 _In_   HINTERNET hConnect,

 _In_   BOOL fExpectResponse,

 _In_   DWORD dwFlags,

 _In_   LPCTSTR lpszCommand,

 _In_   DWORD_PTR dwContext,

 _Out_  HINTERNET *phFtpCommand

);

 

Parameters

hConnect [in]
A handle returned from a call to InternetConnect.

fExpectResponse [in]
A Boolean value that indicates whether the application expects a data connection to be established by the FTP server. This must be set to TRUE if a data connection is expected, or FALSE otherwise.

dwFlags [in]
A parameter that can be set to one of the following values.

Value

Meaning

FTP_TRANSFER_TYPE_ASCII

Transfers the file using the FTP ASCII (Type A) transfer method. Control and formatting data is converted to local equivalents.

FTP_TRANSFER_TYPE_BINARY

Transfers the file using the FTP Image (Type I) transfer method. The file is transferred exactly with no changes. This is the default transfer method.

 

lpszCommand [in]
A pointer to a string that contains the command to send to the FTP server.

dwContext [in]
A pointer to a variable that contains an application-defined value used to identify the application context in callback operations.

phFtpCommand [out]
A pointer to a handle that is created if a valid data socket is opened. The fExpectResponse parameter must be set to TRUE for phFtpCommand to be filled.

 

Return value

Returns TRUE if successful, or FALSE otherwise. To get a specific error message, call GetLastError.

 

Remarks

GetLastError can return ERROR_INTERNET_NO_DIRECT_ACCESS if the client application is offline. If one or more of the parameters are invalid, GetLastError will return ERROR_INVALID_PARAMETER.

Like all other aspects of the WinINet API, this function cannot be safely called from within DllMain or the constructors and destructors of global objects.

Note  WinINet does not support server implementations. In addition, it should not be used from a service. For server implementations or services use Microsoft Windows HTTP Services (WinHTTP).

 

 

autoit Syntax ERROR-Function

$objErr = ObjEvent("AutoIt.Error","MyErrFunc")

 

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

 

Func MyErrFunc() ; ————————————————————————-

 

$hexnum=hex($objErr.number,8)

 

Msgbox(0,"","We intercepted a COM Error!!"      & @CRLF                & @CRLF & _

            "err.description is: " & $objErr.description   & @CRLF & _

            "err.windescription is: " & $objErr.windescription & @CRLF & _

            "err.lastdllerror is: "   & $objErr.lastdllerror   & @CRLF & _

            "err.scriptline is: "   & $objErr.scriptline    & @CRLF & _

            "err.number is: "       & $hexnum               & @CRLF & _

            "err.source is: "       & $objErr.source        & @CRLF & _

            "err.helpfile is: "       & $objErr.helpfile      & @CRLF & _

            "err.helpcontext is: " & $objErr.helpcontext _

           )

exit

 

EndFunc ;  MyErrFunc()  ————————————————————————-

 

 

 

autoit Syntax Encrypt, Verschlüsseln

die Funktion _StringEncrypt(), die in älteren Versionen von autoit in string.au3 enthalten war,

gibt es ab autoit 3.3.12.0 nicht mehr.

 

Die Funktion _StringEncrypt() ist nun in crypt_GQ.au3  enthalten.

 

In diesem Script:

       D:\DATA\_INFO\_SoftWare\_LANdesk_\_SW-Verteilung\Quinting\_TEST_\Encryption\_Test_Encrypt_2.au3

wird sowohl die alte als auch die neue Verschlüsselung exemplarisch genutzt.

 


 

alte Funktion (vor 3.3.12.0)

 

#include <crypt_GQ.au3>

 

$Debug = 1                ; default: 0

$Text = "Hallo"

$CryptPass = "Passwort"

$Methode = "alt"        ; (eine von "alt|3DES|AES128|AES192|DES|RC2|RC4")

$KeyDepth = 2                ; default: 2

$verschluesselt =_Verschluesseln($Text,$CryptPass,[$Methode,[$KeyDepth;[$Debug]]])

 

$Debug = 0                ; default: 0

$Text = "0229813FB7566E6E499C20994E4FE048745E2BBC"

$CryptPass = "Passwort"

$Methode = "alt"        ; (eine von "alt|3DES|AES128|AES192|DES|RC2|RC4")

$KeyDepth = 2                ; default: 2

$entschluesselt =_Entschluesseln($Text,$CryptPass,[$Methode,[$KeyDepth;[$Debug]]])

 


 

Login mit autoit und PHP:

 

PHP-Datei: check.php

<?php

$host = 'yourhost';

$user = 'dbusername';

$pass = 'dbpassword';

$dbase = 'yourdatabase';

 

mysql_connect($host, $user, $pass);

mysql_select_db($dbase);

 

$sUsername = mysql_real_escape_string($_GET[‚username‘];

$sPassword = md5(mysql_real_escape_string($_GET[‚password‘]));

 

$result = mysql_query("SELECT id FROM TABLE WHERE username = '" . $sUsername . "' AND password = '" . $sPassword . "'"); // Your SQL Statement

$row = mysql_fetch_row($result);

 

if ($row) {

  echo 1;

} else {

  echo 0;

}

?>

 

autoit Script:

#include <INet.au3>

$user = InputBox("Login", "Please enter your username", "", "")

$pass = InputBox("Login", "Please enter your password", "", "")

$iRValue = _INetGetSource("http://yourdomain.de/check.php?username=" & $user & "&password=" & $pass)

if $iRValue = 1 Then

  ; Login Successfully

ElseIf $iRValue = 2 Then

  ; Login Failed

EndIf

 


 

MD5 Check mit autoit und PHP:

 

PHP-Datei: check.php

<?php

$sPassword = 'password';

$md5 = md5($sPassword);

echo $md5

?>

 

autoit Script:

#include <INet.au3>

$pass = InputBox("Login", "Please enter your password", "", "")

$iRValue = _INetGetSource("http://DE19HAI827004NB.de.flg.int/vplaner/check.php?password=" & $pass)

msgbox(64,"Info", "Passwort: " & $pass & @crlf & "MD5-Hash: " & $iRValue)

 

autoit Syntax Datum und Zeit

Makro Description Example
@YEAR Current four-digit year 2016
@MON Current month.  Range is 01 to 12 11
@MDAY Current day of month.  Range is 01 to 31 25
@HOUR Hours value of clock in 24-hour format.  Range is 00 to 23 08
@MIN Minutes value of clock.  Range is 00 to 59 48
@SEC Seconds value of clock.  Range is 00 to 59 59

 

Beispiel für Datum mit 2-stelliger Jahreszahl und Zeit: 131025-0848

       StringRight(@YEAR,2) & @MON & @MDAY & "-" & @HOUR & @MIN

 

Beispiel für Datum mit 4-stelliger Jahreszahl und Zeit: 20.01.2014 09:23

       @MDAY & "." & @MON & "." & @YEAR & " " & @HOUR & ":" & @MIN

 

Beispiel kopiert Filename.ext zu Filename_ext_131025-0848.bck

       wobei $File den Dateinamen enthält.

$aFilename = StringSplit($File,".")

FileCopy ( $File, $aFilename[1] & „_“ & $aFilename[2] & StringRight(@YEAR,2) & @MON & @MDAY & "-" & @HOUR & @MIN & ".bck" [, flag])        

 

Flag:    0        default, no overwrite existing files
1        overwrite existing files
8        Create destination directory structure if it doesn't exist
9        1 + 8

 


 

Datum und Uhrzeit der aktuellen ProgrammDatei:

$ScriptDate = FileGetTime(@ScriptFullPath)

$ScriptDateTime = $ScriptDate[2] & „.“ & $ScriptDate[1] & „.“ & $ScriptDate[0] & “ – “ & $ScriptDate[3] & „:“ & $ScriptDate[4]

$ScriptDateTime = 18.02.2014 – 14:36

 


 

—————————

DEBUG Date Info

—————————

$GetLastLoginDate: 20150629140524

 

LastPwChanged: 2015/06/01 07:17:06

 

PwExpires: 2015/07/13 07:17:06

 

jetzt: 2015/06/29 14:44:14

—————————

 

_DateDiff ( $sType, $sStartDate, $sEndDate )