Dafür kannst du IsObj($oObject) verwenden. Das gibt dir ein true zurück wenn es sich um ein Objekt handelt (_IEFormGetObjById z.B.) und false wenn nicht.
Beiträge von alpines
-
-
Ganz einfach mit _WinAPI_GetClassName.
-
Ich habs nochmal ein bisschen verändert weil WinHttp das ganze doch nicht selbstständig kodiert.
Kannst dir ja mal meine Encode-Funktion anschauen, die nutzt den Trick mit einer For-Loop und der Ascii-Tabelle aus statt alle Zeichen per Hand einzutippen.Der Code hier unten funktioniert, die HTML Datei die mir ausgespuckt wird sagt das der User Login nicht existiert (steht auch im Source). Ich denke mal wenn du deine Daten eintippst wird das schon funktionieren.
AutoIt
Alles anzeigen#include <WinHttp.au3> #include <String.au3> Global Const $S_USERNAME = "test", $S_PASSWORD = "1234" $hSession = _WinHttpOpen() $hConnect = _WinHttpConnect($hSession, "www.gtlpins.com") $sHTML = _WinHttpSimpleRequest($hConnect, "GET", "Aroma/Login.aspx") $aEventTarget = StringRegExp($sHTML, "<input type=""hidden"" name=""__EVENTTARGET"" id=""__EVENTTARGET"" value=""(.*?)"" \/>", 3) $aEventArgument = StringRegExp($sHTML, "<input type=""hidden"" name=""__EVENTARGUMENT"" id=""__EVENTARGUMENT"" value=""(.*?)"" \/>", 3) $aViewState = StringRegExp($sHTML, "<input type=""hidden"" name=""__VIEWSTATE"" id=""__VIEWSTATE"" value=""(.*?)"" \/>", 3) $aEventValidation = StringRegExp($sHTML, "<input type=""hidden"" name=""__EVENTVALIDATION"" id=""__EVENTVALIDATION"" value=""(.*?)"" \/>", 3) If Not UBound($aEventTarget) or Not UBound($aEventArgument) or Not UBound($aViewState) or Not UBound($aEventValidation) Then MsgBox(16, "Fehler", "Parameter für Post konnten nicht geparst werden!") Exit EndIf $sPostData = "__EVENTTARGET=" & _Http_StringToHex($aEventTarget[0]) & _ "&__EVENTARGUMENT=" & _Http_StringToHex($aEventArgument[0]) & _ "&__VIEWSTATE=" & _Http_StringToHex($aViewState[0]) & _ "&__EVENTVALIDATION=" & _Http_StringToHex($aEventValidation[0]) & _ "&txtUserName=" & _Http_StringToHex($S_USERNAME) & _ "&txtPassword=" & _Http_StringToHex($S_PASSWORD) & _ "&loginbtnlogin=Anmelden" $sHTML = _WinHttpSimpleRequest($hConnect, "POST", "Aroma/Login.aspx", Default, $sPostData) FileDelete("debug.html") FileWrite("debug.html", $sHTML) _WinHttpCloseHandle($hConnect) _WinHttpCloseHandle($hSession) Func _Http_StringToHex($sString, $iMode = 0) $sString = StringReplace($sString, "%", "%25") For $iChar = 32 To 126 If $iChar = 37 Then ContinueLoop If $iChar = 48 Then $iChar = 58 If $iChar = 65 Then $iChar = 91 If $iChar = 97 Then $iChar = 123 $sString = StringReplace($sString, Chr($iChar), "%" & _StringToHex(Chr($iChar))) Next Return $sString EndFunc -
Probiers mal hiermit, wenns nicht klappt kannst du mir gerne die Userdaten per PN zuschicken und ich bastel dir da einen Login dazu.
Eventuell musst du noch deinen URL-Formatierer hinzufügen aber ich glaube das WinHttp das automatisch encodet. -
Ich kenne deine Lage, wenn ich in alten Code von mir blicke (>1-2 Jahre) dann kommts mir auch hoch.
Wenn du das Script in der Zukunft weiter nutzen willst, solltest du es neuschreiben damit du es in Zukunft auch besser warten kannst.Außerdem hilft das einem immer, weil man sehen kann was man damals anders gemacht hat und sich verbessern kann. Einige Lacher oder peinliche Momente sind sicherlich auch dabei

