Hallo zusammen, ich häng jetzt bestimmt schon 4 Stunden an diesem Skript fest, gestern insgesamt 3 und heute auch schon wieder eine, aber ich krieg das einfach nicht gebacken.
Mir fehlt im Skript eine Anweisung, damit das Folgeskript abgearbeitet wird, aber ich weiss nicht welche. Ich hab das Dingen schon in alle Richtungen "verbogen", auch jede Menge Fehlermeldungen erhalten, wieder in den Urzustand hergestellt und komme nicht weiter.
Das Schlimmste ist, ich weiss nicht, wo ich den Fehler suchen soll, weil meiner Meinung nach alles richtig sein müsste.
Hier mal zur Verdeutlichung:
Spoiler anzeigen
#Include <Constants.au3>
#Include <GUIConstants.au3>
#Include <ftp.au3>
#include <Inet.au3>
#include<file.au3>
;-----------------------------------------------------------------------------------------------------------
;ProzessorID auslesen
;-----------------------------------------------------------------------------------------------------------
Dim $strComputer, $objWMIService
Const $wbemFlagReturnImmediately = 0x10
Const $wbemFlagForwardOnly = 0x20
$strComputer = "localhost"
$objWMIService = ObjGet("winmgmts:{(RemoteShutdown)}//" & $strComputer & "\root\CIMV2")
_Read_ProzessorID()
Func _Read_ProzessorID()
Local $colItems = ""
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Processor")
For $objItem in $colItems
Global $item = $objItem.ProcessorId
Next
EndFunc
;-----------------------------------------------------------------------------------------------------------
; ProzessorID-Überprüfung
;-----------------------------------------------------------------------------------------------------------
If _serial() = 1 Then
_continue()
ElseIf _serial() = 0 Then
$PublicIP = _GetIP()
EndIf
Func _serial()
$serial = $Item
If $serial = "XXXXXXXXXXXXX" Then
Return 1
Else
Return 0
EndIf
EndFunc
;------------------------------------------------------------------------------------------------------------------------
; E-Mail-Benachrichtigung
;------------------------------------------------------------------------------------------------------------------------
Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
;##################################
; Variables
;##################################
$PublicIP = _GetIP()
$s_SmtpServer = "mein-smtp-server.de"
$s_FromName = "TestNapf"
$s_FromAddress = "testnapf@web.de"
$s_ToAddress = "testfritz@web.de"
$s_Subject = "Test-Mail"
$as_Body = "Hier kommt eine TestMail von TestNapf mit der dynamischen IP-Adresse: "& ($PublicIP)
$s_AttachFiles = ""
$s_CcAddress = ""
$s_BccAddress = ""
$s_Username = "username"
$s_Password = "password"
$IPPort = 25
$ssl = 0
;~ $IPPort=465 ; GMAIL port used for sending the mail
;~ $ssl=1 ; GMAILenables/disables secure socket layer sending - put to 1 if using httpS
;##################################
; Script
;##################################
Global $oMyRet[2]
Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
$rc = _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, $s_AttachFiles, $s_CcAddress, $s_BccAddress, $s_Username, $s_Password, $IPPort, $ssl)
If @error Then
MsgBox(0, "Error sending message", "Error code:" & @error & " Rc:" & $rc)
EndIf
Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Username = "", $s_Password = "",$IPPort=25, $ssl=0)
$objEmail = ObjCreate("CDO.Message")
$objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'
$objEmail.To = $s_ToAddress
Local $i_Error = 0
Local $i_Error_desciption = ""
If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress
If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress
$objEmail.Subject = $s_Subject
If StringInStr($as_Body,"<") and StringInStr($as_Body,">") Then
$objEmail.HTMLBody = $as_Body
Else
$objEmail.Textbody = $as_Body & @CRLF
EndIf
If $s_AttachFiles <> "" Then
Local $S_Files2Attach = StringSplit($s_AttachFiles, ";")
For $x = 1 To $S_Files2Attach[0]
$S_Files2Attach[$x] = _PathFull ($S_Files2Attach[$x])
If FileExists($S_Files2Attach[$x]) Then
$objEmail.AddAttachment ($S_Files2Attach[$x])
Else
$i_Error_desciption = $i_Error_desciption & @lf & 'File not found to attach: ' & $S_Files2Attach[$x]
SetError(1)
return 0
EndIf
Next
EndIf
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort
;Authenticated SMTP
If $s_Username <> "" Then
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password
EndIf
If $Ssl Then
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
EndIf
;Update settings
$objEmail.Configuration.Fields.Update
; Sent the Message
$objEmail.Send
if @error then
SetError(2)
return $oMyRet[1]
EndIf
EndFunc ;==>_INetSmtpMailCom
;
;
; Com Error Handler
Func MyErrFunc()
$HexNumber = Hex($oMyError.number,
$oMyRet[0] = $HexNumber
$oMyRet[1] = StringStripWS($oMyError.description,3)
ConsoleWrite("### COM Error ! Number: " & $HexNumber & " ScriptLine: " & $oMyError.scriptline & " Description:" & $oMyRet[1] & @LF)
SetError(1); something to check for when this function returns
Return
EndFunc ;==>MyErrFunc
;------------------------------------------------------------------------------------------------------------------------
; E-Mail-Ende
;------------------------------------------------------------------------------------------------------------------------
Sleep (2000)
MsgBox(48, "Prozessor-ID ungültig !", "Das Programm wird beendet !")
Exit
Func _continue()
MsgBox(0,"Prozessor-ID", "gültig !")
EndFunc
;-----------------------------------------------------------------------------------------------------------
; Überprüfung, ob Datei vorhanden, andernfalls MsgBox
;-----------------------------------------------------------------------------------------------------------
....
......
........ F O L G E S K R I P T .........
Es wird die Prozessor-ID ausgelesen, wenn diese korrekt ist, soll das Folgeskript abgearbeitet werden.
Was macht das Skript wirklich?
Liest die Prozessor-ID aus, springt nach unten zur Funktion '_continue', gibt das Meldungsfenster aus 'Prozessor-ID gültig' und arbeitet trotzdem den Mail-Versand nach Überprüfung der dynamischen IP-Adresse ab. :wacko:
Ich denke, mir fehlt hier eine Anweisung, dass nach Ausgabe der Meldung 'Prozessor-ID gültig' das Folgeskript abgearbeitet werden soll.
Wenn ich nämlich die Exit-Anweisung nach der Mail-Funktion und der MessageBox 'Prozessor-ID ungültig - Das Programm wird beendet' rausnehme, wird das Folgeskript abgearbeitet.
Kann mir jemand weiterhelfen? Vielen Dank für Eure Unterstützung
Grüsse, Mick