Beiträge von BugFix
-
-
Nein, das ist völlig normal, da es ja auch tatsächlich für den PC neue Hardware ist.
Plug&Play bedeutet ja nicht: ohne Treiber, sondern dass keine extra Treiber nötig sind. Systemeigene Komponenten reichen also aus. -
Ja, du musst schon deklarieren, aber nur so:
[autoit]Dim $array
[/autoit] -
Suchen hilft

-
:hammer: :hammer:
Es sind die Kleinigkeiten, die einem den Ärger bereiten. Naja und die verschiedenen Domains bei GMX. Hatte dummerweise in die INI ".net " geschrieben obwohl ich ".de" habe.Sowas Trottliges. Am besten ich reservier mir schon mal 'nen Platz im Seniorenstift.

-
Zitat
hast du mal die Funktion probiert?
Noch nicht, aber gleich

Edit
Dasselbe Problem. Von Hand eingetragen - super. Aus INI eingelesen - fail.
Hier mal die INI:
Code[mail] SMTPserver=mail.gmx.net fromName=Max Mustermann fromAdress=max.mustermann@gmx.net toAdress=bugfix@autoit.de Betreff=autom.: Wochenplan & KW UserName=xxxxxxx UserPasswort=xxxxxxxxSo lese ich aus:
[autoit]$arIniRead = IniReadSection($iniPath, "mail")
[/autoit][autoit][/autoit][autoit]
$server = $arIniRead[1][1]
$fromName = $arIniRead[2][1]
$from = $arIniRead[3][1]
$to = $arIniRead[4][1]
$betr = $arIniRead[5][1]
$Uname = $arIniRead[6][1]
$Upass = $arIniRead[7][1]; Aufruf
[/autoit]
$Response = _INetSmtpMailAuth ($server, $fromName, $from, $to, $Uname, $Upass, $betr, $arbody) -
Mal ein grundsätzlicher Tipp:
Gerade, wenn man erst anfängt in diesem Metier ist es notwendig zu wissen, was man tut.
Es gibt da etwas sehr nützliches, nennt sich 'Programmablaufplan' oder kurz PAP. Darin werden die logischen Abläufe, Verzweigungen, Interaktionen innerhalb eines Programmes notiert.
Dieser Vorgang ist das eigentliche 'Programmieren'. Nur findet das noch ohne Programmiersprache statt.Anschließend wird dieses umgesetzt in Programmcode - Codieren. Umgangssprachlich wird das Codieren als Programmieren bezeichnet.
Also: Stift zur Hand, erst mal alles zu Papier bringen, prüfen ob die Abläufe logisch sind und dann ==> Happy Coding