-
Wenns klappt dann setz doch bitte den Präfix des Threads auf [gelöst] (1. Beitrag bearbeiten)
-
Schau mal ob die Id die du klicken willst in einem <iframe> liegt. Wenn das der Fall ist kannst du nicht vom main Document drauf klicken sondern musst im Frame sein.
-
Du benutzt eine GUI mit Controls als Textaustausch. Es gibt schon einige UDFs wie man zwischen mehreren Instanzen an Programmen Variablen übergibt und eine Variante davon basiert auf GUIs.
Es wird ein neues Fenster mit einem bestimmten Titel erstellt (hidden, Titel ist beiden bekannt) und dort wird einfach ein Label oder Input erstellt was den Inhalt der Variable trägt.
Jetzt kann das 2. Script das Label auslesen (ControlGetText) und sogar manipulieren (ControlSetText). -
Du kannst nicht einfach auf die Variable des Hauptprogrammes so einfach zugreifen, so läuft das nicht.
Es gibt mehrere Möglichkeiten wie du die Werte übergeben kannst, das einfachste wäre es als Konsolenparameter einfach hinterherzuschmeißen und sie dann im Programm auszuwerten,
allerdings ist es dann nur eine Kopie und du hast praktisch keinen direkten Variablenzugriff auf die Variable im Hauptprogramm.Eine andere Möglichkeit wäre es die Variable für beide Programme verfügbar zu machen, entweder über TCP-Pakete, einer verstecken GUI, oder einer UDF die genau so etwas anbietet.
Solltest du nur vorhaben einmal den Inhalt überzugeben und ihn für das Hauptprogramm nicht zu modifizieren, dann gib ihn als Konsolenparameter über, das ist der einfachste Weg.
-
Es gibt sogenannte Obfuscator die dein Scriptcode in Wirrwarr konvertieren der für das menschliche Auge unlesbar ist - dennoch bleibt die Funktionalität erhalten.
Allerdings gibt es seit der 3.3.10.2 (nach meinem Wissensstand) keinen Decompiler für die aktuellen Versionen der funktioniert und der offizielle Obfuscator wurde vor langer Zeit schon eingestellt.Zwar gibt es noch von der Community gemachte Obfuscator aber da gibt es auch schon einige Deobfuscator dazu.
Solltest du wirklich Angst um deine Zugangsdaten für deine Datenbank haben (ich gehe jetzt von einer Online-Datenbank aus), schreib ein PHP-Backend was über WebRequests deine Befehle annimmt und auf der Datenbank ausführt. Wenn es nur offline ist dann lass die Daten einfach drinne, denn es ist ja eine offline DB, kannst es im Source ja verschlüsseln so das der String nicht extrahierbar ist.
Um das ganze aber nochmal abzuschließen: Wenn jemand gewillt ist deinen Code zu kriegen, dann wird er das auch schaffen. Nichts ist sicher. Aber ich bezweifle sehr stark das du Software entwickelst die Leute knacken wollen also solltest du dir um die Sachen keine allzugroßen Gedanken machen.
-
Gibts von der Amazon Serie kein Tablet zu dem Preis?
-
Also das ist ganz schön von oben herab. Ich denke man schafft es durchaus, wenn man sich hier und da beliest, irgendwen fragt, usw. aber das ist definitiv nicht Sinn der Sache, eher verfehlt.
Wieso von oben herab? Letzendlich ist es doch die Motivation die man dafür braucht um das zu lernen.
Du musst es ja nicht nur bei Schulbüchern belassen, mit anderen Lektüren kriegst du sicherlich eine gute Kombination aus Lernen und Aufgaben zusammen. -
Sicher, da hat man aber auch einen Lehrer... das wird glaube ich ein wenig unterschätzt...
Wer genug Motivation mitbringt schafft das schon, ich hatte in der Schule keine Lust drauf trotz Lehrer und spreche wunderbar Englisch.
Dein Freund wird das sicherlich schaffen wenn er die Sprache wirklich lernen möchte. -
Gute Frage, vielleicht die Abneigung aus eigener Erfahrung :D? Unsere Lehrer schimpften oft drauf
Dennoch siehst du was daraus geworden ist. Mit Schulbüchern und Serien/Spiele auf Englisch kann man sich sehr gute Englischkenntnisse aneignen.
-
Wenn dein Problem gelöst ist änder doch bitte den Präfix des Threads auf [gelöst] (1. Beitrag bearbeiten.)
-
Mag vielleicht banal klingen aber warum keine Schulbücher? Die haben teilweise mehrere Audio-CDs und sogar Lernsoftware drauf.
Gibt sicherlich welche die ohne Begleitperson (Lehrer) auskommen. -
Es schadet (meistens) nie zu updaten also immer nur her damit! Wäre bereit auch ein wenig in die Kaffeekasse dafür einzuzahlen.
Und wenn es nicht zu viel verlangt ist würde ich gerne wollen das wir das ganze wie bei WBB3 wieder customizen mit einer eigenen ShoutBox und etc.
Das Forum hat ein wenig von seinem Charme von WBB3 auf 4 meiner Meinung nach eingebüßt. -
(?s)(?i)<td class="station first">\R(.+?)(?:\s+)?\R<\/td>\R<td class="time">\R(\d+\:\d+)(?: <span class="(?:ontime|delay)">(.+?)<\/span><\/td>|).+?<td class="Station stationDest">\R(.+?)(?:\s+)?\R<\/td>\R<td class="time">\R(\d+\:\d+) <span class="(?:ontime|delay)">(.+?)<\/span><\/td>
Sieht zwar etwas schäbig aus aber tut seinen Job. -
@Alina @gmmg
Beim Internet Explorer wird das HTML-Dokument als Windows.document bezeichnet, dort drin sind die Controls enthalten.Was emeuv versuchen möchte ist die HTML der Seite auszulesen um den aktuellen Kurs zu ermitteln.
@emeuv
Für Edge gibt es noch keine UDF (aber eine Schnittstelle an die du dich ransetzen kannst) also probiers mal mit WinHttp oder IE.au3 -
Hier mal die Resultate von Andys Post auf meinem Intel Core i7-4790. Schon krass wie sehr der Faktor abnimmt wenn man über 3 Threads hinaus geht.
Code
Alles anzeigenThreads: 1 Time: 19.1ms PI: 3.141592553586 Threads: 2 Time: 10.0ms PI: 3.141592553591 Threads: 3 Time: 7.2ms PI: 3.141592553590 Threads: 4 Time: 7.4ms PI: 3.141592553589 Threads: 5 Time: 7.7ms PI: 3.141592553590 Threads: 6 Time: 6.6ms PI: 3.141592553590 Threads: 7 Time: 8.6ms PI: 3.141592553589 Threads: 8 Time: 7.5ms PI: 3.141592553590 Threads: 9 Time: 7.9ms PI: 3.141592553589 Threads: 10 Time: 7.0ms PI: 3.141592553590 Threads: 11 Time: 6.8ms PI: 3.141592553589 Threads: 12 Time: 5.7ms PI: 3.141592553589 Threads: 13 Time: 6.3ms PI: 3.141592553589 Threads: 14 Time: 5.7ms PI: 3.141592553590 Threads: 15 Time: 5.7ms PI: 3.141592553589 Threads: 16 Time: 5.5ms PI: 3.141592553590 Threads: 17 Time: 6.0ms PI: 3.141592553589 Threads: 18 Time: 5.8ms PI: 3.141592553589 Threads: 19 Time: 5.7ms PI: 3.141592553589 Threads: 20 Time: 6.1ms PI: 3.141592553590 Threads: 21 Time: 5.8ms PI: 3.141592553589 Threads: 22 Time: 6.2ms PI: 3.141592553589 Threads: 23 Time: 5.9ms PI: 3.141592553589 Threads: 24 Time: 5.7ms PI: 3.141592553589