1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Observer

Beiträge von Observer

  • Quelltext eines Frames lesen

    • Observer
    • 25. November 2008 um 15:04

    Ist die Firefoxsteuerung besser als die IE steuerung ?

    Kann ich bei der FF-Steuerung auch Javascriptfunktionen direkt ansprechen ?

    mfg

  • Quelltext eines Frames lesen

    • Observer
    • 25. November 2008 um 14:33

    Muss aber sagen, das Script von Ihm ist echt Nützlich.
    So kann ich mir immer ohne viel rum und num machen den Quelltext anzeigen lassen ;)
    Habe es Ähnlich wie du hinbekommen nur nicht ganz so Komfortabel xD

    Echt Superarbeit danke dir Oscar :rock: :rock: :rock: !!
    3 Oscars für dich

    mfg

  • Quelltext eines Frames lesen

    • Observer
    • 25. November 2008 um 13:58

    Kein Problem, habs hinbekommen.

    Thx für Versuch !

    mfg

  • Javascriptfunction ausführen ?

    • Observer
    • 25. November 2008 um 13:55

    Erledigt, danke hast mir den richtigen Anstoss gegeben xD

    mfg

  • Javascriptfunction ausführen ?

    • Observer
    • 25. November 2008 um 13:14

    Hi Leute,
    wie kann ich eine Javascript Funktion in einem IE ausführen ?

    Code
    function MoveRight() 
    { 
    	if(wielang<=1)
    	{
    		location.href = 'map.php?walk=right';
    	}


    Das ist in einem Frame, ich möchte das Frame ansprechen, dass klappt schon.
    Nun möchte ich diese Funktion darin ausführen, wie Funktioniert das ?

    Vielen Dank im voraus

    MfG

  • Quelltext eines Frames lesen

    • Observer
    • 25. November 2008 um 11:33

    Hi, ich kann es gerade nicht testen, da ich bei der Arbeit bin.

    Aber für mich sieht das eher nach Formular aus.
    Ich meinte von einem Frame.

    Aber falls es doch so geht da es im Prinzip ja auch eine seite ist die geladen wird, Danke ich schonmal im voraus.

    mfg

  • Quelltext eines Frames lesen

    • Observer
    • 25. November 2008 um 10:45

    Hi Leute,
    ich versuche gerade verzweifelt aus einem Frame den Quelltext zu lesen.
    HAt mir da einer ein Beispiel wie ich das machen kann ?

    Angenommen ich habe 3 Frames :
    Frame1, Frame2, Frame3
    Die namen lauten genau so.

    ICh möchte den Quelltext aus Frame2 lesen wie veranstalte ich das ?

    Vielen Dank für eure Hilfe im voraus.

    mfg

  • Paar Fragen zu _IEFormElement

    • Observer
    • 23. November 2008 um 01:55

    Hui Leute, ich bekomme da ne Fehlermeldung mit der ich nix anfangen kann.

    Zitat

    If IsObj($o_object.elements.item($s_Name, $i_index)) Then
    If IsObj($o_object.elements.item($s_Name, $i_index)^ ERROR

    Hierbei geht es um diesen Teil im Quelltext.

    Code
    <input name="verwendung" type="text" id="verwendung" value="" size="40" maxlength="40">

    Die Form die ich habe ist die richtige er setzt mir alle Radiobuttons die ich setzen will.

    Hier der Teil des Autoitscriptes.

    [autoit]


    $oForm = _IEFormGetObjByName ($oIE, "form1")
    $oQuery = _IEFormElementGetObjByName($oForm, "verwendung")
    _IEFormElementSetValue ($oQuery, "test")

    [/autoit]


    Jetzt sollte er mir doch eigentlich in das Textfeld verwendung "test" reinschreiben oder ?

    Allerdings hat das Teil laut Quelltext ja Name und ID.
    Wie der Fehler ja schon aussagt.
    Wie muss ich das gestalten das mir der gewünschte text da reinkommt ?

    Vielen Dank

  • IE.au3 UDF Hilfe

    • Observer
    • 20. November 2008 um 12:29

    Hallo Leute,
    ich bräuchte mal ein kleines Beispiel von euch.

    z.B. Ich möchte ein Radiofeld in einem IE checken.
    Danach dann das Formular absenden.

    Wie Funktioniert sowas ?
    Hab mir zum Testen mal Selfhtml genommen.

    [autoit]


    #include <IE.au3>

    [/autoit][autoit][/autoit][autoit]

    $oIE = _IECreate("about:blank")
    _IENavigate($oIE, "http://de.selfhtml.org/html/formulare/anzeige/input_radio.htm")

    [/autoit][autoit][/autoit][autoit][/autoit]

    So nach dem Ausführen dieses Miniscripts wird ja die Seite von Selfhtml geöffnet.
    Jetzt möchte ich das Feld Visa checken.
    Wie muss ich da vorgehen ?

    Wo finde ich eine gute Hilfe für die IE.au3 UDF ?

    MfG Observer

    //Edit : Habs gefunden ;) in der Linken Spalte sollte man auch alles lesen ;)

  • Filereadline mit komma getrennt

    • Observer
    • 20. November 2008 um 10:43

    Thx Bugfix, genauso hab ich es gemacht und funzt danke !


    mfg

  • Filereadline mit komma getrennt

    • Observer
    • 20. November 2008 um 00:19

    Hi, ich habe eine Datei in der stehen viele Zahlen untereinander und jeweils hinter der zahl ist ein Komma mit einem weiteren wert.
    Also z.B. 765849,Ich

    Jetzt müsste ich eine Schleife bilden in der die Zeilen nacheinander ausgelesen werden und zwar die Zahl vor dem Komma in eine Variable und das nach dem Komma in eine weitere variable.
    Dann muss ich eine Function die ich schon habe nacheinander mit den werten füllen.

    Kann mir da jemand weiterhelfen wie ich sowas anstellen muss ?

    MfG

  • IE Steuerung

    • Observer
    • 5. Oktober 2008 um 20:19

    Quelltext von der PHP seite ?

    Habe ich nicht was es als HTML ausgibt damit kann ich dienen.

    Code
    ><INPUT type=radio value=55279375 name=item> Irgendwas<BR><BR>Geschenk Aussehen:<BR><INPUT type=radio CHECKED 
      	value=1 name=geschenk><IMG src="main_php-Dateien/geschenk1.gif"><BR><INPUT 
      	type=radio value=2 name=geschenk><IMG 
      	src="main_php-Dateien/geschenk2.gif"><BR><INPUT type=radio value=3 
      	name=geschenk><IMG src="main_php-Dateien/geschenk3.gif"><BR><INPUT 
      	type=radio value=4 name=geschenk><IMG 
      	src="main_php-Dateien/geschenk4.gif"><BR><INPUT type=radio value=5 
      	name=geschenk><IMG src="main_php-Dateien/geschenk5.gif"> <BR>Text für den 
      	Anhang der an dem Geschenk hängt:<INPUT id=verwendung maxLength=40 size=40 
      	name=verwendung><BR><INPUT type=submit value="einpacken" name=Submit> 
      	</FORM><BR><A 
      	href="main.php">Zurück</A><BR><BR></TD></TR></TBODY></TABLE><BR></TD></TR></TABLE>
    <FORM name=formular><INPUT id=block_reload type=hidden value=true 
    name=block_reload><INPUT id=message type=hidden value=false 
    name=message></FORM></BODY></HTML>
    ><INPUT type=radio value=55279375 name=item> Irgendwas<BR><BR>Geschenkdesign:<BR><INPUT type=radio CHECKED 
      	value=1 name=geschenk><IMG src="main_php-Dateien/geschenk1.gif"><BR><INPUT 
      	type=radio value=2 name=geschenk><IMG 
      	src="main_php-Dateien/geschenk2.gif"> <BR>Text für den 
      	Zettel der an dem Geschenk hängt:<INPUT id=verwendung maxLength=40 size=40 
      	name=verwendung><BR><INPUT type=submit value="Als Geschenk verpacken" name=Submit> 
      	</FORM><BR><BR><BR></TD></TR></TBODY></TABLE><BR></TD></TR></TABLE>
    <FORM name=formular><INPUT id=block_reload type=hidden value=true 
    name=block_reload><INPUT id=message type=hidden value=false 
    name=message></FORM></BODY></HTML>
    Alles anzeigen

    Das ist das was wichtig ist in der Seite.

    thx für die bemühungen.

    mfg

  • IE Steuerung

    • Observer
    • 5. Oktober 2008 um 18:44

    Hi,

    habe da mal eine frage.


    Und zwar ich möchte gerne etwas in einem IE steuern.


    [autoit]


    HotKeySet("^!x", "MeinExit")

    [/autoit][autoit][/autoit][autoit]

    #include <IE.au3>
    $oIE = _IECreate("gewünschte website")

    [/autoit][autoit][/autoit][autoit]

    sleep(20000)

    [/autoit][autoit][/autoit][autoit]

    $i = 0
    While $i <= 150

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $sMyString = "Einpacken"
    $oLinks = _IELinkGetCollection($oIE)
    For $oLink in $oLinks
    $sLinkText = _IEPropertyGet($oLink, "innerText")
    If StringInStr($sLinkText, $sMyString) Then
    _IEAction($oLink, "click")
    ExitLoop
    EndIf
    Next

    [/autoit][autoit][/autoit][autoit]

    sleep(1500)

    [/autoit][autoit][/autoit][autoit]

    MouseClick( "left", 27, 182, 1)

    [/autoit][autoit][/autoit][autoit]

    Send("Enter")

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    sleep(1500)

    [/autoit][autoit][/autoit][autoit]

    $sMyString = "Weiter"
    $oLinks = _IELinkGetCollection($oIE)
    For $oLink in $oLinks
    $sLinkText = _IEPropertyGet($oLink, "innerText")
    If StringInStr($sLinkText, $sMyString) Then
    _IEAction($oLink, "click")
    ExitLoop
    EndIf
    Next

    [/autoit][autoit][/autoit][autoit]

    $i = $i + 1
    WEnd

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func MeinExit()
    Exit
    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit]

    Das habe ich bis jetzt.

    Nur sollte da noch etwas per Submit mitgeschickt werden.

    Die seite ist ne PHP seite.

    Das Inputfeld heist "verwendung"

    Es sollte den Text "Viel Spass damit !" erhalten.


    Desweiteren sind da viele Radiobuttons und es sollte immer das erste gewählt werden.

    Die heisen immer anderst und haben immer andere ids.


    Da wo jetzt mit der Maus geklickt wird sollte die Auswahl des Radiobutton hin.


    Das Enter dürfte ja wegfallen da ganz am schluss ja das submit käme.


    Kannst du mir da evtl. helfen ?


    Vielen Dank im voraus.


    mfg

  • n00b Projekt

    • Observer
    • 28. Juli 2008 um 14:19

    Hi,

    finde die Idee von Pee auch sehr gut.
    Wäre Cool so eine Art Adminoberfläche zu Basteln.


    1.) ActiveDirectory Benutzer
    2.) Systemverwaltung von Servern
    3.) DruckerQueue
    4.) AntivirenConsole
    5.) EventViewer

    usw.

    Das wäre doch mal Sinnvoll wenn man damit den Admins die Tägliche Arbeit vereinfacht.

    Das ganze so aufgebaut das man es ständig mit Reitern erweitern kann.

    mfg Observer

  • Dateien auf Änderungen scannen

    • Observer
    • 27. Juli 2008 um 00:02

    Hm, alles Falsch was ich bis dato geschrieben habe.

    Das Script von Bugfix scannt nur auf neue Dateien während der laufzeit.
    Es gibt also gar nicht zu beginn alle dateien aus.
    Zu beginn der Laufzeit behandelt es das Verzeichniss wie ein Jungfräuliches.

    Ich denke mal ich nehme das als Lernprojekt für mich :)
    Werde also mein möglichstes tun und gegebenenfalls erfolge oder misserfolge hier Posten.

    Vielen Dank für eure Bemühungen

    mfg Observer

  • Dateien auf Änderungen scannen

    • Observer
    • 26. Juli 2008 um 20:33

    Ja genau das.

    Ich brauche die Dateien die zwischen den scanns erstellt wurden.

    mfg Observer

  • Dateien auf Änderungen scannen

    • Observer
    • 26. Juli 2008 um 14:37

    Hm, ok.
    Wie müsste ich das von mir (Bugfix und Oscars)

    Spoiler anzeigen
    [autoit]

    #include <INet.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ;
    ; Function Name: _INetSmtpMailAuth()
    ; Description: Sends an email using SMTP over TCP IP.
    ; Parameter(s): $s_SmtpServer - SMTP server to be used for sending email
    ; $s_FromName - Name of sender
    ; $s_FromAddress - eMail address of sender
    ; $s_ToAddress - Address that email is to be sent to
    ; $s_Username - Username for Authentication (bernd670)
    ; $s_Passwd - Password for Authentication (bernd670)
    ; $s_Subject - Subject of eMail
    ; $as_Body - Single dimension array containing the body of eMail as strings
    ; $s_helo - Helo identifier (default @COMPUTERNAME) sometime needed by smtp server
    ; $s_first - send before Helo identifier (default @CRLF) sometime needed by smtp server
    ; $b_trace - trace on a splash window (default 0 = no trace)
    ; Requirement(s): None
    ; Return Value(s): On Success - Returns 1
    ; On Failure - 0 and sets
    ; @ERROR = 1 - Invalid Parameters
    ; @ERROR = 2 - Unable to start TCP
    ; @ERROR = 3 - Unable to resolve IP
    ; @ERROR = 4 - Unable to create socket
    ; @ERROR = 5x - Cannot open SMTP session
    ; @ERROR = 50x - Cannot send body
    ; @ERROR = 5000 - Cannot close SMTP session
    ; Authors: Original function to send email via TCP - Asimzameer
    ; Conversion to UDF - Walkabout
    ; Correction Helo, timeout, trace - Jpm
    ; Correction send before Helo - Jpm
    ; Include Authentication - bernd670
    ;
    ;===============================================================================
    Func _INetSmtpMailAuth($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Username, $s_Passwd, $s_Subject = "", $as_Body = "", $s_helo = "", $s_first="-1", $b_trace = 0)

    [/autoit] [autoit][/autoit] [autoit]

    Local $v_Socket
    Local $s_IPAddress
    Local $i_Count
    Local $s_Send[9]
    Local $s_ReplyCode[9];Return code from SMTP server indicating success

    [/autoit] [autoit][/autoit] [autoit]

    If $s_SmtpServer = "" Or $s_FromAddress = "" Or $s_ToAddress = "" Or $s_Username = "" Or $s_Passwd = "" Or $s_FromName = "" Or StringLen($s_FromName) > 256 Then
    SetError(1)
    Return 0
    EndIf
    If $s_helo = "" Then $s_helo = @ComputerName
    If TCPStartup() = 0 Then
    SetError(2)
    Return 0
    EndIf
    StringRegExp($s_SmtpServer, "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)")
    If @extended Then
    $s_IPAddress = $s_SmtpServer
    Else
    $s_IPAddress = TCPNameToIP($s_SmtpServer)
    EndIf
    If $s_IPAddress = "" Then
    TCPShutdown()
    SetError(3)
    Return 0
    EndIf
    $v_Socket = TCPConnect($s_IPAddress, 25)
    If $v_Socket = -1 Then
    TCPShutdown()
    SetError(4)
    Return (0)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $s_Send[0] = "HELO " & $s_helo & @CRLF
    If StringLeft($s_helo,5) = "EHLO " Then $s_Send[0] = "EHLO " & $s_helo & @CRLF
    $s_ReplyCode[0] = "250"

    [/autoit] [autoit][/autoit] [autoit]

    $s_Send[1] = "AUTH LOGIN" & @CRLF
    $s_ReplyCode[1] = "334"
    $s_Send[2] = _Base64Encoding($s_Username) & @CRLF
    $s_ReplyCode[2] = "334"
    $s_Send[3] = _Base64Encoding($s_Passwd) & @CRLF
    $s_ReplyCode[3] = "235"
    $s_Send[4] = "MAIL FROM: <" & $s_FromAddress & ">" & @CRLF
    $s_ReplyCode[4] = "250"
    $s_Send[5] = "RCPT TO: <" & $s_ToAddress & ">" & @CRLF
    $s_ReplyCode[5] = "250"
    $s_Send[6] = "DATA" & @CRLF
    $s_ReplyCode[6] = "354"

    [/autoit] [autoit][/autoit] [autoit]

    $s_Send[7] = "From: " & $s_FromName & " <" & $s_FromAddress & ">" & @CRLF & _
    "To: " & "<" & $s_ToAddress & ">" & @CRLF & _
    "Subject: " & $s_Subject & @CRLF & _
    "Mime-Version: 1.0" & @CRLF & _
    "Content-Type: text/plain; charset=US-ASCII" & @CRLF & _
    @CRLF
    $s_ReplyCode[7] = ""

    [/autoit] [autoit][/autoit] [autoit]

    $s_Send[8] = @CRLF & "." & @CRLF
    $s_ReplyCode[8] = "250"

    [/autoit] [autoit][/autoit] [autoit]

    ; open stmp session
    If _SmtpSend($v_Socket, $s_Send[0], $s_ReplyCode[0], $b_trace, "220", $s_first) Then
    SetError(50)
    Return 0
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ; send header
    For $i_Count = 0 To UBound($s_Send) - 2
    If _SmtpSend($v_Socket, $s_Send[$i_Count], $s_ReplyCode[$i_Count], $b_trace) Then
    SetError(50 + $i_Count)
    Return 0
    EndIf
    Next

    [/autoit] [autoit][/autoit] [autoit]

    ; send body records (a record can be multiline : take care of a subline beginning with a dot should be ..)
    For $i_Count = 0 To UBound($as_Body) - 1
    ; correct line beginning with a dot
    If StringLeft($as_Body[$i_Count], 1) = "." Then $as_Body[$i_Count] = "." & $as_Body[$i_Count]

    [/autoit] [autoit][/autoit] [autoit]

    If _SmtpSend($v_Socket, $as_Body[$i_Count] & @CRLF, "", $b_trace) Then
    SetError(500 + $i_Count)
    Return 0
    EndIf
    Next

    [/autoit] [autoit][/autoit] [autoit]

    ; close the smtp session
    $i_Count = UBound($s_Send) - 1
    If _SmtpSend($v_Socket, $s_Send[$i_Count], $s_ReplyCode[$i_Count], $b_trace) Then
    SetError(5000)
    Return 0
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    TCPCloseSocket($v_Socket)
    TCPShutdown()
    Return 1
    EndFunc ;==>_INetSmtpMailAuth

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ;
    ; Function Name: _Base64Encoding()
    ; Description: Kodiert eine Zeichenfolge mit dem Base64-Verfahren
    ; (http://de.wikipedia.org/wiki/Base64)
    ; Parameter(s): $String - Zeichenfolge die kodiert werden soll
    ; Requirement(s): None
    ; Return Value(s): Kodierte Zeichenfolge
    ; Authors: bernd670
    ;
    ;===============================================================================
    Func _Base64Encoding ($String)

    [/autoit] [autoit][/autoit] [autoit]

    $strUmsetzung = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
    $strRetValue = ""

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To StringLen($String) Step 3
    $strTok = StringMid($String,$i,3)
    Switch StringLen($strTok)
    Case 3
    $iTokVal = (Asc(StringMid($strTok,1,1)) * 256 + _
    Asc(StringMid($strTok,2,1))) * 256 + _
    Asc(StringMid($strTok,3,1))
    $strTokCryt = StringMid($strUmsetzung,(BitAND($iTokVal,63)) + 1,1)
    $iTokVal = BitShift($iTokVal,6)
    $strTokCryt = StringMid($strUmsetzung,(BitAND($iTokVal,63)) + 1,1) & $strTokCryt
    $iTokVal = BitShift($iTokVal,6)
    $strTokCryt = StringMid($strUmsetzung,(BitAND($iTokVal,63)) + 1,1) & $strTokCryt
    $iTokVal = BitShift($iTokVal,6)
    $strTokCryt = StringMid($strUmsetzung,(BitAND($iTokVal,63)) + 1,1) & $strTokCryt
    $strRetValue &= $strTokCryt

    [/autoit] [autoit][/autoit] [autoit]

    Case 2
    $iTokVal = (Asc(StringMid($strTok,1,1)) * 256 + _
    Asc(StringMid($strTok,2,1))) * 256
    $iTokVal = BitShift($iTokVal,6)
    $strTokCryt = StringMid($strUmsetzung,(BitAND($iTokVal,63)) + 1,1)
    $iTokVal = BitShift($iTokVal,6)
    $strTokCryt = StringMid($strUmsetzung,(BitAND($iTokVal,63)) + 1,1) & $strTokCryt
    $iTokVal = BitShift($iTokVal,6)
    $strTokCryt = StringMid($strUmsetzung,(BitAND($iTokVal,63)) + 1,1) & $strTokCryt
    $strRetValue &= $strTokCryt & "="

    [/autoit] [autoit][/autoit] [autoit]

    Case 1
    $iTokVal = Asc(StringMid($strTok,1,1)) * 65536
    $iTokVal = BitShift($iTokVal,12)
    $strTokCryt = StringMid($strUmsetzung,(BitAND($iTokVal,63)) + 1,1)
    $iTokVal = BitShift($iTokVal,6)
    $strTokCryt = StringMid($strUmsetzung,(BitAND($iTokVal,63)) + 1,1) & $strTokCryt
    $strRetValue &= $strTokCryt & "=="

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    Next

    [/autoit] [autoit][/autoit] [autoit]

    Return $strRetValue
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Global $path = "c:\temp" ; Hier den Pfad eintragen, der durchsucht werden soll
    Global $aFiles = _GetFilesFolder_Rekursiv($path, '*', 0), $Diff, $Hit
    Global $Timer = TimerInit()
    While 1
    If TimerDiff($Timer) > 3600000 Then ; 3.600.000 ms = 1 Stunde
    $Diff = ''
    $aFilesDiff = _GetFilesFolder_Rekursiv($path, '*', 0)
    For $i = 1 To $aFilesDiff[0]
    $Hit = True
    For $j = 1 To $aFiles[0]
    If $aFilesDiff[$i] = $aFiles[$j] Then
    $Hit = False
    ExitLoop
    EndIf
    Next
    If $Hit Then $Diff &= $aFilesDiff[$i] & @CRLF
    Next
    $hFile = FileOpen(@ScriptDir & '\NeueDateien.txt', 1)
    FileWrite($hFile, $Diff)
    FileClose($hFile)
    ;~ MsgBox(0, 'Neue Dateien', $Diff)
    $aFiles = ''
    $aFiles = $aFilesDiff
    $Timer = TimerInit()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $s_SmtpServer = "smtp.gmx.de"
    $s_FromName = "Odette"
    $s_FromAddress = "deinemailadresse@gmx.de"
    $s_ToAddress = "Empfangsdresse@deinemail.de"
    $s_Subject = "Odette Daten !"
    $s_UName = "Dein GMX Name"
    $s_PWD = "Dein Passwort"
    Dim $as_Body[2]
    if $Diff = "" Then
    $as_Body[0] = "Es liegen keine neuen Dateien in Odette vor !"
    Else
    $as_Body[0] = "Es liegen folgende Neue Dateien in Odette vor :"
    Endif
    $as_Body[1] = $Diff
    $Response = _INetSmtpMailAuth ($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_UName, $s_PWD, $s_Subject, $as_Body, "EHLO ")
    ;~ $Response = _INetSmtpMail ($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body)
    $err = @error
    If $Response = 1 Then
    MsgBox(0, "Success!", "Mail sent")
    Else
    MsgBox(0, "Error!", "Mail failed with error code " & $err)
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    EndIf
    Sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;==================================================================================================
    ; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1 [, $iRetType=0 ,[$sDelim='0']]]])
    ; Description: Rekursive Auflistung von Dateien und/oder Ordnern
    ; Parameter(s): $sPath der Basispfad für die Auflistung ('.' -aktueller Pfad, '..' -Parentpfad)
    ; $sExt Erweiterung für Dateiauswahl '*' oder -1 für alle (Standard)
    ; $iDir -1 Dateien+Ordner(Standard), 0 nur Dateien, 1 nur Ordner
    ; optional: $iRetType 0 gibt Array, 1 gibt String zurück
    ; optional: $sDelim legt Trennzeichen für Stringrückgabe fest
    ; 0 -@CRLF (Standard); 1 -@CR; 2 -@LF; oder beliebiges Zeichen
    ; Return Value(s): Array (Standard) od. String mit den gefundenen Pfaden der Dateien und/oder Ordner
    ; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;==================================================================================================
    Func _GetFilesFolder_Rekursiv($sPath, $sExt='*', $iDir=-1, $iRetType=0, $sDelim='0')
    Global $oFSO = ObjCreate('Scripting.FileSystemObject')
    Global $strFiles = ''
    Switch $sDelim
    Case '0'
    $sDelim = @CRLF
    Case '1'
    $sDelim = @CR
    Case '2'
    $sDelim = @LF
    EndSwitch
    If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0
    If $sExt = -1 Then $sExt = '*'
    If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
    _ShowSubFolders($oFSO.GetFolder($sPath),$sExt,$iDir,$sDelim)
    If $iRetType = 0 Then
    Local $aOut
    $aOut = StringSplit(StringTrimRight($strFiles,1), $sDelim)
    If $aOut[1] = '' Then
    ReDim $aOut[1]
    $aOut[0] = 0
    EndIf
    Return $aOut
    Else
    Return StringTrimRight($strFiles,1)
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _ShowSubFolders($Folder, $Ext='*', $Dir=-1, $Delim=@CRLF[/url])
    If Not IsDeclared("strFiles") Then Global $strFiles = ''
    If ($Dir = -1) Or ($Dir = 0) Then
    For $file In $Folder.Files
    If $Ext <> '*' Then
    If StringRight($file.Name, StringLen($Ext)) = $Ext Then _
    $strFiles &= $file.Path & $Delim
    Else
    $strFiles &= $file.Path & $Delim
    EndIf
    Next
    EndIf
    For $Subfolder In $Folder.SubFolders
    If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim
    _ShowSubFolders($Subfolder, $Ext, $Dir, $Delim)
    Next
    EndFunc

    [/autoit]

    Jetzt mit dem von dir zusammenpacken ?
    Es sollte also folgendermasen ablaufen.
    Das Script sollte beim Lauf eine Datei Last_scan.txt erzeugen.
    Diese datei sollte beim nächsten lauf geprüft werden.
    Jetzt sollte das Script alle dateien scannen und die dateien die zwischen dem Last_scan.txt und dem jetzigen lauf erzeugt wurden als info in eine Datei abspeichern.
    Diese Info dann auch gleich noch als Mail an angegebenen User versenden.
    Dazu wird es wohl nach jedem Lauf die Datei Last_scan.txt löschen müssen und neu erstellen.
    Somit hätte man immer eine Logdatei und die Last_scan.txt als Kontrolldatei.

    Wie schwer wäre sowas machbar ?
    Könnte mir da jemand bei helfen ?

    Vielen dank im voraus.

    mfg Observer


    Edit BugFix: Bitte AutoIt-Tags verwenden ( [ autoit ] code [ /autoit ] )

  • Dateien auf Änderungen scannen

    • Observer
    • 26. Juli 2008 um 14:00

    Hi Seven, jo wäre eine Möglichkeit.

    Nur was ist wenn in der zeit wo der rechner hochläuft schon dateien reinkamen ?
    Diese gehen mir dann verloren :(
    Manche der Dateien sind nur 2kb gross, die kommen ruckzuck rein.
    Habe jetzt auch das Umgesetzt mit der Uhrzeit der Datei.
    Speichert jetzt also soweit korrekt ab.


    Andere Frage :
    Wenn ich die Dateien scanne,kann ich da das erstellungsdatum der datei prüfen ?
    Würde heisen ich scanne jede stunde durch ob in der zeit von sagen wir mal 13:30 - 14:30 eine Datei erstellt wurde und diese dann als Info versenden ?

    mfg Observer

  • Dateien auf Änderungen scannen

    • Observer
    • 26. Juli 2008 um 01:57

    Ist ja Cool, funktioniert echt gut so :

    Spoiler anzeigen

    #include <INet.au3>


    ;===============================================================================
    ;
    ; Function Name: _INetSmtpMailAuth()
    ; Description: Sends an email using SMTP over TCP IP.
    ; Parameter(s): $s_SmtpServer - SMTP server to be used for sending email
    ; $s_FromName - Name of sender
    ; $s_FromAddress - eMail address of sender
    ; $s_ToAddress - Address that email is to be sent to
    ; $s_Username - Username for Authentication (bernd670)
    ; $s_Passwd - Password for Authentication (bernd670)
    ; $s_Subject - Subject of eMail
    ; $as_Body - Single dimension array containing the body of eMail as strings
    ; $s_helo - Helo identifier (default @COMPUTERNAME) sometime needed by smtp server
    ; $s_first - send before Helo identifier (default @CRLF) sometime needed by smtp server
    ; $b_trace - trace on a splash window (default 0 = no trace)
    ; Requirement(s): None
    ; Return Value(s): On Success - Returns 1
    ; On Failure - 0 and sets
    ; @ERROR = 1 - Invalid Parameters
    ; @ERROR = 2 - Unable to start TCP
    ; @ERROR = 3 - Unable to resolve IP
    ; @ERROR = 4 - Unable to create socket
    ; @ERROR = 5x - Cannot open SMTP session
    ; @ERROR = 50x - Cannot send body
    ; @ERROR = 5000 - Cannot close SMTP session
    ; Authors: Original function to send email via TCP - Asimzameer
    ; Conversion to UDF - Walkabout
    ; Correction Helo, timeout, trace - Jpm
    ; Correction send before Helo - Jpm
    ; Include Authentication - bernd670
    ;
    ;===============================================================================
    Func _INetSmtpMailAuth($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Username, $s_Passwd, $s_Subject = "", $as_Body = "", $s_helo = "", $s_first="-1", $b_trace = 0)

    Local $v_Socket
    Local $s_IPAddress
    Local $i_Count
    Local $s_Send[9]
    Local $s_ReplyCode[9];Return code from SMTP server indicating success

    If $s_SmtpServer = "" Or $s_FromAddress = "" Or $s_ToAddress = "" Or $s_Username = "" Or $s_Passwd = "" Or $s_FromName = "" Or StringLen($s_FromName) > 256 Then
    SetError(1)
    Return 0
    EndIf
    If $s_helo = "" Then $s_helo = @ComputerName
    If TCPStartup() = 0 Then
    SetError(2)
    Return 0
    EndIf
    StringRegExp($s_SmtpServer, "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)")
    If @extended Then
    $s_IPAddress = $s_SmtpServer
    Else
    $s_IPAddress = TCPNameToIP($s_SmtpServer)
    EndIf
    If $s_IPAddress = "" Then
    TCPShutdown()
    SetError(3)
    Return 0
    EndIf
    $v_Socket = TCPConnect($s_IPAddress, 25)
    If $v_Socket = -1 Then
    TCPShutdown()
    SetError(4)
    Return (0)
    EndIf

    $s_Send[0] = "HELO " & $s_helo & @CRLF
    If StringLeft($s_helo,5) = "EHLO " Then $s_Send[0] = "EHLO " & $s_helo & @CRLF
    $s_ReplyCode[0] = "250"

    $s_Send[1] = "AUTH LOGIN" & @CRLF
    $s_ReplyCode[1] = "334"
    $s_Send[2] = _Base64Encoding($s_Username) & @CRLF
    $s_ReplyCode[2] = "334"
    $s_Send[3] = _Base64Encoding($s_Passwd) & @CRLF
    $s_ReplyCode[3] = "235"
    $s_Send[4] = "MAIL FROM: <" & $s_FromAddress & ">" & @CRLF
    $s_ReplyCode[4] = "250"
    $s_Send[5] = "RCPT TO: <" & $s_ToAddress & ">" & @CRLF
    $s_ReplyCode[5] = "250"
    $s_Send[6] = "DATA" & @CRLF
    $s_ReplyCode[6] = "354"

    $s_Send[7] = "From: " & $s_FromName & " <" & $s_FromAddress & ">" & @CRLF & _
    "To: " & "<" & $s_ToAddress & ">" & @CRLF & _
    "Subject: " & $s_Subject & @CRLF & _
    "Mime-Version: 1.0" & @CRLF & _
    "Content-Type: text/plain; charset=US-ASCII" & @CRLF & _
    @CRLF
    $s_ReplyCode[7] = ""

    $s_Send[8] = @CRLF & "." & @CRLF
    $s_ReplyCode[8] = "250"

    ; open stmp session
    If _SmtpSend($v_Socket, $s_Send[0], $s_ReplyCode[0], $b_trace, "220", $s_first) Then
    SetError(50)
    Return 0
    EndIf

    ; send header
    For $i_Count = 0 To UBound($s_Send) - 2
    If _SmtpSend($v_Socket, $s_Send[$i_Count], $s_ReplyCode[$i_Count], $b_trace) Then
    SetError(50 + $i_Count)
    Return 0
    EndIf
    Next

    ; send body records (a record can be multiline : take care of a subline beginning with a dot should be ..)
    For $i_Count = 0 To UBound($as_Body) - 1
    ; correct line beginning with a dot
    If StringLeft($as_Body[$i_Count], 1) = "." Then $as_Body[$i_Count] = "." & $as_Body[$i_Count]

    If _SmtpSend($v_Socket, $as_Body[$i_Count] & @CRLF, "", $b_trace) Then
    SetError(500 + $i_Count)
    Return 0
    EndIf
    Next

    ; close the smtp session
    $i_Count = UBound($s_Send) - 1
    If _SmtpSend($v_Socket, $s_Send[$i_Count], $s_ReplyCode[$i_Count], $b_trace) Then
    SetError(5000)
    Return 0
    EndIf

    TCPCloseSocket($v_Socket)
    TCPShutdown()
    Return 1
    EndFunc ;==>_INetSmtpMailAuth


    ;===============================================================================
    ;
    ; Function Name: _Base64Encoding()
    ; Description: Kodiert eine Zeichenfolge mit dem Base64-Verfahren
    ; (http://de.wikipedia.org/wiki/Base64)
    ; Parameter(s): $String - Zeichenfolge die kodiert werden soll
    ; Requirement(s): None
    ; Return Value(s): Kodierte Zeichenfolge
    ; Authors: bernd670
    ;
    ;===============================================================================
    Func _Base64Encoding ($String)

    $strUmsetzung = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
    $strRetValue = ""

    For $i = 1 To StringLen($String) Step 3
    $strTok = StringMid($String,$i,3)
    Switch StringLen($strTok)
    Case 3
    $iTokVal = (Asc(StringMid($strTok,1,1)) * 256 + _
    Asc(StringMid($strTok,2,1))) * 256 + _
    Asc(StringMid($strTok,3,1))
    $strTokCryt = StringMid($strUmsetzung,(BitAND($iTokVal,63)) + 1,1)
    $iTokVal = BitShift($iTokVal,6)
    $strTokCryt = StringMid($strUmsetzung,(BitAND($iTokVal,63)) + 1,1) & $strTokCryt
    $iTokVal = BitShift($iTokVal,6)
    $strTokCryt = StringMid($strUmsetzung,(BitAND($iTokVal,63)) + 1,1) & $strTokCryt
    $iTokVal = BitShift($iTokVal,6)
    $strTokCryt = StringMid($strUmsetzung,(BitAND($iTokVal,63)) + 1,1) & $strTokCryt
    $strRetValue &= $strTokCryt

    Case 2
    $iTokVal = (Asc(StringMid($strTok,1,1)) * 256 + _
    Asc(StringMid($strTok,2,1))) * 256
    $iTokVal = BitShift($iTokVal,6)
    $strTokCryt = StringMid($strUmsetzung,(BitAND($iTokVal,63)) + 1,1)
    $iTokVal = BitShift($iTokVal,6)
    $strTokCryt = StringMid($strUmsetzung,(BitAND($iTokVal,63)) + 1,1) & $strTokCryt
    $iTokVal = BitShift($iTokVal,6)
    $strTokCryt = StringMid($strUmsetzung,(BitAND($iTokVal,63)) + 1,1) & $strTokCryt
    $strRetValue &= $strTokCryt & "="

    Case 1
    $iTokVal = Asc(StringMid($strTok,1,1)) * 65536
    $iTokVal = BitShift($iTokVal,12)
    $strTokCryt = StringMid($strUmsetzung,(BitAND($iTokVal,63)) + 1,1)
    $iTokVal = BitShift($iTokVal,6)
    $strTokCryt = StringMid($strUmsetzung,(BitAND($iTokVal,63)) + 1,1) & $strTokCryt
    $strRetValue &= $strTokCryt & "=="

    EndSwitch
    Next

    Return $strRetValue
    EndFunc


    Global $path = "c:\temp" ; Hier den Pfad eintragen, der durchsucht werden soll
    Global $aFiles = _GetFilesFolder_Rekursiv($path, '*', 0), $Diff, $Hit
    Global $Timer = TimerInit()
    While 1
    If TimerDiff($Timer) > 3600000 Then ; 3.600.000 ms = 1 Stunde
    $Diff = ''
    $aFilesDiff = _GetFilesFolder_Rekursiv($path, '*', 0)
    For $i = 1 To $aFilesDiff[0]
    $Hit = True
    For $j = 1 To $aFiles[0]
    If $aFilesDiff[$i] = $aFiles[$j] Then
    $Hit = False
    ExitLoop
    EndIf
    Next
    If $Hit Then $Diff &= $aFilesDiff[$i] & @CRLF
    Next
    $hFile = FileOpen(@ScriptDir & '\NeueDateien.txt', 1)
    FileWrite($hFile, $Diff)
    FileClose($hFile)
    ;~ MsgBox(0, 'Neue Dateien', $Diff)
    $aFiles = ''
    $aFiles = $aFilesDiff
    $Timer = TimerInit()


    $s_SmtpServer = "smtp.gmx.de"
    $s_FromName = "Odette"
    $s_FromAddress = "deinemailadresse@gmx.de"
    $s_ToAddress = "Empfangsdresse@deinemail.de"
    $s_Subject = "Odette Daten !"
    $s_UName = "Dein GMX Name"
    $s_PWD = "Dein Passwort"
    Dim $as_Body[2]
    if $Diff = "" Then
    $as_Body[0] = "Es liegen keine neuen Dateien in Odette vor !"
    Else
    $as_Body[0] = "Es liegen folgende Neue Dateien in Odette vor :"
    Endif
    $as_Body[1] = $Diff
    $Response = _INetSmtpMailAuth ($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_UName, $s_PWD, $s_Subject, $as_Body, "EHLO ")
    ;~ $Response = _INetSmtpMail ($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body)
    $err = @error
    If $Response = 1 Then
    MsgBox(0, "Success!", "Mail sent")
    Else
    MsgBox(0, "Error!", "Mail failed with error code " & $err)
    EndIf


    EndIf
    Sleep(100)
    WEnd


    ;==================================================================================================
    ; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1 [, $iRetType=0 ,[$sDelim='0']]]])
    ; Description: Rekursive Auflistung von Dateien und/oder Ordnern
    ; Parameter(s): $sPath der Basispfad für die Auflistung ('.' -aktueller Pfad, '..' -Parentpfad)
    ; $sExt Erweiterung für Dateiauswahl '*' oder -1 für alle (Standard)
    ; $iDir -1 Dateien+Ordner(Standard), 0 nur Dateien, 1 nur Ordner
    ; optional: $iRetType 0 gibt Array, 1 gibt String zurück
    ; optional: $sDelim legt Trennzeichen für Stringrückgabe fest
    ; 0 -@CRLF (Standard); 1 -@CR; 2 -@LF; oder beliebiges Zeichen
    ; Return Value(s): Array (Standard) od. String mit den gefundenen Pfaden der Dateien und/oder Ordner
    ; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner
    ; Author(s): BugFix (bugfix@autoit.de)
    ;==================================================================================================
    Func _GetFilesFolder_Rekursiv($sPath, $sExt='*', $iDir=-1, $iRetType=0, $sDelim='0')
    Global $oFSO = ObjCreate('Scripting.FileSystemObject')
    Global $strFiles = ''
    Switch $sDelim
    Case '0'
    $sDelim = @CRLF
    Case '1'
    $sDelim = @CR
    Case '2'
    $sDelim = @LF
    EndSwitch
    If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0
    If $sExt = -1 Then $sExt = '*'
    If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
    _ShowSubFolders($oFSO.GetFolder($sPath),$sExt,$iDir,$sDelim)
    If $iRetType = 0 Then
    Local $aOut
    $aOut = StringSplit(StringTrimRight($strFiles,1), $sDelim)
    If $aOut[1] = '' Then
    ReDim $aOut[1]
    $aOut[0] = 0
    EndIf
    Return $aOut
    Else
    Return StringTrimRight($strFiles,1)
    EndIf
    EndFunc

    Func _ShowSubFolders($Folder, $Ext='*', $Dir=-1, $Delim=@CRLF)
    If Not IsDeclared("strFiles") Then Global $strFiles = ''
    If ($Dir = -1) Or ($Dir = 0) Then
    For $file In $Folder.Files
    If $Ext <> '*' Then
    If StringRight($file.Name, StringLen($Ext)) = $Ext Then _
    $strFiles &= $file.Path & $Delim
    Else
    $strFiles &= $file.Path & $Delim
    EndIf
    Next
    EndIf
    For $Subfolder In $Folder.SubFolders
    If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim
    _ShowSubFolders($Subfolder, $Ext, $Dir, $Delim)
    Next
    EndFunc



    Habe mal Msgbox drin gelassen für meine Tests.
    Jetzt habe ich nur noch ein Problem.
    Beim Starten des Scripts liest er mir das verzeichnis aus.
    Das ist nicht das Problem :)
    Folgendes Passiert jetzt, das Script schickt mir erstmal alle Dateien als Neue Dateien.
    Solange das Script Läuft schickt er mir Folgerichtig immer die richtigen neuen Dateien als Neue.
    Beende ich das Script schickt er mir wieder alle Dateien als Neue Dateien.
    Wie muss ich vorgehen das er mir auch dann nur die Neuen Dateien als Neue schickt ?
    Irgendwie sollte ich die beim ersten Scann eingetragenen Dateien mitloggen und dann jede stunde eine neue Datei schreiben in folgender form.

    DD.MM.YYYY_HH.MM.SS.txt

    Also z.B. 26.07.2008_01.51.15.txt

    Datum mit Uhrzeit also.
    Jetzt immer die neu Generierte Datei mit der aktuellsten vergleichen und dann die Differenz als $Diff versenden.
    Da man ja den rechner morgens neu startet, kann es durchaus sein das beim neustart des scriptes mal 8 Stunden vergehen.
    Kann mir da jemand einen Denkanstoss geben ?
    Habe es nicht so mit den String vergleichen usw.


    Vielen Dank im voraus für eure Hilfestellungen.


    mfg Observer

  • Dateien auf Änderungen scannen

    • Observer
    • 24. Juli 2008 um 17:07

    Hi, danke erstmal für die schnelle hilfe.

    Noch eine Frage.

    Es zeigt mir jetzt an Neue Dateien, dort die Namen mit Pfaden der Dateien.

    Allerdings wenn ich bestätige kommt mir das Fenster mit den Neuen Dateien ständig.
    Auch schreibt er mir die Änderung nicht in ein File.

    Hättest mir da auch noch kurz ne Hilfe dazu ?

    Vielen Dank

    mfg Observer

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™