-
Habe ich, alles paletti. Habe auch zusätzlich mit "IsString( )" geprüft. Alles OK.
Ist mir absolut unverständlich. -
Sprichst du von "Tabs" oder von "Tab-Items"?
-
Hi,
Da ich für meinen GMX-Account _INetSmtpMailCom( ) nicht verwenden kann, habe ich mal SendEmail( ) probiert.Spoiler anzeigen
[autoit]Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
[/autoit]
Func SendEmail($e_Sender, $e_Recipient, $e_Subject, $e_Text,$e_File)
$objMessage = ObjCreate ("CDO.Message")
With $objMessage
.Subject = $e_Subject
.Sender = $e_Sender
.From = $e_Sender
.To = $e_Recipient
.TextBody = $e_Text
;.HtmlBody = $e_Text ; uncomment to send a HTML mail and comment line above
;~ .AddAttachment = $e_File
EndWith
With $objMessage.Configuration.Fields
.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mail.gmx.net";$smtpserver
.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = "max.mustermann@gmx.de";$smtpuser
.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "XXX";$smtppass
.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Item ("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
.Update
EndWith
$objMessage.Send
Return
EndFunc
Func MyErrFunc()
$HexNumber=hex($oMyError.number,8) ; for displaying purposes
Msgbox(0,"AutoItCOM Test","We intercepted a COM Error !" & @CRLF & @CRLF & _
"err.description is: " & @TAB & $oMyError.description & @CRLF & _
"err.number is: " & @TAB & $HexNumber & @CRLF & _
"err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF _
)
SetError(1) ; to check for after this function returns
Endfunc
Dabei taucht aber ein seltsames Phänomen auf:Übergebe ich die Daten für die eMail im Klartext
[autoit]SendEmail("max.mustermann@gmx.de", "empfaenger@web.de", "Betreff = TEST", "Body = Das ist ein Test")
[/autoit]dann funktioniert das tadellos.
[autoit]
Rufe ich die Funktion aber mit Variablen, die ich mit Daten aus einer INI befüllt habe auf:SendEmail($arIniRead[1][1], $arIniRead[2][1], $Betr, $Text)
[/autoit]erhalte ich: "==> The requested action with this object has failed.:
$objMessage.Send
$objMessage.Send^ ERROR"
Wenn ich den Fehler auswerte: "...Server hat die Absender adresse zurückgewiesen ...unknown user"
Und die Daten in der INI sind identisch mit denen, die ich im ersten Bsp. von Hand eintrage. :irre:Hat jemand 'ne Idee?
*Die Funktion verwendet im Original noch "Attachment". Das hab ich aber auskommentiert, da ich es nicht brauche. Deshalb Aufruf nur mit 4 Argumenten.
-
Ein gute Erläuterung zu Regulären Ausdrücken findest du auf Regenechsen.de.
Um in Echtzeit deine Ausdrücke zu prüfen kannst du diese Freeware nutzen: The Regex Coach.
-
[autoit]ZitatEDIT: Beitrag geändert
Leider klappt es nicht, er ignoriert die Größe der Quellordner;Größe Speicherplatz? <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< evtl. ändern >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
[/autoit]
For $i = 1 to 3
$Quell_Pf_Gr_[$i] = DirGetSize($Quell_Pf_[$i],1)
NextDu rufst auf: DirGetSize($Quell_Pf_[$i],1)
[autoit]
somit bekommst du ein Array mit erweiterten Angaben (Größe, Anz. Dateien, Anz. Ordner) zurück. Die Verwendung dieser Daten müsste so aussehen:For $i = 1 to 3
[/autoit]
$var = DirGetSize($Quell_Pf_[$i],1)
$Quell_Pf_Gr_[$i] = $var[0] ; [0]-Größe, [1]-Anz. Files, [2]-Anz. Dir
Next
[autoit]
Da du nur die Größe verwendest, Aufruf ohne Flag:For $i = 1 to 3
[/autoit]
$Quell_Pf_Gr_[$i] = DirGetSize($Quell_Pf_[$i])
NextZitatStimmt der Aufruf des HotKeySet?
Ja, ist korrekt.
EDIT
Ich hab deine Version mal etwas optimiert.
Aber nicht zu sehr, sollst dich ja noch zurechtfinden.Spoiler anzeigen
[autoit]#include <Date.au3>
[/autoit]
Dim $Quell_Pf_[4][2] ; [n][0] = Pfad; [n][1] = gerundete Größe
Dim $goOut = 0
Dim $Ziel_Pf_[4]
HotKeySet("{ESC}", "Beenden")
Func Beenden()
EXIT
EndFunc
;Datumsoptionen
$iWeekday = _DateToDayOfWeek(@YEAR, @MON, @MDAY)
$sNewDate = _DateAdd('d', 0, _NowCalcDate())
$sNewDate = StringReplace($sNewDate, "/", ".")
;Quellpfad <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< evtl. ändern >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
$Quell_LW = "E:\"
$Quell_Pf_[1][0] = $Quell_LW & "\Adressbuch"
$Quell_Pf_[2][0] = $Quell_LW & "\Favoriten"
$Quell_Pf_[3][0] = $Quell_LW & "\E-Mails"
;Zielpfad <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< evtl. ändern >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
$Ziel_LW = "V:\"
$Ziel_Pf = $Ziel_LW & "Sicherung Internet\" & $sNewDate
$Ziel_Pf_[1] = $Ziel_Pf & "\Adressbuch"
$Ziel_Pf_[2] = $Ziel_Pf & "\Favoriten"
$Ziel_Pf_[3] = $Ziel_Pf & "\E-Mails"
_check()
Func _check()
;Ziellaufwerk vorhanden?
If FileExists($Ziel_LW) Then
$tmp = 0
For $i = 1 to 3 ;Quellverzeichnisse vorhanden?
If Not FileExists($Quell_Pf_[$i][0]) Then
MsgBox(0, "", $Quell_Pf_[$i][0] & " existiert nicht")
$goOut = 1
Else ; Speicherplatz ermitteln und runden
$Quell_Pf_[$i][1] = Round(DirGetSize($Quell_Pf_[$i][0]), 0 /1024 /1024)
$tmp += $Quell_Pf_[$i][1] ; Größe zusammenrechnen
EndIf
Next
If $goOut = 1 Then Exit
$Ziel_LW_Gr_Ru = Round(DriveSpaceFree($Ziel_LW), 0)
;Größe Speicherplatz Vergleich <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< evtl. ändern >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
If $tmp > $Ziel_LW_Gr_Ru Then
Msgbox(0,"Zu wenig Speicherplatz vorhanden","Geben Sie mindestens " & $tmp - $Ziel_LW_Gr_Ru & " MB Speicherplatz auf " & $Ziel_LW & " frei")
Exit
Else
;Info-Fenster einblenden
SplashTextOn("Datensicherung Internet", "Sicherung läuft - Bitte warten", 250, 30, -1, -1, 0)
;zu kopierende Ordner <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< evtl. ändern >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
For $i = 1 to 3
DirCopy($Quell_Pf_[$i][0], $Ziel_Pf_[$i], 1)
Next
EndIf
Else
$ret = MsgBox(5 + 64, "Datensicherung Internet", "Ziellaufwerk " & $Ziel_LW & " nicht vorhanden")
If $ret = 4 Then
_check()
Else
EndIf
EndIf
EndFunc ;==>_check
;Info-Fenster ausblenden
SplashOff() -
Einfacher nicht unbedingt, aber vielleicht ist es übersichtlicher. Schau es dir an:
[autoit]$tmp = 0
[/autoit]
For $i = 1 To 3
$tmp += $Quell_Pf_Gr_Ru_[$i]
Next
If $tmp > $Ziel_LW_Gr Then
Msgbox(0,"Zu wenig Speicherplatz vorhanden","Geben Sie mindestens " & $tmp - $Ziel_LW_Gr_Ru & _
" MB Speicherplatz auf " & $Ziel_LW & " frei")
Exit -
Also "Kapier ich nicht" ist nicht gerade das, was man sich unter einem Thread-Thema vorstellt. Bitte einfach eine kurze, aussagekräftige Bemerkung zum Problem.
Und es wär nicht schlecht, wenn du uns etwas Code zur Verfügung stellst. Dann können wir sehen, was du falsch machst und dir helfen. -
Hi Tweaky,
ich hab in meinem ersten Beitrag den Code angepasst.
-
Ich hab dir mal ne RegExp-Lösung erstellt.
Musst nur die Website in einen String bringen. Hab hier zur Demo nur nen Teil genommen.Spoiler anzeigen
[autoit]#include <array.au3>
[/autoit] [autoit][/autoit] [autoit]
Dim $arOut[1]
$pattern = '((\d{6,7}">\d{1,2}\:\d{3}\:\d{1,2})|(\d{6,7}"\sselected="selected"\s>\d{1,2}\:\d{3}\:\d{1,2}))'
$str = '<option style="" value="573984">4:388:32</option><option style="" value="573985">4:388:33</option><option style="" value="2773761">21:166:1</option><option style="" value="2773762">21:166:2</option><option style="" value="2773763">21:166:3</option><option style="" value="2773764">21:166:4</option><option style="" value="6312321">48:163:1</option><option style="background:#00a000;" value="6312449">48:164:1</option><option style="background:#00a000;" value="6312450">48:164:2</option><option style="background:#00a000;" value="6312451">48:164:3</option><option style="background:#00a000;" value="6312452">48:164:4</option><option style="background:#00a000;" value="6312453">48:164:5</option><option style="background:#00a000;" value="6312454">48:164:6</option><option style="background:#00a000;" value="6312455">48:164:7</option><option style="background:#00a000;" value="6312456">48:164:8</option><option style="background:#00a000;" value="6312457">48:164:9</option><option style="background:#00a000;" value="6312458">48:164:10</option><option style="background:#00a000;" value="6312459">48:164:11</option><option style="background:#00a000;" value="6312460">48:164:12</option><option style="background:#00a000;" value="6312461">48:164:13</option><option style="background:#00a000;" value="6312462">48:164:14</option><option style="background:#00a000;" value="6312463">48:164:15</option><option style="" value="6312833">48:167:1</option><option style="background:#00a000;" value="6317441">48:203:1</option><option style="" value="6317442">48:203:2</option><option style="" value="6317443">48:203:3</option><option style=""'
$arSelect = StringRegExp($str, $pattern, 3)ReDim $arOut[UBound($arSelect)]
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To UBound($arSelect)-1
If StringInStr($arSelect[$i], '" selected="selected" >') Then
$arOut[$i] = StringReplace($arSelect[$i], '" selected="selected" >', "|")
Else
$arOut[$i] = StringReplace($arSelect[$i], '">', "|")
EndIf
Next_ArrayDisplay($arOut, "OUT")
[/autoit] -
Hi,
da im Forum die Frage auftauchte, wie man einen manuell konfigurierten Netzwerkadapter per Softwarebefehl trennen kann, habe ich meine Lösung gleich mal in eine Funktion verpackt.Vorgabezeit (default) bis zum Zurückstellen auf den Standardgateway ist 2000 ms. Es kann, optional, jede beliebige Zeit übergeben werden.
Wird "0" übergeben, funktioniert die Funktion als "NOT-AUS". Der Standardgateway wird dann nicht wiederhergestellt.Spoiler anzeigen
[autoit];------------------------------------------------------------------------------------------
[/autoit]
; Funktion _ChangeGatewayAndBack($MY_IP, $GATEWAY_IP, $FAKE_GATEWAY_IP [,$TIMEOUT=-1])
;
; Beschreibung Trennt die Verbindung zwischen PC und Router (Netzwerk), indem man dem
; Netzwerkadapter kurzzeitig einen falschen Gateway zuweist.
; Der Adapter muss manuell konfiguriert sein.
;
; Parameter $MY_IP IP des Netzwerkadapters
; $GATEWAY_IP Gateway
; $FAKE_GATEWAY_IP falsche IP
; $TIMEOUT Zeitdauer bis der Standardgateway wieder aktiv wird
; -1 (default) 2000 ms
; 0 NOTAUS! Standardgateway wird NICHT zurückgesetzt
; n in Milisekunden (beliebig)
;
; Autor BugFix [email='bugfix@autoit.de'][/email]
;------------------------------------------------------------------------------------------
#include <array.au3>
Func _ChangeGatewayAndBack($MY_IP, $GATEWAY_IP, $FAKE_GATEWAY_IP ,$TIMEOUT=-1)
Local $ARGATEWAY = _ArrayCreate($GATEWAY_IP, $GATEWAY_IP)
Local $ARFAKEGATEWAY = _ArrayCreate($FAKE_GATEWAY_IP, $FAKE_GATEWAY_IP)
Local $TIME, $EMERGENCY = 0, $strComputer = "."
Switch $TIMEOUT
Case -1
$TIME = 2000
Case 0
$EMERGENCY = 1
Case Else
$TIME = $TIMEOUT
EndSwitch
$objWMIService = ObjGet("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")
$colNetCards = $objWMIService.ExecQuery _
("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")
If $EMERGENCY = 0 Then
For $objNetCard in $colNetCards
If $objNetCard.IPAddress(0) = $MY_IP Then
$objNetCard.SetGateways($ARFAKEGATEWAY)
Sleep($TIME)
$objNetCard.SetGateways($ARGATEWAY)
ExitLoop
EndIf
Next
Else
For $objNetCard in $colNetCards
If $objNetCard.IPAddress(0) = $MY_IP Then
$objNetCard.SetGateways($ARFAKEGATEWAY)
ExitLoop
EndIf
Next
EndIf
EndFunc ;==>_ChangeGatewayAndBack -
Da waren einige Schnitzer drin

Du hattest das Array nicht deklariert und weder If... noch Func... beendet.EDIT
Hab dir das Beenden nach Prüfung aller Pfade eingefügt.Spoiler anzeigen
[autoit]#include <Date.au3>
[/autoit]
#include <Array.au3>
Dim $arQuell_Pf[3] , $goOut = 0
;Datumsoptionen
$iWeekday = _DateToDayOfWeek(@YEAR, @MON, @MDAY)
$sNewDate = _DateAdd('d', 0, _NowCalcDate())
$sNewDate = StringReplace($sNewDate, "/", ".")
;Quellpfad <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< evtl. ändern >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
$Quell_LW = "E:\"
$arQuell_Pf[0] = $Quell_LW & "\Adressbuch"
$arQuell_Pf[1] = $Quell_LW & "\Favoriten1"
$arQuell_Pf[2] = $Quell_LW & "\E-Mails"
;Zielpfad <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< evtl. ändern >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
$Ziel_LW = "V:\"
$Ziel_Pf = $Ziel_LW & "Sicherung Internet\" & $sNewDate
$Ziel_Pf_01 = $Ziel_Pf & "\Adressbuch"
$Ziel_Pf_02 = $Ziel_Pf & "\Favoriten"
$Ziel_Pf_03 = $Ziel_Pf & "\E-Mails"
_check()
Func _check()
;Ziellaufwerk vorhanden?
If FileExists($Ziel_LW) Then
;Quellverzeichnisse vorhanden?
$goOut = 0
For $i = 0 to 2 ; Array beginnt mit Index 0 für ersten Wert
If Not FileExists($arQuell_Pf[$i]) Then
MsgBox(0, "", $arQuell_Pf[$i] & " existiert nicht")
$goOut = 1
EndIf
Next
EndIf
If $goOut = 1 Then Exit
EndFunc -
Tipp: Array mit Quellpfad 1..3
[autoit]For $i = 0 to 2
[/autoit]
If Not FileExist($arQuell[$i]) Then MsgBox(0, "", $arQuell[$i] & " existiert nicht")
Next -
Das kann man ganz elegant lösen: einfach mal kurz der Netzwerkkarte einen anderen (blinden) Gateway zuordnen. Anschließend wieder den Originalwert.
[autoit]
Dazu muss die Netzwerkkarte manuell konfiguriert sein.#include <array.au3>
[/autoit][autoit][/autoit][autoit]
Dim $meineIP = "192.168.178.21" ; Die IP deines Adapters, muss manuell konfiguriert sein
Dim $arGateway = _ArrayCreate("192.168.178.1", "192.168.178.1") ; IP des Routers
Dim $arFakeGateways = _ArrayCreate("192.168.178.98", "192.168.178.99") ; blinde IP's$strComputer = "."
[/autoit][autoit][/autoit][autoit]
$objWMIService = ObjGet("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")
$colNetCards = $objWMIService.ExecQuery _
("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")For $objNetCard in $colNetCards
[/autoit]
If $objNetCard.IPAddress(0) = $meineIP Then
$objNetCard.SetGateways($arFakeGateways)
Sleep(2000)
$objNetCard.SetGateways($arGateway)
ExitLoop
EndIf
Next