so ist das schon richtig, aber mit hotmail wird das höchstwahrscheinlich nicht funktionieren. Hotmail arbeitet über SSL soweit ich das in Erinnerung habe.
Sollte das also nicht funktionieren, probier es mit nem gmx-account; damit funktionierts auf jeden Fall.
Beiträge von SEuBo
-
-
-
Haben die benutzernamen irgendeine besonderheit (zb haben die CAD-Admins ein "cad_" vorm Namen, oder so? - Irgendein Muster halt, an dem das erkannt werden kann)
Oder gibt es eine Schnittstelle über die der Admin Status (evtl übers Netzwerk) abgefragt werden kann?Alternativ kannst du die Usernames und den dazugehörigen Admin-Status in einem 2D-Array führen.
Hier ein Beispiel:
Spoiler anzeigen
[autoit]$Status = _GetAdminStatus("Anton")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
MsgBox(0,"Anton",$Status)
$Status = _GetAdminStatus("Rudolf")
MsgBox(0,"Rudolf",$Status)Func _GetAdminStatus($sUSER)
[/autoit]
Local $aAdmins[8][2] = [ _ ; 1 = Admin, 2 = CAD-Admin
["Hans", 1],["Peter", 2],["Willi", 1],["Herbert", 1], _
["Fritz", 1],["Anton", 2],["Karl", 2],["Rudolf", 1] _
]
For $i = 0 To UBound($aAdmins)-1
If $sUSER = $aAdmins[$i][0] Then Return $aAdmins[$i][1]
Next
EndFunc ;==>_GetAdminStatus -
Sehr gut, dass es jetzt funktioniert.
Ich glaube das Problem mit der Hauptschleife, würde sich lösen lassen, wenn man nochmals eine Stufe höher geht - über GUIRegisterMsg() und die WIndows Messages $WM_NOTIFY und/oder $WM_COMMAND. Dann sollte das Script eigentlich reagieren, egal was du machst (Auch wenn das Script in ner Schleife festhängt). Das ist aber schon härterer Tobak, ich wollte es nur der Vollständigkeit halber erwähnt haben.
-
Das max Limit ist, sofern du es nicht verändesrst immer 100.
Und wenn du es verändest, weißt du doch selber welchen Wert es hat?!Ansonsten:
Spoiler anzeigen
[autoit]#include <GuiSlider.au3>
[/autoit] [autoit][/autoit] [autoit]
$hGUI = GUICreate("")
$cSlider = GUICtrlCreateSlider(20,20,200,20)
GUISetState()
GUICtrlSetLimit(-1,Random(100,1000,1),Random(0,99,1))$aRange = _GUICtrlSlider_GetRange(GUICtrlGetHandle($cSlider))
[/autoit] [autoit][/autoit] [autoit]MsgBox(0,"","Minimal: "&$aRange[0]&@CRLF&"Maximal: "&$aRange[1])
[/autoit] -
Du brauchst nur
[autoit]GUICtrlRead($cSlider)
[/autoit]
ohne den Flag parameter. Siehe hier:Spoiler anzeigen
[autoit]$hGUI = GUICreate("")
[/autoit] [autoit][/autoit] [autoit]
$cSlider = GUICtrlCreateSlider(20,20,200,20)
GUISetState()While 1
[/autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $cSlider
MsgBox(0,"",GUICtrlRead($cSlider))
EndSwitch
WEnd -
Hallo,
Generell gilt: Es ist besser GUI's am Scriptanfang zu erstellen, und dann nur noch mit @SW_HIDE / @SW_SHOW zu arbeiten. Du kannst ja in deiner Hauptschleife immer noch mithilfe einer variable unterscheiden, welches GUI aktiv ist.
Hier ein Beispiel:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
Global $hCurActive, $hGUI, $hChild ; GUI's
Global $hOpen2 ; Ctrls
_SetupGUI()While 1 * Sleep(25)
[/autoit] [autoit][/autoit] [autoit]
Switch $hCurActive
Case $hGUI
ToolTip("Aktiv ist die HauptGUI")
Case $hChild
ToolTip("Das Child ist aktiv")
EndSwitch
WEndFunc OnEvent_Eventhandler()
[/autoit] [autoit][/autoit] [autoit]
Switch @GUI_CtrlId
Case -3
If @GUI_WinHandle = $hGUI Then Exit
GUISetState(@SW_HIDE, @GUI_WinHandle)
$hCurActive = $hGUI
Case $hOpen2
GUISetState(@SW_SHOW, $hChild)
$hCurActive = $hChild
EndSwitch
EndFunc ;==>OnEvent_EventhandlerFunc _SetupGUI()
[/autoit] [autoit][/autoit] [autoit]
Opt("GUIOnEventMode", 1)$hGUI = GUICreate("", 400, 400)
[/autoit] [autoit][/autoit] [autoit]
$hOpen2 = GUICtrlCreateButton("GUI2", 20, 20, 200, 20)
GUICtrlSetOnEvent(-1, "OnEvent_Eventhandler")
GUISetOnEvent(-3, "OnEvent_Eventhandler")$hChild = GUICreate("Child", 200, 200, 200, 200)
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent(-3, "OnEvent_Eventhandler")GUISetState(@SW_SHOW, $hGUI)
[/autoit]
$hCurActive = $hGUI
EndFunc ;==>_SetupGUI -
Meine Frage wäre: Kommt dein Script überhaupt in der Close Funktion an?
Sowei ich mich erinnere, ist es so, dass der OnEvent-Mode nur funktioniert, solange das Script in der Hauptschleife ist. Ich kann mich aber auch irren.
Bevor ich hier aber anfange zu spekulieren, poste doch bitte mal deinen kompletten Code, das macht es uns immer einfacher (weil man 1. das Script starten kann, und 2 die schematischen Abläufe dahinter besser erkennen, und 3. kann man sich Anhand des ganzen Codes ein WorkAround überlegen. -
Wie wärs mal damit, dass du die ganzen And und OR abfragen vernünftig einklammerst, damit der Interpreter auch weiß, was du jetzt wie verknüpfen willst. Kann nur besser werden.
-
Schreibweise/Geschwindigkeit AutoIt3-SourceCode
Aber die ursprüngliche Quelle weiß ich auch nicht.
-
Code
$aName = Array $sName = String (Text) $iName = Integer $cName/$idName = Control-ID $fName/$bName = Boolean (True/False) $nName = Float (Gleitkommazahl) $hName = Handle $oName = Objekt $vName = Variant (Unbekannter Typ) $tName/$tagName = Struct's (DLLStructCreate)
Das hab ich irgendwann mal aus nem Post von
XenobiologistGTASpider rauskopiert
Für Arrays gilt eigentlich, dass man zb für einen StringArray $asName, oder für einen Array voller Integers $aiName schreiben sollte. das find ich aber irgendwie schwachsinnig und überzogen. -
Und ich verwette 5 € drauf, dass er nicht lesbar ist (habe ihn selber decompiled)
Ja dann schick mir mal die .exe, und ich schick dir dann im Anschluss meine Kontodaten
-
Schonmal das hier ausprobiert? (Vllt liegts an dem XPath-Bug. FFClick beruht ja auch auf XPath)
https://autoit.de/index.php?page…6747#post146747 -
Nein, klappt leider nicht. Prozessorauslastung bei dauerhaften 50% und killen lässt sich das Script nur noch per Taskmanager.
Einfach weil ich es mir beweisen muss:
[autoit]Local $aQuell = StringRegExp(FileRead(@ScriptDir & "\Quell.txt"), "\A(?>.+\n\r?){100}", 3), $1 = FileDelete(@ScriptDir & "\Ziel_neu.txt"), $2 = FileWrite(@ScriptDir & "\Ziel_neu.txt", StringRegExpReplace(FileRead(@ScriptDir & "\Ziel.txt"), "((?>.+\n\r?){300})((?>.+\n\r?){100})", "\1" & $aQuell[0]))
[/autoit]Das Script ist sogar getestet und funktioniert ( Nein, das ist nicht kaputt - das ist eine Zeile ^^)
-
Hallo,
Erstmal das berichtige von skorpi
Spoiler anzeigen
[autoit]#include <Array.au3>
[/autoit]
#include <File.au3>
Global $aQuellTxT, $aZielTxT, $aErgTxt, $iI = 0
If _FileReadToArray(@ScriptDir & "\quell.txt", $aQuellTxT) Then ; Wenn Ergebnis True, dann...
If _FileReadToArray(@ScriptDir & "\ziel.txt", $aZielTxT) Then
For $i = 301 To 400
$iI += 1
$aZielTxt[$i] = $aQuellTxT[$iI]
Next
EndIf
EndIf
_ArrayDisplay($aZielTxt, "Das Ergebnis:")
_FileWriteFromArray(@ScriptDir & "\ziel_neu.txt",$aZielTxt,1)Also im Grunde verwenden ich und black_skorpi das selbe Script. Es sind nur kleine Unterschiede.
[autoit]
Zum Beispiel schreibt er_FileReadToArray(@ScriptDir & "\quell.txt", $aQuellTxT)
[/autoit]
[autoit]
Ich dagegen würde schreiben$aQuellTxt = StringSplit(FileRead(@ScriptDir & "\quell.txt"),@CRLF,3))
[/autoit]_FileReadToArray macht nämlich nichts anderes, als eine Datei komplett einzulesen (FileRead) und an den Zeilenumbrüchen zu teilen (StringSplit).
Ich hab mir deswegen angewöhnt bei vielen Sachen auf UDF's zu verzichten, wenn man das ganze auch ohne Include in 1 Zeile verpacken kann.Kurz noch vorweg:
Die For-Next Schleife sorgt dafür etwas beliebig oft zu wiederholen. Die Variable (i.d.R. $i) ist die sog. Laufvariable und enthält immer den aktuellen "Zähler" der Schleife.Die erste Schleife zählt von 301 bis 400, was den Zeilen in der Ziel.txt entspricht, die ersetzt werden sollen.
Black Scorpi hat die Selbe schleife wie ich. Ausnahme: Ich rechne einfach $i-300 um die richtige Zeile in der Quell.txt zu erreichen.
In dem Script von Scorpi wird eine extra Zählervariable $iI verwendet.Die zweite Schleife, schreibt den Array wieder in einen String. Das ist eigentlich nichts anderes als
[autoit]_ArrayToString($aDest,@CRLF,1)
[/autoit]Ganz am Ende wird eine evtl. vorhandene "Ziel_ersetzt.txt" gelöscht, und dann per FileWrite() in die Datei geschrieben.
[autoit]
Das StringTrimRight sorgt dafür, dass der letzte Zeilenumbruch aus der For-Next Schleife wieder entfernt wird (sonst gibts ne leerzeile).
Warum überhaupt die Datei löschen? So erspare ich mir eine weitere Zeile, als wenn ich mit FileOpen arbeiten würde. Sonst bräuchte man$hFile = FileOpen(@ScriptDir & "\Ziel_Neu.txt",2) ; Schreibmodus öffnen. Vorherigen Inhalt löschen
[/autoit]
FileWrite($hFile,$sRet) ; Neuen Text schreiben
FileClose($hFile) ; schließen
[autoit]
Mit FileDelete braucht man nurFileDelete(@ScriptDir & "\Ziel_Neu.txt")
[/autoit]
FileWrite(@ScriptDir & "\Ziel_Neu.txt,$sRet)Und zuguterletzt:
So würde mein Script in UDF Form aussehenSpoiler anzeigen
[autoit]#include <File.au3>
[/autoit]
Global $aSource, $aDest
If Not _FileReadToArray(@ScriptDir & "\Quell.txt", $aSource) Then Exit MsgBox(16, "Fehler", "Fehler beim einlesen der Dateien")
If Not _FileReadToArray(@ScriptDir & "\Ziel.txt", $aDest) Then Exit MsgBox(16, "Fehler", "Fehler beim einlesen der Dateien")
For $i = 301 To 400
$aDest[$i] = $aSource[$i - 300]
Next
_FileWriteFromArray(@ScriptDir & "\Ziel_Neu.txt", $aDest, 1)PS: Rein interessehalber: Klappt das hier?
[autoit]FileDelete(@ScriptDir & "\Ziel_neu.txt")
[/autoit]
FileWrite(@ScriptDir & "\Ziel_neu.txt", StringRegExpReplace(FileRead(@ScriptDir & "\Ziel.txt"), "(?>.+\n\r?){300}((?>.+\n\r?){100})", StringRegExpReplace(FileRead(@ScriptDir & "\Quell.txt"), "(?>.+\n\r?){100}([\w\W]+)", ""))) -
Ich hab doch in Post 11 eine Funktion _GUICtrlListBox_LoadFromIni gepostet. Damit sollte es doch klappen?!
-
So? (Beispielscript - hatte angefangen bevor du dein gepostet hast)
Spoiler anzeigen
[autoit]#include <GuiListBox.au3>
[/autoit] [autoit][/autoit] [autoit]
$hGUI = GUICreate("")
$cListBox = GUICtrlCreateList("", 20, 20, 360, 360)
GUICtrlSetData(-1, "Acias|Exech|Hurrowflavoins|Tatings|Sulters|Solustaff|Wellentaky|Sch|Mcnagoododucke|Mons|Nomy|Dems|Snes|Harailizzing|Shuffs|Fling|Dams|Sensomize|Perp|Aportivexioust")
GUISetState()MsgBox(0,"","Will save data now")
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListBox_SaveToIni($cListBox, @ScriptDir & "\Test.ini", "Testsection")
MsgBox(0,"","Save Done.")For $i = 0 To 5
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListBox_DeleteString($cListBox,Random(0,_GUICtrlListBox_GetCount($cListBox)-1,1))
NextMsgBox(0,"","Will load data now")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_GUICtrlListBox_LoadFromIni($cListBox,@ScriptDir & "\Test.ini", "Testsection")
MsgBox(0,"","Load Done.")While 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
EndSwitch
WEndFunc _GUICtrlListBox_SaveToIni($hListBox, $sFilePath, $sSection)
[/autoit] [autoit][/autoit] [autoit]
If Not IsHWnd($hListBox) Then $hListBox = GUICtrlGetHandle($hListBox)
Local $iCnt = _GUICtrlListBox_GetCount($hListBox), $aList[$iCnt][2]
For $i = 0 To $iCnt - 1
$aList[$i][0] = $i
$aList[$i][1] = _GUICtrlListBox_GetText($hListBox, $i)
Next
IniDelete($sFilePath, $sSection)
IniWriteSection($sFilePath, $sSection, $aList)
EndFunc ;==>_GUICtrlListBox_SaveToIniFunc _GUICtrlListBox_LoadFromIni($hListBox, $sFilePath, $sSection, $fReset = True)
[/autoit] [autoit][/autoit] [autoit]
If Not IsHWnd($hListBox) Then $hListBox = GUICtrlGetHandle($hListBox)
If Not FileExists($sFilePath) Then Return SetError(1, 0, "")
Local $aList = IniReadSection($sFilePath, $sSection)
If $fReset Then _GUICtrlListBox_ResetContent($hListBox)For $i = 1 To $aList[0][0]
[/autoit]
_GUICtrlListBox_AddString($hListBox, $aList[$i][1])
Next
EndFunc ;==>_GUICtrlListBox_LoadFromIni -
Hier ein Tip: Lerne, vernünftig zu erklären. was du haben willst.
Und jetzt kommt das was du haben wolltest:
Hier die FTP Befehle:Spoiler anzeigen
Code
Alles anzeigen;_FTP_Close ;_FTP_Command ;_FTP_Connect ;_FTP_DecodeInternetStatus ;_FTP_DirCreate ;_FTP_DirDelete ;_FTP_DirGetCurrent ;_FTP_DirPutContents ;_Ftp_DirSetCurrent ;_FTP_FileClose ;_FTP_FileDelete ;_FTP_FileGet ;_FTP_FileGetSize ;_FTP_FileOpen ;_FTP_FilePut ;_FTP_FileRead ;_FTP_FileRename ;_FTP_FileTimeLoHiToStr ;_FTP_FindFileClose ;_FTP_FindFileFirst ;_FTP_FindFileNext ;_FTP_GetLastResponseInfo ;_FTP_ListToArray ;_FTP_ListToArray2D ;_FTP_ListToArrayEx ;_FTP_Open ;_FTP_ProgressDownload ;_FTP_ProgressUpload ;_FTP_SetStatusCallback
und hier ein Beispielscript:
Spoiler anzeigen
[autoit]#include <FTPEx.au3>
[/autoit] [autoit][/autoit] [autoit]$server = 'ftp.csx.cam.ac.uk'
[/autoit] [autoit][/autoit] [autoit]
$username = ''
$pass = ''$Open = _FTP_Open('MyFTP Control')
[/autoit]
$Conn = _FTP_Connect($Open, $server, $username, $pass)
; ...
$Ftpc = _FTP_Close($Open)
Ich hoffe, man versteht was ich sagen will - Lieber 2 Minuten mehr in den Post investieren. -
Sowas in der Art ?
(Achtung! Ungetestet!)Spoiler anzeigen
[autoit]Global $sDelim = @CRLF, $sRet, $aSource = StringSplit(FileRead("Quell.txt"),$sDelim,1), $aDest = StringSplit(FileRead("Ziel.txt"),$sDelim,1)
[/autoit]
If UBound($aDest) < 401 Or UBound($aSource) < 101 Then Exit MsgBox(16,"Fehler","Fehler beim einlesen der Dateien")
For $i = 301 To 400
$aDest[$i] = $aSource[$i-300]
Next
For $i = 1 To $aDest[0]
$sRet &= $aDest[$i] & $sDelim
Next
FileDelete(@ScriptDir & "\Ziel_Neu.txt")
FileWrite(@ScriptDir & "\Ziel_Neu.txt",StringTrimRight($sRet,StringLen($sDelim)))//EDIT: Syntaxfehler korrigiert
-
Entweder so: (mit Case $cInput in der GUIGetMsg()-Schleife)
Spoiler anzeigen
[autoit]$hGUI = GUICreate("",240,60)
[/autoit] [autoit][/autoit] [autoit]
$cInput = GUICtrlCreateInput("",20,20,200,20)
GUISetState()While 1
[/autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $cInput
MsgBox(0,"",GUICtrlRead($cInput))
EndSwitch
WEndoder so: (Achte auf den Button Style)
Spoiler anzeigen
[autoit]#include <ButtonConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
$hGUI = GUICreate("", 240, 60)
$cInput = GUICtrlCreateInput("", 20, 10, 200, 20)
$cButton = GUICtrlCreateButton("Ok", 20, 35, 200, 20, $BS_DEFPUSHBUTTON) ; Man beachte den Button Style $BS_DEFPUSHBUTTON (0x0001)
GUISetState()While 1
[/autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $cButton
MsgBox(0, "", GUICtrlRead($cInput))
EndSwitch
WEnd