Ist die Firefoxsteuerung besser als die IE steuerung ?
Kann ich bei der FF-Steuerung auch Javascriptfunktionen direkt ansprechen ?
mfg
Ist die Firefoxsteuerung besser als die IE steuerung ?
Kann ich bei der FF-Steuerung auch Javascriptfunktionen direkt ansprechen ?
mfg
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 !!
3 Oscars für dich
mfg
Kein Problem, habs hinbekommen.
Thx für Versuch !
mfg
Erledigt, danke hast mir den richtigen Anstoss gegeben xD
mfg
Hi Leute,
wie kann ich eine Javascript Funktion in einem IE ausführen ?
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
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
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
Hui Leute, ich bekomme da ne Fehlermeldung mit der ich nix anfangen kann.
ZitatIf 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.
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")
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
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.
#include <IE.au3>
$oIE = _IECreate("about:blank")
_IENavigate($oIE, "http://de.selfhtml.org/html/formulare/anzeige/input_radio.htm")
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
Thx Bugfix, genauso hab ich es gemacht und funzt danke !
mfg
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
Quelltext von der PHP seite ?
Habe ich nicht was es als HTML ausgibt damit kann ich dienen.
><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
Hi,
habe da mal eine frage.
Und zwar ich möchte gerne etwas in einem IE steuern.
HotKeySet("^!x", "MeinExit")
#include <IE.au3>
$oIE = _IECreate("gewünschte website")
sleep(20000)
[/autoit][autoit][/autoit][autoit]$i = 0
While $i <= 150
$sMyString = "Einpacken"
$oLinks = _IELinkGetCollection($oIE)
For $oLink in $oLinks
$sLinkText = _IEPropertyGet($oLink, "innerText")
If StringInStr($sLinkText, $sMyString) Then
_IEAction($oLink, "click")
ExitLoop
EndIf
Next
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
$i = $i + 1
WEnd
Func MeinExit()
Exit
EndFunc
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
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
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
Ja genau das.
Ich brauche die Dateien die zwischen den scanns erstellt wurden.
mfg Observer
Hm, ok.
Wie müsste ich das von mir (Bugfix und Oscars)
#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)
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 ([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
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
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 ] )
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
Ist ja Cool, funktioniert echt gut so :
#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
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