Poste mal den Abschnitt des Quellcodes hier.
Beiträge von alpines
-
-
Mein Vorredner hat recht, eine richtige Abfrage wäre
[autoit]$iPID = ProcessExists(...)
[/autoit][autoit][/autoit][autoit]If $iPID Then
[/autoit]
MsgBox(64, "", "Prozess ist gestartet.")
EndIfoder
[autoit]$iPID = ProcessExists(...)
[/autoit][autoit][/autoit][autoit]If $iPID > 0 Then
[/autoit]
MsgBox(64, "", "Prozess ist gestartet.")
EndIf
[autoit]
Man braucht, wenn man mit der PID nicht weiter arbeiten will sie nicht in eine Variable zu schreiben.If ProcessExists(...) Then ;...
[/autoit] -
Das liegt an den Schleifen die in der UDF beendet werden, das kann zu Komplikationen mit der UDF führen, deshalb immer die #includes ganz oben schreiben.
-
Wenn man schon Datenbanken auf Servern auslagert dann wird man das sicherlich auch mit den Daten tun können.
-
Dein Code muss einfach optimiert werden:
[autoit]if $oInput.type = "text" And $oInput.name = "username" Then $oUser = $oInput
[/autoit]
Wieso überprüfst du am Ende ob das ein Objekt ist? Wenn es keins ist, stürzt das Script ohne Errorhandling sowieso ab, weil du versuchst .type auf $oInput anzuwenden.
Außerdem brauchst du kein _IELoadWait($oIE), weil _IENavigate() das automatisch macht solange du es nicht ausschaltest, genauso wie bei _IECreate.
Du brauchst das _IELoadWait($oIE) hinter dem _IEAction.Ein vernünftiger Code würde so aussehen
[autoit]#include <IE.au3>
[/autoit][autoit][/autoit][autoit]$oIE = _IECreate("URI")
[/autoit][autoit][/autoit][autoit]
$oEvent = ObjEvent("AutoIt.Error", "_MyErrFunc")Local $sUsername, $sPassword
[/autoit][autoit][/autoit][autoit]$oUserName = _IEGetObjById($oIE, "id_im_sourcecode_vom_username")
[/autoit][autoit][/autoit][autoit]
$oPassword = _IEGetObjById($oIE, "id_im_sourcecode_vom_passwort")
$oSubmit = _IEGetObjById($oIE, "id_im_sourcecode_vom_loginbutton")If Not IsObj($oUserName) or Not IsObj($oPassword) or Not IsObj($oSubmit) Then
[/autoit][autoit][/autoit][autoit]
_IEQuit($oIE)
Exit
EndIf_IEFormElementSetValue($oUserName, $sUsername)
[/autoit][autoit][/autoit][autoit]
_IEFormElementSetValue($oPassword, $sPassword)
_IEAction($oSubmit, "click")
_IELoadWait($oIE)Func _MyErrFunc()
[/autoit]
MsgBox(64, "Oops", "Something went wrong!")
EndFunc -
Bitte anständig formatieren, das sieht immer noch grauhenhaft aus.
Ich würde es genau so angehen wie du wenn ich einen Bot für "mein" Forum machen möchte. -
Wenn ich mich nicht irre wird das sowieso ein Bot aber was solls.
Formatier das Script besser, man sieht nichts. -
Wenn das nicht gehen sollte, dann mach dir doch ein eigenes Updown mit 2 Buttons und einem Edit / Label.
-
Code bitte anständig formatieren.
-
Das ist jetzt eine Sache der Anordnung der Parameter, man kann den Titel hinschreiben oder deine Variante benutzen.
Wenn man bsp.-weise den hinteren Parameter nutzen möchte muss man - in meinem Fall - den Titel davor eingeben, aber das sieht man ja im Calltip oder nicht?
Aber da der 2. Flag schon automatisch "" bzw. Default ist braucht man den nicht dahin zu schreiben, also ist dein Beispiel glaube ich falsch.Eigentlich ist das Geschmackssache, also lass uns lieber nicht drum streiten
-
Du könntest doch, statt abzuprüfen ob es "" oder Default ist einfach als Standardparameter die setzen, das spart ein paar Zeilen.
Die Parameter so nochmal zu überprüfen ist eigentlich nur eine vergeudete Anzahl an Zeilen. -
www.***.com/forum/autoit/1868201-tratsch-rund-um-autoit-autoit-talk-kleinere-fragen-172.html#post25748113
Hab die Links entfernt wegen den Forenregeln.Du könntest versuchen mit ControlSend die VolumeAnzeige unten anzusprechen oder NirCMD benutzen.
-
Deshalb wäre es vorteilhafter InetGet zu verwenden.
Man kann die Infos der Datei auch dann abgreifen wenn die Datei noch geladen wird aber trotzdem läuft das Script weiter. -
Schaut gut aus
[autoit]
Du brauchst übrigens beiGUISetState(@SW_SHOW, $hGui)
[/autoit]
[autoit]
das $hGUI nicht,
deshalb kannst du es auch so verwenden wenn du Platz sparen willst.GUISetState(@SW_SHOW)
[/autoit] -
Der Fehler tritt häufiger auf, meistens wegen falscher Benutzung.
Poste einfach mal dein Script. -
Wenn sie unterschiedliche Ids haben dann kann man auch einfach _IEGetObjById nehmen und kann die Form komplett weglassen.
-
Dankeschön
Endlich kann ich mich mal richtig mit Assembler befassen.
Hoffentlich wirst du das oft genug aktualisieren um das Thema noch ein bisschen auszuweiten damit es auch an gar nichts fehlt.
Auch wenn diese bitte gewagt ist, hoffe ich das du sie erfüllen kannst.So, erstmal schön einlesen
-
[autoit]
_IEAttach
[/autoit]lautet das Stichwort.
-
[autoit]
MouseClick("left", $x, $y, $clicks)
[/autoit]Du hast die Angabe der Taste vergessen!
-
[autoit]
Run ( "program" [, "workingdir" [, show_flag [, opt_flag]]] )
[/autoit]
show_flag auf @SW_HIDE setzen.StdOutReaden (im Browser getippt, nicht ausprobiert)
[autoit]Local $sOut, $hProgram = Run(...)
[/autoit][autoit][/autoit][autoit]Do
[/autoit][autoit][/autoit][autoit]
$sOut &= StdOutRead($hProgram)
Until Not ProcessExists($hProgram)FileWrite(".\\Debug.txt", $sOut)
[/autoit]Vergiss aber nicht $sOut immer auf "" nach einem Durchlauf zu setzen.
Außerdem immer die Datei wechseln.Wurde im Browser getippt, garantiere also keine Funktionalität!