1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Busti

Beiträge von Busti

  • AutoIt-Object -- wie könnte AutoIt in OOP-Syntax aussehen

    • Busti
    • 22. Februar 2017 um 04:08

    Also 1.


    Absolut Krass.


    mehr brauch ich wohl nicht sagen.

    Aber witzig, schau was ich von gestern auf heute geschrieben habe, hahaha

    C
    ;=============] [Includes] [>>]
    #include-once
    #include <String.au3>
    #include <Array.au3>
    #include "AutoItObject.au3"
    ;=============] [Includes] [End] [<<]
    ;=============] [Variable-Declaration], [Object-Initialization] [>>]
    Global $mStrings, $mStrings_Class, $new_class_name='nParser_Convert_oParser' ;
    _AutoItObject_Startup() ;
    If @error Then Exit ; exit on error
    ;=============] [Variables-declared], [Object-Initialized] <<
    ;=============] [Creating-Object] [>>]
    $mStrings         = magic_strings_object()
    $mStrings_Class = magic_strings_class($new_class_name)
    ;=============] [Created] [<<]
    
    
    
    
    
    
    With $mStrings
    
    
    
    
        ;$sPattern = '(\$[_\w]+)(?:\s*=[^,])?'        ; OHNE ZUWEISUNGEN
        $sPattern = '(\$[_\w]+)(?:\s*=([^,]+))?'     ; MIT ZUWEISUNGEN
        $aResult = StringRegExp($sLine, $sPattern, 3)
        For $i = 0 To UBound($aResult) -1
            ConsoleWrite($aResult[$i] & @CRLF)
        Next
    
    
    
    
    
    
    
    
        #cs
            (\$[_\w]+)(?:\s*=([^,]+))?
        #ce
    EndWith
    
    
    
    
    ;=============] [Object-Definition] [>>]
    Func magic_strings_object()
        Global $magic_string_obj_intern = _AutoitObject_Create(); create obj
        With $magic_string_obj_intern
            _AutoitObject_AddProperty    ($magic_string_obj_intern,"COMPLETE_FILE_READ",        $ELSCOPE_PUBLIC,'')
            _AutoitObject_AddProperty    ($magic_string_obj_intern,"FILE_READ_TO_ARRAY",        $ELSCOPE_PUBLIC,'')
            _AutoitObject_AddProperty    ($magic_string_obj_intern,"NEXT_STRING",            $ELSCOPE_PUBLIC,'')
            _AutoitObject_AddProperty    ($magic_string_obj_intern,"TMP_STR_ONE",            $ELSCOPE_PUBLIC,'')
    
    
    
    
            _AutoItObject_AddMethod        ($magic_string_obj_intern,"not_compare",    "__magic_string_compare_not")
            _AutoItObject_AddMethod        ($magic_string_obj_intern,"compare",        "__magic_string_compare")
        Endwith
    
    
    
    
        Return $magic_string_obj_intern
    EndFunc;======][Object-Definition-End] [<<]
    Func magic_strings_class($new_class_name='nParser_Convert_oParser');class-name
        Local $class_intern = _AutoItObject_Class() ;create_class
        Local $magic_intern = magic_strings_class_constants()
        With $class_intern
            .AddProperty                ("NEW_CLASSNAME",        $ELSCOPE_READONLY,    $new_class_name)
            .AddProperty                ("CONVERT_FILE",        $ELSCOPE_PUBLIC,    $magic_intern.CONVERT_FILE_PATH.CONVERT_FILE_NAME)
    
    
    
    
            .AddProperty                ("LAST_SAVE",            $ELSCOPE_PUBLIC,    '')
            .AddProperty                ("SAVE",                $ELSCOPE_PUBLIC,    '')
            .AddProperty                ("TRASH",                $ELSCOPE_PUBLIC,    '')
    
    
    
    
            .AddProperty                ("TMP_STRING",            $ELSCOPE_PUBLIC,    '')
            .AddProperty                ("CUR_STRING",            $ELSCOPE_PUBLIC,    '')
    
    
    
    
    
    
            .AddProperty                ("CUR_FUNC_STR",        $ELSCOPE_PUBLIC,    '')
            .AddProperty                ("CUR_METHOD_STR",        $ELSCOPE_PUBLIC,    '')
            .AddProperty                ("CUR_VAR_STR",            $ELSCOPE_PUBLIC,    '')
    
    
    
    
    
    
            .AddMethod                    ('add',                   '__class_magic_add_string')
            .AddMethod                    ('del',                   '__class_magic_del_string')
            .AddMethod                    ('show',                   '__class_magic_show_string')
            .AddMethod                    ('move',                '__class_magic_move_string')
            .AddMethod                    ('','')
        Endwith
        Return $class_intern.Object
    Endfunc;======][Class-Definition-End] [<<]
    Func magic_strings_class_database()
        Dim $OBJ_METHOD_FUNC,$OBJ_METHOD,$OBJ_METHOD_PROP,$CLASS_PROPERTYS
        Local $class_intern = _AutoItObject_Class() ;create_class
        With $class_intern
            .AddProperty                ("OBJ_METHOD_ARRAY",    $ELSCOPE_PUBLIC,    $OBJ_METHOD_FUNC)
            .AddProperty                ("OBJ_MET_FUNC_ARRAY",    $ELSCOPE_PUBLIC,    $OBJ_METHOD)
            .AddProperty                ("OBJ_PROPERTY_ARRAY",    $ELSCOPE_PUBLIC,    $OBJ_METHOD_PROP)
            .AddProperty                ("CLASS_PROP_ARRAY",    $ELSCOPE_PUBLIC,    $CLASS_PROPERTYS)
            .AddProperty                ("OBJ_METHOD_STR",        $ELSCOPE_PUBLIC,    "")
            .AddProperty                ("OBJ_MET_FUNC_STR",    $ELSCOPE_PUBLIC,    "")
            .AddProperty                ("OBJ_PROPERTY_STR",    $ELSCOPE_PUBLIC,    "")
            .AddProperty                ("CLASS_PROP_STR",        $ELSCOPE_PUBLIC,    "")
            .AddProperty                ("OBJ_METHOD_CNT",        $ELSCOPE_PUBLIC,    0)
            .AddProperty                ("OBJ_MET_FUNC_CNT",    $ELSCOPE_PUBLIC,    0)
            .AddProperty                ("OBJ_PROPERTY_CNT",    $ELSCOPE_PUBLIC,    0)
            .AddProperty                ("CLASS_PROP_CNT",        $ELSCOPE_PUBLIC,    0)
    
    
    
    
            .AddProperty                ("WORKING_STRING",        $ELSCOPE_PUBLIC,    "")
            .AddMethod                    ('add_method_str',            '__set_obj_method_str')
            .AddMethod                    ('add_met_func_str',        '__set_obj_met_func_str')
            .AddMethod                    ('add_property_str',        '__set_obj_property_str')
            .AddMethod                    ('add_class_property_str',    '__set_class_prop_str')
        Endwith
        Return $class_intern.Object
    Endfunc
    Func __set_obj_method_str($oSelf)
        With $oSelf
            .OBJ_METHOD_STR = .WORKING_STRING
            .OBJ_METHOD_CNT += 1
            Dim $tmp[.OBJ_METHOD_CNT]     = .OBJ_METHOD_ARRAY
            $tmp[.OBJ_METHOD_CNT-1]        = .OBJ_METHOD_STR
            .OBJ_METHOD_ARRAY            = .OBJ_METHOD_ARRAY
            dbg(.OBJ_METHOD_STR,1)
        Endwith
        Return $class_intern.Object
    Endfunc
    Func __set_obj_met_func_str($oSelf)
        With $oSelf
            .OBJ_MET_FUNC_STR = .WORKING_STRING
            .OBJ_MET_FUNC_CNT += 1
        Endwith
        Return $class_intern.Object
    Endfunc
    Func __set_obj_property_str($oSelf)
        With $oSelf
            .OBJ_PROPERTY_STR = .WORKING_STRING
            .OBJ_PROPERTY_CNT += 1
        Endwith
        Return $class_intern.Object
    Endfunc
    Func __set_class_prop_str($oSelf)
        With $oSelf
            .CLASS_PROP_STR    = .WORKING_STRING
            .CLASS_PROP_CNT += 1
        Endwith
        Return $class_intern.Object
    Endfunc
    
    
    
    
    Func magic_strings_class_constants()
        Local $class_intern = _AutoItObject_Class() ;create_class
        With $class_intern
            .AddProperty                ("TIDYPATH",            $ELSCOPE_READONLY,    'D:\Data\Programme\AutoIt3\SciTE\Tidy\Tidy.exe')
            .AddProperty                ("CONVERT_FILE_PATH",    $ELSCOPE_READONLY,    @ScriptDir&"\test\")
            .AddProperty                ("CONVERT_FILE_NAME",    $ELSCOPE_READONLY,    "selfconvert.au3")
            .AddProperty                ("CONVERT_FILE_PATHs",    $ELSCOPE_READONLY,    '%%CONVERT_FILE_PATH%%')
            .AddProperty                ("CONVERT_FILE_NAMEs",    $ELSCOPE_READONLY,    '%%NEW_CLASSNAME%%')
            .AddProperty                ("VERSION",                $ELSCOPE_READONLY,    'v0.85 pub.alpha')
            .AddProperty                ("VERSIONs",            $ELSCOPE_READONLY,    '%%VERSION%%')
            .AddProperty                ("DELIMs",                $ELSCOPE_READONLY,    '%%DELIM%%')
            .AddProperty                ("CRs",                    $ELSCOPE_READONLY,    '%%CR%%')
            .AddProperty                ("CRr",                    $ELSCOPE_READONLY,    @CR)
            .AddProperty                ("DELIMr",                $ELSCOPE_READONLY,    "")
            .AddProperty                ("HEADER_DELIM",        $ELSCOPE_PUBLIC,    ';================================================;')
            .AddProperty                ("HEADER_ONE",            $ELSCOPE_PUBLIC,    ';|      [A]uto[IT] - [Script]-to-[OOP-Converter]   |;')
            .AddProperty                ("HEADER_TWO",            $ELSCOPE_PUBLIC,    ';|        (c)2017 by busti_ownz@me.com             |;')
            .AddProperty                ("HEADER_THR",            $ELSCOPE_PUBLIC,    ';|  Converted with AutoIT "'&@AutoItVersion&'" and     |;')
            .AddProperty                ("HEADER_FOU",            $ELSCOPE_PUBLIC,    ';|  Class And Object Parser & Builder "%%VERSION%%"    |;')
            .AddProperty                ("HEADER_FIV",            $ELSCOPE_PUBLIC,    ';| '&StringTrimLeft('%%CONVERT_FILE_PATH%%',StringInStr('%%CONVERT_FILE_PATH%%',"\",1,-1)) & ' [>>] ' &'%%NEW_CLASSNAME%%%%CR%%%%CR%%')
            .AddProperty                ("HEADER_SIX",            $ELSCOPE_PUBLIC,    ';|  released on: ["autoit.de"/"codebot.de"]      |;')
            .AddProperty                ("HEADER_SEV",            $ELSCOPE_PUBLIC,    ';================================================;')
            .AddProperty                ("HEADER_STR",            $ELSCOPE_PUBLIC,    '')
            .AddProperty                ("INTERN_COUNT",        $ELSCOPE_PUBLIC,    0)
        Endwith
        Return $class_intern.Object
    Endfunc;======][Class-Definition-End] [<<]
    Func _dbg($msg,$i=1)
        Return ConsoleWrite('!'&$i&'    ]    ' & $msg & @CR)
    EndFunc
    
    
    
    
    Func __class_magic_move_string($oSelf,$take_from,$pos,$put_to)
        With $oSelf
    
    
    
    
        EndWith
    EndFunc
    Func __class_magic_show_string($oSelf,$tree=1,$count=1)
        With $oSelf
            Switch $tree
                Case 1
                    Return
                Case 2
                    Return
                Case 3
                    Return
            EndSwitch
            Return -1; wrong selection
        EndWith
    EndFunc
    Func __class_magic_del_last_string($oSelf,$index)
        With $oSelf
            .UNKOWN_STRING = $NewString
            Return ._class_move_string
        EndWith
    EndFunc
    Func __class_magic_add_string($oSelf,$NewString)
        With $oSelf
            .UNKOWN_STRING     = $NewString
            .CUR_STRING        = $NewString
            .count_increase
            Return .move
        EndWith
    EndFunc
    
    
    
    
    Func __magic_string_readfile($oSelf,$file)
        With $oSelf
            Return FileRead(FileOpen($file))
        EndWith
    EndFunc
    Func __magic_string_replace($oSelf,$string,$search,$rep='',$occ=0,$case=1)
        With $oSelf
            Return StringReplace($string,$search,$rep,$occ,$case)
        EndWith
    EndFunc
    Func __magic_string_regex($oSelf,$string,$ptn,$flag=3,$occ=1)
        With $oSelf
            Return StringRegExp($string,$ptn,$flag,$occ)
        EndWith
    EndFunc
    Func __magic_string_regexprep($oSelf,$string,$ptn,$rep,$count)
        With $oSelf
            Return StringRegExpReplace($string,$ptn,$rep,$count)
        EndWith
    EndFunc
    Func __magic_string_get($oSelf,$string,$count,$lor=0)
        With $oSelf
            If ($lor >= 0) Then Return StringLeft($string,$count)
            Return StringRight($string,$count)
        EndWith
    EndFunc
    Func __magic_string_trim($oSelf,$string,$count,$lor=0)
        With $oSelf
            If ($lor >= 0) Then;links
                Return StringTrimLeft($string,$count)
            ElseIf ($lor < 0) Then;rechts
                Return StringTrimRight($string,$count)
            EndIf
        EndWith
    EndFunc
    Func __magic_string_getlen($oSelf,$string)
        With $oSelf
            Return StringLen($string)
        EndWith
    EndFunc
    Func __magic_string_compare_part( $oSelf, $string, $string_two, $case=0 )
        With $oSelf
            Local $string_len = StringLen($string_two)
            If $mode >= 0 Then Return (StringCompare(StringLeft($string,$string_len),$string_two,$case)
            Return (StringCompare(StringRight($string,$string_len),$string_two,$case)
        EndWith
    EndFunc
    Func __magic_string_compare_part_not( $oSelf, $string, $string_two, $case=0 )
        With $oSelf
            Local $string_len = StringLen($string_two)
            If $mode >= 0 Then Return Not (StringCompare(StringLeft($string,$string_len),$string_two,$case)
            Return Not (StringCompare(StringRight($string,$string_len),$string_two,$case)
        EndWith
    EndFunc
    Func __magic_string_compare_not($oSelf, $string_one, $string_two)
        With $oSelf
            If $mode >= 0 Then Return Not (StringCompare($string_one,$string_two));left
            Return Not (StringCompare($string_one,$string_two))
        EndWith
    EndFunc
    Func __magic_string_compare($oSelf, $string_one, $string_two)
        With $oSelf
            If $mode >= 0 Then Return StringCompare($string_one,$string_two)
            Return StringCompare($string_one,$string_two)
        EndWith
    EndFunc
    Alles anzeigen
  • Autoit String nach C# übergeben [erledigt]

    • Busti
    • 22. Februar 2017 um 00:47
    Zitat von chesstiger

    @alpines
    Dazu brauchst du doch keine NomadMemory-UDF, oder? Wenn ich in C(#) mit malloc Speicher für einen String reserviere und dann per DllStructCreate ein Array of Char an dieser Adresse erstelle, sollte das doch reichen.
    Ich frage jetzt nur, weil ich bei allem, was in AutoIt mit direktem Speicherzugriff lief, auf NomadMemory verzichten konnte. DllStructs mit _MemGlobalAlloc haben eigentlich immer gereicht.


    Ganz witzig das du das sagst, mit Nomad hab ich damals meinen ersten WoW Bot geschrieben.
    Aber zum Thema, ich hab bisjetzt nie mit _memglobalalloc und DllStructs gearbeitet, sondern war immer auf NomadMemory fixiert :P.

    Aber ich glaub so schwer sind die DLLStructs nicht zu verstehen, oder? :Glaskugel:

  • Neustart eines Remote Rechners mit Inputbox

    • Busti
    • 22. Februar 2017 um 00:41
    Zitat von looxis

    Danke, es hat geklappt.
    Habe zu dem ganzen jetzt testweise eine GUI erstellt mit Buttons usw.
    Problem ist jetzt nachdem ich ein Case ausgeführt habe z.B. Fahre den \\XXXXX Pc herunter geht das Programm zu,
    was muss ich ergänzen das es offen bleibt?

    Vielen Dank

    monsieur, ich glaube sie haben ein "Exitloop" bei ihren Knöpfschn gesetzt hahahaah D;

  • Neustart eines Remote Rechners mit Inputbox

    • Busti
    • 21. Februar 2017 um 16:11
    Zitat von alpines

    (1)
    Ja, du kannst tatsächlich mit AutoIt multithreaden. Dazu gabs schon genug Helden die das versucht haben, aber es läuft instabil und sollte deshalb vermieden werden.Wenn du wirklich parallel Sachen ausführen möchtest rate ich dir zu multiprocessing mit mehreren Scripten.

    (2)
    Die Entwicklung der Sprache geht auch eher schleppend voran da viele Entwickler (meines Wissens nach) das Interesse verloren haben.

    (1)
    Ja, das mit multi-processing wusst ich, aber beim Threading hatte ich noch ein alten Standpunkt, damals, hatte es meines wissens nach noch keiner geschafft.
    Hab letztens nur ma was überflogen, und da meinte einer er hat das Stabil hinbekommen, ohne probleme. Darum die neugier :)

    (2)
    Da bin ich jetzt schon etwas ::shocked:: :O 8o
    Das ist doch mit Abstand die geilste Sprache, auch wenns nur ne Scriptsprache ist, sie ist ne Scriptsprache mit Schuhen für Erwachsene haha :P

  • Neustart eines Remote Rechners mit Inputbox

    • Busti
    • 21. Februar 2017 um 15:15

    Ich Bedanke mich mal wieder für die mehr als ausführliche Antwort ! :)


    Was ich so schade finde, ist das AutoIt einfach geil ist :P.

    Gibts mittlerweile ein Sinnvolles Multithreading für AutoIt?

    Egal auf welche Art, ob nun Selbstaufrufe mit ExecuteLine oder mit ner C++ DLL, bzw der C++ function.

    Hab hier iwo paar scripts rumliegen, hab mich aber noch nicht von ihrem nutzen überzeugt.

    Weil wenigstens durch ein paar Fake-Threads(Oder auch richtige, was halt auch derzeit möglich ist), kann man bestimmt auch einiges an Geschwindigkeit gutmachen.

    Also natürlich unvergleichbar mit fasm/c#++. Aber du weißt was ich mein, es so gut hinkriegen, das es einfach nicht störrt und wie geschmiert läuft :-).

    Jetzt gibtsschon Objecte in Autoit, warum dann nicht auch echtes Multi-Threading

  • Autoit String nach C# übergeben [erledigt]

    • Busti
    • 21. Februar 2017 um 14:57

    das soll auch ganz nett sein:

    autoit+c++ source

    Dateien

    share-variables-in-ram-1.rar 21,42 kB – 397 Downloads
  • Neustart eines Remote Rechners mit Inputbox

    • Busti
    • 21. Februar 2017 um 14:33
    Zitat von alpines

    1)Die musst du aber in einen gewissen Kontext setzen. Wenn mir das Kopieren eines Objektes 0.0000005 Sekunden Zeit in Anspruch nimmt und ich beim ByRef die Veränderungen rückgängig machen muss um das ursprüngliche Objekt zu haben sieht das ganze schon wieder ganz anders aus.
    2)In Anwendungen die sehr rechenlastig sind kommt man um ByRef eigentlich nicht rum, da sich diese Zeit zum kopieren deutlich vergrößert und einen nennenswerten Vorteil bringt.
    In AutoIt (was für meist nicht rechenintensive Aufgaben genutzt wird) ist es eher stil- und komfortbasiert.

    1)
    Da hast du recht.
    Etwas wiederherzustellen, was man grad effektiv verändert hat,
    ohne Kopie/sonst was, ist nicht nur in der Programmierung eklig :)


    2)
    Kann man in AutoIT nicht, die rechenlastigen aufgaben, an irgenteine C++ Bibliothek übergeben, und sich das Ergebnis holen?
    Ich mein, für AutoIT würde das wahnsinnig Sinn ergeben, da das langsame Script, einfach die 'Standart' aufgaben erledigt und die Hochkomplexen-Polygon-Muster die 3D Animiert sind und sich bewegen, lässt man chillig über die C++ Bibliothek ausführen und geniesst voll speed- bei easy AutoIt Code?


    3)
    Warum ist AutoIt überhauptso god damn slow? hab gehört hat mit dem Aufbau und dem Linearen Scriptablauf zutun?
    Soweit hab ich mich dann noch nicht über AutoIt informiert, bzw mit jemand darüber geredet, der den Anschein macht das auch wirklich alles zu verstehen. Was wichtig ist, man will ja auch kein Mist abspeichern.

  • Neustart eines Remote Rechners mit Inputbox

    • Busti
    • 21. Februar 2017 um 14:00
    Zitat von alpines

    Das ist aber vollgas am Ziel vorbei meiner Meinung nach. Bei deinem Parser verstehe ich das ja vielleicht noch aber nicht in einem Script wo man da fix per Hand selber lösen kann.Zu so einer Situation sollte es ja sowieso nicht kommen wenn man am coden ist.

    Da hast du wie gesagt recht, aber es ging ja eher nur um dass, das es eine "möglichkeit" ist.

    Er hängt ja nicht immer an dem Selben Script mit den selben Anforderungen, darum ist es nie falsch alle möglichen Wege nach Rom zu kennen =)

    Aber wegen der Ineffizienz, stimm ich dir voll und ganz zu.

  • Neustart eines Remote Rechners mit Inputbox

    • Busti
    • 21. Februar 2017 um 13:38
    Zitat von alpines

    Es ist genauso wie autoiter es beschreibt. Wenn du den Inhalt einer Variable nutzen/manipulieren willst darfst du sie nicht innerhalb von String-Literalen (" " oder ' ') stehen haben.

    Es Sei denn, man machts wie ich , noch mit nen "StringReplace( $String, "$sTarget", $sTarget ).
    Find ich in gewissen Situationen ganz hilfreich. (Siehe den Parser). Aber ist warscheinlich auch wieder langsamer 8)

  • AutoIT - Script-to-OOP-Script-Converter

    • Busti
    • 21. Februar 2017 um 13:11
    Zitat von alpines

    :rofl: Es ist noch kein Meister vom Himmel gefallen.
    \s ist ein Bezeichner für Whitespaces. Da sind z.B. Leerzeichen und Tabs inbegriffen.
    (\s{1}) matcht \s einmal.
    | hast du richtig erkannt, das ist ein Oder. Beispiel: (aber|doch) würde aber oder doch matchen im Pattern.

    aaaaaaaaaaah, okayokay, ich muss mir alle Infors von euch zwei gleich sorgfältig abspeichern und lernen....
    Sehr gut, vielen dank, jetzt schonmal, selbst wenn ichs nicht hinkriegen sollte, die patterns zu machen, danke(an euch beide, ihr seid Genius) für die Zeit & Hilfe meine Fragen zum beantworten.

    Ansich teil ich deine Meinung, mit dem Meister, der vom Himmel gefallen ist, ich rechne mir selbst aber doch, 'etwas' Kenntnisse im PC-Bereich zu, darum Wurmt mich das mit dem REGEX umso mehr....

    REGEX + POINTER damals bei c++.

    Das Problem ist nicht, das ich damit nicht umgehen könnte, das Problem ist, das ich (unglaub aber wahr) jemanden benötige, der mir das einmal beibringt.

    Das unglaublich aber wahr, ist eine Anspielung auf nen "Lehrer". War früher immer der Meinung alles alleine viel besser lernen zu können.
    Ansich ist es auch garnicht so verkehrt, man braucht nur 100 Jahre länger und kaut zeug durch, das andere schon perfekt verstehen und einem einfach beibringen könnten.

    So mit dem Alter, lernt man den einen oder anderen Lehrer die man früher hatte und/oder das Wissen, das sie Bereit waren/sind zu vermitteln, mit ganz anderen augen zu sehen 8).

    Autoit z.B. hab ich von der Pike auf sturr durchd as Helpfile gelernt. Jetzt könnt ich 2 Wochen durchprogrammieren, ohne das mir der Stoff ausgeht..
    Props an das super Helpfile und die Community [eng/deu], die mir damals schon, geholfen haben.
    Bei REGEX und C++ sah die ganze Sache damals anders aus.... da bin ich untergegangen, kaum tutorials bzw. die, die es gab, waren komischerweise nie für meine visual Studio version und wenn ich dann mal doch die richtige hatte, hats an den simplesten Aufgaben gescheitert.... bsp. Pointer * zPointer. (is bestimmt schon 10 Jahre her+)

    Aber ich schweife ab, me sorry.

    Zitat von alpines

    Wie der Name sagt wird statt einer Kopie eine Referenz verwendet.Das ursprüngliche Objekt das in die Funktion gegeben wird wird maniupuliert und es muss kein neuer Speicherplatz allokiert werden um eine Kopie (ByValue) zu erstellen.

    Ok, danke für die noch Detailliertere Aussage.
    So hatt ichs mir auch gedacht. Aber neben den gespaarten Speicherplatz müsste doch auch Geschwindigkeit++ wahrzunehmen sein? (ich hoffedu verstehst meinen Witz haha :))
    Weil ja ein/paar Schritt/e unnötig sind und übersprungen bzw. ausgelassen werden könnten.

  • AutoIT - Script-to-OOP-Script-Converter

    • Busti
    • 21. Februar 2017 um 12:52
    Zitat von BugFix

    Hier mal das Pattern erläutert:

    Code
    (\$[_\w]+)(?:\s*=([^,]+))?
    
    
    (\$[_\w]+) - der Variablenname
    ()         - in Klammern/ Capture fängt das Ergebnis auf
    \$         - das Zeichen "$", als Metazeichen muß es mit dem Backslash maskiert werden
    []         - eine Zeichenklasse für alle Zeichen die im Variablennamen erlaubt sind
    _          - das Zeichen "_"
    \w         - alle Word-Zeichen (0-9 a-z A-Z)
    +          - Quantifier, Zeichen in der Gruppe mindestens 1 bis unendlich viele
    
    
    (?:\s*=([^,]+))? - die (optionale) Zuweisung
    ()?              - Capture mit folgendem "?" macht den Inhalt optional
    ?:               - Inhalt soll NICHT im Capture enthalten sein
    \s*              - Leerzeichen mit Quantifier "*", 0 bis unendlich oft
    =                - das Zeichen "="
        HIER könnte man nochmal \s* einfügen - mögliches Leerzeichen nach dem Zuweisungsoperator
    ([^,]+)          - der zugewiesene Wert
    [^,]             - eine negierte Klasse, alles ausser dem Zeichen "," ist erlaubt
    +                - Quantifier, Zeichen in der Gruppe mindestens 1 bis unendlich viele
    Alles anzeigen

    Dein Skript habe ich noch nicht getestet.
    Ich habe viel mit AutoItOOP experimentiert. Bei einem Problem bin ich aber stecken geblieben: AutoitOOP-Objekte lassen sich nicht ByRef nutzen. Das liegt leider in der Natur dieses Objektes und läßt sich nicht ändern. Dadurch geht leider viel Objekt-Funktionalität verloren.

    1. Vielen Dank.
    2. Das Rahm ich aus und klebs mir an die Wand :P
    3. Bin bisjetzt noch nie auf Probleme wegen ByRef gestoßen, das ist doch eigentlich, ganz gut umgehbar?
    Bin nur einmal ewig an nem Error gehangen, bis ich verstanden hatte, dass das mit dem ByRef zusammenhing.

    Warscheinlich is der Vorteil von ByRef, das es schneller geht, da nix erstellt werden muss sondern immer weiterverarbeitet, richtig?

    Grüße :klatschen:

  • AutoIT - Script-to-OOP-Script-Converter

    • Busti
    • 21. Februar 2017 um 12:50
    Zitat von alpines

    Es ist eine Kunst regexen zu können. Schau dir diverse Tutorials an und probier dich mal an ein paar Patterns.Als Liveparser kann ich dir regex101 empfehlen, da dieser standardmäßig die selbe RegEx-Engine verwendet wie AutoIt.

    Danke, alpines.

    Wie bereits geschrieben, ich würde die Frage nicht stellen(da sie mir selbst unangenehm ist), wenn ich noch irgentwo die chance sehen würde, ohne einen kleinen Stubbs in die richtige Richtung mit Regex zu kommen. Ich versuche es wirklich schon seit Monaten, lande aber immerwieder an rumgefiesel mit String funktionen :(.

    Hab mal wie gesagt 2 regex strings geschafft, ganz einfache, habs aber auch geschafft, mir den pattern (für mich) nicht fixbar zu beschädigen und musste ihn wieder aus den weiten des Internets rausfischen.. Dabei hab ich nur versucht ihn abzubauen und wieder aufzubauen und ggf. kleinigkeiten verändern.

    Aber egal wieviel Tonnen an Code in meinen hirn rumfliegen, gehts um regex, ist das wie ein Säurebad. Vorallem, ich weiß, das ichs beherrschen werde, sobald ich SYNTAX & LOGIK der REGEX verstehe :D.

    Und ja, ich bin schon auf deiner regex101 seite und auf BugFix und les mir alles durch und spiel mich nochmal durch.


    Ein Beispiel, zum Aufzeigen meiner REGEX Künste

    Als Beipiel nehm ich mal den Urlangen String von BugFix seiner Seite(der macht einem schon vom ansehen ein schwummriges bauchgefühl):

    Code
    [b][b]((?<!.)[/b]([a-zA-Z]\:\\)(?!\s)(([\w-+.]*((?<!\s)(\s{1})(?!\\)|(?<!\\)(\\{1})(?!\s))*)*)(\\?)(?!.))[/b]
    
    
    ;---- ALLE MEINE ANTWORTEN SIND FREI AUSM KOPF BEANTWORTET OHNE NACHZULESEN, ES IST WARSCHEINLICH, DAS ALLES FALSCH IST. (falls jemand auf der durchreise ist, das ist keine erklärung, sondern eher eine Aufzeigung, wie scheisse ich mit REGEX bin :D)
    
    
    [b]((?<!.)[/b]    = ? bedeutet alle buchstaben/zahlen werden akzeptiert, und das <! das keine sonderzeichen akzeptiert werden
    [b][a-zA-Z][/b] = alle buchstaben klein/groß
    [b]\:\\[/b]         = ich denke mal das der indikator für "C:\", also für den ganz linken teil des strings
    [b](?!\s)[/b]      = ? wildcart ! keine ahnung \s.... bis zur....??
    [b](([\w-+.] = \w ich denke das buchstaben folgen bis zum ".", ab da kommt die Datei-Endung
    [/b]
    [b]*((?<!\s) = [b]? alle buchstaben, zahlen \ keine sonderzeichen[/b], \s .... parameter... für ka ohne nachzusehen
    [/b]
    [b](\s{1})    = \s{1} ??!?!?!?!!?! \s is glaub ichn parameter der was festes aussagt, aber {1} oO....
    [/b]
    [b](?!\\)      = [b]? alle buchstaben, zahlen \ keine sonderzeichen[/b]
    [/b]
    [b]|            = ODER wie in c++ || ? ein "logik-oder" ?
    [/b]
    [b](?<!\\)     = [b]? alle buchstaben, zahlen \ keine sonderzeichen[/b] solange bis man auf \ stößt, darum doppel \\
    [/b]
    [b](\\{1})    =  {1} nach \ (der letzte back-slash, denke ich mal)
    [/b]
    [b](?!\s))*)*)= [b]? alle buchstaben, zahlen \ keine sonderzeichen[/b])) *)*
    [/b]
    [b](\\?)(?!.))[/b]= \ alles von dem backslash bis zum .  <- danach müsste rein theoretisch die Dateiendung folgen....
    Alles anzeigen


    Viel spaß beim lachen haha :party:

  • AutoIT - Script-to-OOP-Script-Converter

    • Busti
    • 21. Februar 2017 um 12:12

    Vielen Dank für den RegEx Befehl...
    Genau sowas suche ich !!

    Versteh mich nicht falsch, es wär echt cool, natürlich nur falls du Zeit und lust hast, mir den PATTERN zu erklären....

    Bevor es jetzt gleich heißt, google,.. ich bin seid Monaten an diesen RegEx Befehlen dran und hab bisjetzt nur 1-2 geschafft die auch absolut standart sind.... ( wie z.B. alles zwischen '<' und '>' ).

    Das Problem mit RegEx und mir ist, ich steig noch nicht ganz hinter die Logik, ich brauch die nur einmal verstehen, aber irgentwie, schaff ich es nicht, mir dieses letzte bröckchen verständniss, übers lesen beizubringen..

    Naja, wär echt nice :-). Dann ersetz ich den Großteil des Scripts nämlich durch Regex statt meine 'verstringten' functionen :) .


    Frage am Rande, hast du das script mal probiert? positives/negatives Feedback? gehts/nicht?
    Lohnt sich das Script eigtl, oder ist es nur eine Spielerei? Auch nicht falsch verstehen, ich meine da die Objecte ja in c++ Generiert werden, müssten sie ja 'schneller' arbeiten... die Frage ist nur, wird der AutoIT Code, der in die "(C) Objecte" verlagert wird, nun immernoch mit der selben geschwindigkeit ausgeführt, oder geht es schneller?

    Oder läuft es gar ganz so, das rein die Objecte, aber der AutoIT-Code garnicht davon betroffen ist und immernoch langsam läuft?

    Sorry für die Vielen Fragen, war lang nichtmehr in nem Forum und hab mit Leuten geschrieben die'n 'Plan' haben... Und die neugier... ach die neugier... haha :)

    grüße


    btw. dein PATTERN is genau so einer, aus dem ich nicht schlau werde.... es muss nur 1 mal Klick machen.... :rock:

    Edit 2:

    Dein Patter gibt nur die Variablen zurück, leider nicht den Wert bei $bla6 z.B. :/

    Und ich versuche hier grad schon an dem PAttern rumzubauen, aber das einzige was ich schaffe, ist das Kauderwelsch zurückkommt oder gar-nichts. :?:

    Edti3 :

    versuche es mal noch mit deiner Seite, vll ist es da so erklärt das ichs ralle, das war doch die, oder?

    Edit4 :

    ich sehe grad du hast mir auch nen Pattern gegeben mit zuweisen o_o.
    ich checks kurz ab und erstatte in Edit 5 Bericht haha

    Edit5:

    Aaaaaalso, 1. du bist Genial, zweitens würd ich evtl noch ein kleines Problem sehen, undzwar:

    das ist mein Return:

    Code
    $bla
    $bla2
    $bla4
    ""
    $bla5
    ";"
    $bla6
    "zomg"


    WOHER, weiß ich jetzt, ob das nach $bla4 ne Zuweisung ist und nicht z.B. sowas : $bla4 = $bla10, dann krieg ich ja zurück:

    Code
    $bla4
    $bla10

    in dem Fall, kann ich doch nicht eruieren, ob $bla10 ne eigene Variable ist oder ne Zuweisung.
    Also klar, ne eigene Variable ist es so oder so, in dem Fall, aber, nach dem Parsen würde bei .bla4 = .bla10 fehlen, weil ich nie gewusst hätte das es dort zugefügt gehört.

    Hatte eher an sone regex maske gedacht.... uff wie beschreib ich das jetzt

    .... Also, ich versuchs mal....

    GLOBAL $var, $var2, $var5, $var4=4, $var7='x', $var5= $var7, $xxx= 1234

    also ein patter der checkt ob:

    GLOBAL[ ]$VAR(hier soll überprüft werden ob ein = kommt, von dem pattern)(wenn kein = kommt, soll überprüft werden, ob ein , das NICHT in ' oder " gesetzt ist kommt, damit ich weiß wie ich weiter vorgehe... :x...

    hmmmgrml regex ?(?(?(?(?(

    Dateien

    det.png 88,17 kB – 355 Downloads
  • AutoIT - Script-to-OOP-Script-Converter

    • Busti
    • 21. Februar 2017 um 11:52

    Hi, danke für die Antwort.

    Naja, damit meine ich z.B.

    Code
    Global $bla, $bla2, $bla4="",$bla5=";",$bla6='zomg'


    oder auch

    Code
    global $bla, _
    $bla1, $bla4, _
    $bla6 = "", _
    $bla7=""


    bin grad schon am überlegen, wie ich das am besten regel...

    und danke für den tipp, ich werd mal in die LUA sektion reinstöbern.

    Hast du evtl noch ein Zwei Anhaltspunkte nach was ich genau suchen soll?


    und kann ich evtl die Linebreaks so umgehen, bzw meinst du das so :

    Code
    stringreplace( $source, ", _", "\b" )
  • AutoIT - Script-to-OOP-Script-Converter

    • Busti
    • 21. Februar 2017 um 09:52
    Zitat von alpines

    Kannst du gerne machen, würde dir aber raten im Hauptpost noch einen kompletten Changelog zu führen.

    Dankesehr.
    Ist dran :)

  • AutoIT - Script-to-OOP-Script-Converter

    • Busti
    • 21. Februar 2017 um 09:42

    [UPDATE]

    Code
    -v0.81 pub.a {
            > includes work now
    }


    Hoffe es ist okay, das ich neuerungen in einen neuen Post schreibe, falls nicht, bitte einfach drauf hinweisen, dann strukturier ich alles um. :)

  • AutoIT - Script-to-OOP-Script-Converter

    • Busti
    • 21. Februar 2017 um 08:01

    Hallo liebe Leute,

    Seitdem ich die AutoITObject.au3 für mich entdeckt habe (greetings an die ersteller),
    komm ich von den Objekten nichtmehr weg...

    Standartmäßig, konvertier ich erst alles Mühsam per Hand STUNDEN(2,3,4,5..[-open end] manchmal ;( ),
    da das kein Zustand war, hab ich mir gedacht ich schreib nen "CLASS_Parser", der mir wenigstens die CLASS parsed.

    Der CLASS_Parser war super einfach und schnell fertig, darum jetzt ein "OBJECT&CLASS - PARSER + CODE ERSTELLER".

    Kurz und knapp gesagt, man gibt der UDF einen Link zu einer Datei:
    [bsp. X:\Data\convert.au3] und schreibt dazu noch den Wunschnamen seiner neuen Classe [bsp. ich_werde].
    ( das Programm hängt hinten noch _converted dran, sodass der komplette Name dann lautet [ich_werde_converted() // $ich_werde_obj // $ich_werde_class]

    Die Bedienung ist fast leichter als ne MsgBox zu erzeugen

    Und ACHTUNG: Dieser Parser ist kein "1-klick-ich-mach-die-ganze-arbeit-für-dich-parser".

    Er befindet sich noch im Alpha Stadium und wird warscheinlich von Bugs und Fehlern nur so geplagt....
    Aufjedenfall Konvertiert er erstmal alles was er schafft, was er nicht muss man mit der Hand nachtragen.
    Sparrt trotzdem einen HAUFEN Arbeit.

    z.B. bei der WinHTTPConstants.au3 mussten 330 Zeilen in diesem Stil umgeschrieben werden :


    1) Von:

    Code
    Global CONST $WINHTTP_AUTO_DETECT_TYPE_DNS_A =  0x00000002

    2) Auf:

    Code
    '.AddProperty    ("WINHTTP_AUTO_DETECT_TYPE_DNS_A",$ELSCOPE_READONLY, 0x00000002)'

    Das z.B. schafft das Programm (bei einzeiliger deklarierung) schon soziemlich perfekt.

    (Der Code ist noch etwas unordentlich 8o ) (Es gibt auch Ordentlich DEBUG-Optionen bei Fehlern)

    Programm: "AutoIT - [Script]-to-[OOP-Script]-[Converter] .au3"

    Beispiel Benutzung:

    AutoIt: Example of Usage
    ;================================================;
        ;| AutoIT - Script-to-OOP-Script-Converter      |;
        ;|   (c)2017 by busti_ownz@me.com                |;
        ;|   feel free to use this UDF, its free 2 use  |;
        ;================================================;
        ;|   just dont be an dumbass and sell this      |;
        ;================================================;
        ;|   released on: autoit.de/codebot.de          |;
        ;|   By: Busti                                    |;
        ;================================================;
        ;|   usage:                                      |;
        ;|   _ParseAndMerge_Script_to_Object_and_Class( |;
        ;|   -$o = Path to File you wish to Convert     |;
        ;|   -$classname = New Name of the Class&Object |;
        ;|   -$DEBUG     = Boolean TRUE/FALSE              |;
        ;|   -$TIDY     = Boolean TRUE/FALSE              |;
        ;|   -$useHeader= Boolean TRUE/FALSE )             |;
        ;================================================;
    ;==============================USEHEADER -> EXAMPLE==;
    ;This is an example of an Header,                    |;
    ;this will just be included into the parsed         |;
    ;script if $useHeader = TRUE                        |;
    ;====================================================,
    ;    ;================================================;
    ;    ;|        AutoIT - Script-to-OOP-Converter        |;
    ;    ;|   (c)2017 by busti_ownz@me.com                |;
    ;    ;================================================;
    ;    ;|     Converted with AutoIT "3.3.14.2"         |;
    ;    ;| WinHttp_test.au3 [>>] WinHTTP_converted.au3  |;
    ;    ;================================================;
    ;    ;|   released on: autoit.de/codebot.de          |;
    ;    ;================================================;
    ; END OF EXAMPLE
    ;====================================================;
    #include <Array.au3>
    #include <String.au3>
    Local $DIRECTORY_WITH_FILES_TO_CONVERT = @ScriptDir & '\', $old_FILE_NAME_TO_PARSE    = 'convertconverter_lol.au3', $file    = $DIRECTORY_WITH_FILES_TO_CONVERT & $old_FILE_NAME_TO_PARSE
    Local $new_CLASS_AND_FILE_NAME        = 'ParseAndMergeScript_into_Object_and_Class'
    _ParseAndMerge_Script_to_Object_and_Class($file, $new_CLASS_AND_FILE_NAME&"_false_dbg_true_tdy")                 ;[Convert] File ["$file"] into ["$newfilename"], [without DEBUGGING]     and [RUN]         [TIDY] after completion
    _ParseAndMerge_Script_to_Object_and_Class($file, $new_CLASS_AND_FILE_NAME&"_true_dbg_true_tdy",True)             ;[Convert] File ["$file"] into ["$newfilename"], [with DEBUGGING]        and [RUN]         [TIDY] after completion
    _ParseAndMerge_Script_to_Object_and_Class($file, $new_CLASS_AND_FILE_NAME&"_true_dbg_false_tdy",True,False)     ;[Convert] File ["$file"] into ["$newfilename"], [with DEBUGGING]        and [DONT RUN!]    [TIDY] after completion
    Alles anzeigen

    Kompletter Sourcecode:

    AutoIt
    -to-[OOP-Script]-[Converter].au3']
    	;================================================;
    	;| AutoIT - Script-to-OOP-Script-Converter      |;
    	;|   (c)2017 by busti_ownz@me.com		        |;
    	;|   feel free to use this UDF, its free 2 use  |;
    	;================================================;
    	;|   just dont be an dumbass and sell this      |;
    	;================================================;
    	;|   released on: autoit.de/codebot.de          |;
    	;|   By: Busti						            |;
    	;================================================;
    	;|   usage:         			 				|;
    	;|   _ParseAndMerge_Script_to_Object_and_Class( |;
    	;|   -$o = Path to File you wish to Convert     |;
    	;|   -$classname = New Name of the Class&Object |;
    	;|   -$DEBUG 	= Boolean TRUE/FALSE  			|;
    	;|   -$TIDY 	= Boolean TRUE/FALSE  			|;
    	;|   -$useHeader= Boolean TRUE/FALSE ) 			|;
    	;================================================;
    
    
    ;==============================USEHEADER -> EXAMPLE==;
    ;This is an example of an Header,					|;
    ;this will just be included into the parsed 		|;
    ;script if $useHeader = TRUE						|;
    ;====================================================,
    
    
    ;	;================================================;
    ;	;|		AutoIT - Script-to-OOP-Converter        |;
    ;	;|   (c)2017 by busti_ownz@me.com		        |;
    ;	;================================================;
    ;	;|     Converted with AutoIT "3.3.14.2"         |;
    ;	;| WinHttp_test.au3 [>>] WinHTTP_converted.au3  |;
    ;	;================================================;
    ;	;|   released on: autoit.de/codebot.de          |;
    ;	;================================================;
    
    
    ; END OF EXAMPLE
    ;====================================================;
    ;
    
    
    ;AutoIT - [Script]-to-[OOP-Script]-[Converter] .au3
    #include <Array.au3>
    #include <String.au3>
    
    
    Local $DIRECTORY_WITH_FILES_TO_CONVERT = @ScriptDir & '\', $old_FILE_NAME_TO_PARSE	= '3D_grid.au3', $file	= $DIRECTORY_WITH_FILES_TO_CONVERT & $old_FILE_NAME_TO_PARSE
    
    
    Local $new_CLASS_AND_FILE_NAME		= 'grid'
    
    
    _ParseAndMerge_Script_to_Object_and_Class($file, $new_CLASS_AND_FILE_NAME) 										;[Convert] File ["$file"] into ["$newfilename"], [without DEBUGGING] 	and [RUN] 		[TIDY] after completion
    ;_ParseAndMerge_Script_to_Object_and_Class($file, $new_CLASS_AND_FILE_NAME&"_true_dbg_true_tdy",True) 			;[Convert] File ["$file"] into ["$newfilename"], [with DEBUGGING]		and [RUN] 		[TIDY] after completion
    ;_ParseAndMerge_Script_to_Object_and_Class($file, $new_CLASS_AND_FILE_NAME&"_true_dbg_false_tdy",True,False) 	;[Convert] File ["$file"] into ["$newfilename"], [with DEBUGGING]		and [DONT RUN!]	[TIDY] after completion
    
    
    
    
    
    
    Func _ParseAndMerge_Script_to_Object_and_Class($fileread, $classname = 'extracted_class_and_obj', $DEBUG = False, $tidy = True, $useHeader=True) ; if youre cool, leave the header :-*
    ;======================================================================================================================================================================================
    ;======================INITIALISE LOCAL VARIABLES=================|====================================================================================================================
    ;======================================================================================================================================================================================
    	;=============================================================|=[GLOBAL] [VARIABLES] & [FILEREAD]==================================================================================
    	Global $tidypath = 'D:\Data\Programme\AutoIt3\SciTE\Tidy\', _;| <=======CHANGE THIS PATH IF YOU WANT TO TIDY
    			$MACRO_COUNT=0, $oldPath=$fileread, $version = 'v0.8 pub.alpha'
    	$fileread = FileRead(FileOpen($fileread))
    	;=============================================================|=[LOCAL] [VARIABLES]================================================================================================
    	Local $CLASS_STRING_LEFT, $CLASS_STRING_MID_METH, $CLASS_STRING_MID_PROP, $CLASS_STRING_RIGHT, $CLASS_STRING_COMPLETE, $CLASS_FUNCTION_NAMES, $xr, $xr2, _
    	$CURRENT_OBJECT__COUNT_HOLDER = '@@COUNT@@', $CURRENT_OBJECT__NEW_FUNCTION_NAME = "%%CUR_OBJ_FUNCTION_NAME_"&$CURRENT_OBJECT__COUNT_HOLDER&"%%"
    	;=============================================================|=[CONSTANTS]========================================================================================================
    	Local $r, $t = '$' & $classname, $u, $crs = '%%CR%%', $crr = @CR, $fn = @ScriptDir & '\' & $classname & '.au3'
    	;		If $DEBUG Then _ArrayDisplay($u,"0_cleanArray(StringSplit(StringReplace(StringStripWS($fileread,4),', _',''),@CR),';',9)")
    	;=============================================================|=[IF] [$USEHEADER = TRUE]===========================================================================================
    	Local $header = ';================================================;' &$crs& ';|		AutoIT - Script-to-OOP-Converter        |;'&$crs& _
    					';|   (c)2017 by busti_ownz@me.com		        |;'& $crs& ';================================================;' &$crs& _
    					';|     Converted with AutoIT "' &@AutoItVersion& '" and     |;' &$crs& ';|   Class And Object Parser & Builder "' & $version & '"	|;' &$crs &  _
    					';| '& StringTrimLeft($oldPath,StringInStr($oldPath,"\",1,-1)) & ' [>>] ' &$classname&'_converted.au3 |;'& $crs & ';================================================;' & $crs & _
    					';|   released on: autoit.de/codebot.de          |;'& $crs& ';================================================;' &$crs&$crs
    ;======================================================================================================================================================================================
    ;======================[METHODS AND PROPERTY] [USEABLE] [STRINGS]=|=[.addMethod] 	needs [$objF/$objfR] AND [$iobjF/$iobjfR]==========================================================
    ;=================================================================|=[.addProperty] 	needs [$varS/$varR]  AND [$flagS/$flagR(1/2)] AND [$valueS/$valueR]================================
    ;======================================================================================================================================================================================
    	Local $objf = '%%OFUNC%%', $objfR = 'NEWNAME_'&StringReplace($CURRENT_OBJECT__COUNT_HOLDER,$CURRENT_OBJECT__COUNT_HOLDER,$MACRO_COUNT), $iobjf = '%%IFUNC%%', $iobjfR = '', _
    			$met_base_s = '		.AddMethod		("' & $objf & '","' & $iobjf & '")' & $crs, _
    			$varS = '%%VAR%%', $varR = '', $valueS = '%%VALUE%%', $valueR = '', $flagS = '%%FLAG%%', $flagR = StringSplit('$ELSCOPE_READONLY|$ELSCOPE_PUBLIC', "|"), _
    			$prop_base_s = '		.AddProperty	("' & $varS & '",' & $flagS & ',' & $valueS & ')' & $crs
    ;======================================================================================================================================================================================
    ;======================[FILE-], [CLASS-], [OBJECT-], [-HEADERS]===|=[$INITIATE_STRING]		= [Include-once],	[Include Object], 	[Startup Objects+error check], [Create Object],====
    ;=================================================================|=[$CLASS_STRING_LEFT]	= [Complete Left half of the Class, that what can be hardcoded],===========================
    ;=================================================================|=[$OBJ___STRING_LEFT]	= [Complete Left half of the Object, that what can be hardcoded]===========================
    ;=================================================================|=[_cleanArray($u,';',3)  = [Removes all Lines which begin with ";"]=================================================
    ;======================================================================================================================================================================================
    	Local $tmp, $CLASS_STRING_MID_LOCAL_VAR, $CLASS_STRING_MID_VAR_VAR, $CLASS_STRING_MID_VAR_FUNC, $kommi = ';=============] ', $INCLUDE_MAIN_ETC="", $includesearch="",$INCLUDE_A='',$INCLUDE_B='',$INITIATE_STRING=""
    	Local $OBJECT_STRING_COMPLETE, $OBJECT_FUNCTION_NAMES, $OBJECT_FUNCTIONS, $OBJECT_METHODS, $OBJECT_PROPERTYS, $OBJECT_FUNC_END_STRING = '	Endwith'&$crs&$crs&'	Return ' &$t&'_obj'& $crs&'EndFunc;======][Object-Definition-End] [<<]'&$crs
    	;=============================================================|=[HARDCODED STRINGS OF NEW FILE]=============================================================================================
    	$includesearch = StringSplit(StringReplace(StringStripWS($fileread, 4), ', _', '',0,1), @CR,1)
    	$includesearch = _ArrayToString(_cleanArray($includesearch, '#include', 1), $crs,1)
    	$INCLUDE_A			=	$header & $crs
    	$INCLUDE_B			&=	$INCLUDE_A & $crs & $kommi&'[Includes] [>>]'&$crs
    	$INITIATE_STRING	&=	$INCLUDE_B & '#include-once' & $crs & $includesearch & $crs & '#include "AutoItObject.au3"' & $crs & $kommi& '[Includes] [End] [<<]' & $crs & $crs
    	;================================================================|=====================================================================================================================
    	$INCLUDE_MAIN_ETC	=	$kommi&'[Variable-Declaration], [Object-Initialization] [>>]'&$crs&	'Global $o' & $classname&', $c' & $classname & ';' & $crs & '_AutoIt_ObjectStartup();'&$crs& _
    							'If @error Then Exit; exit on error'&$crs&$kommi&'[Variables-declared], [Object-Initialized] <<'&$crs&$crs&$kommi&'[Creating-Object] [>>]'&$crs&'$o'& $classname & _
    							' = ' & $classname & '_obj()' & $crs & $kommi & '[Created] [<<]' & $crs & $crs & $crs & $kommi & $kommi & '[main()] ~ [{Code Here//use File as Include}] [>>]' & $crs & _
    							';'& $crs &';'& $crs &';'& $kommi& $kommi  & '[main()][end] [<<]' & $crs & $crs & $crs
    	;=============================================================|=====================================================================================================================
    	$CLASS_STRING_LEFT 	= 	$kommi&'[Class-Definition] [>>]'&$crs& 	'Func '& $classname & '_class' & '();class-name' & $crs & '	Local ' & $t & ' = _AutoItObject_Class() ;create_class' & $crs & '	With ' & $t & $crs & $crs
    	$OBJ___STRING_LEFT 	= 	$kommi&'[Object-Definition] [>>]'&$crs&	'Func '& $classname & '_obj()' & $crs & '	Global ' &$t& '_obj = _AutoitObject_Create(); create obj' & $crs & '	Global ' & _
    							$t & '_class = ' & $classname & '_class();using class in every obj' & $crs & $crs & '	With ' & $t & '_obj' & $crs & $crs
    	;=============================================================|=====================================================================================================================
    	$OBJECT_STRING_COMPLETE=$OBJ___STRING_LEFT;$OBJECT_FUNC_END_STRING
    	$u = StringSplit(StringReplace(StringStripWS($fileread, 4), ', _', '',0,1), @CR,1)
    	$u = _cleanArray($u, ';', 3)
    ;================================================================|=====================================================================================================================
    ;======================EXCLUDE #cs #ce===========================|=[_cleanArray($u,'#cs',15)]=[Searches #cs, removes till #ce, through complete array]=================================
    ;================================================================|=====================================================================================================================
    	;		If $DEBUG Then _ArrayDisplay($u,"test")
    	$u = _cleanArray($u, '#cs', 15)
    			If $DEBUG Then _ArrayDisplay($u,"1] [EXCLUDE] [#CS/#CE] OF [SOURCE]")
    	_ArrayUnique($u)
    ;======================================================================================================================================================================================
    ;======================GET ALL FUNCTIONS=========================|=[ _cleanArray($u,'func',13)]=[Searches func, saves till endfunc, through complete array, returns all functions]=====
    ;======================================================================================================================================================================================
    	$CLASS_STRING_MID_METH = _cleanArray($u, 'func', 13)
    	$tmp = $CLASS_STRING_MID_METH
    			If $DEBUG Then _ArrayDisplay($tmp,"2a]	[GET] [ALL] [FUNCTIONS]")
    	;==================================================================================================================================================================================
    	$CLASS_STRING_MID_METH = _cleanArray($CLASS_STRING_MID_METH, 'func', 20)
    			If $DEBUG Then _ArrayDisplay($CLASS_STRING_MID_METH,"2b]	[CONVERT] [FUNCTIONS] [->] [METHODS]")
    	$CLASS_STRING_MID_METH = StringSplit(StringReplace(_ArrayToString($CLASS_STRING_MID_METH, @CR, 1),$crs,$crr,0,1),$crr)
    	$CLASS_STRING_MID_METH =_ArrayToString($CLASS_STRING_MID_METH, @CR, 1)
    			If $DEBUG Then MsgBox(0,"2c] [CONVERTED FUNCTIONS] -> [METHODS]", $CLASS_STRING_MID_METH )
    ;======================================================================================================================================================================================
    ;======================CONVERT INTO [OBJECT] FUNCTIONS===========|= _cleanArray($tmp,'local',12)=[save line if true->(Stringleft(StringStripws($tmp,4),Stringlen('local')) = 'local')]=
    ;======================================================================================================================================================================================
    	$CLASS_STRING_MID_LOCAL_VAR = _cleanArray($tmp, 'local', 12)
    			If $DEBUG Then _ArrayDisplay($CLASS_STRING_MID_LOCAL_VAR,"3] [CONVERT] [FUNCTION VARIABLES] INTO [OBJECT PROPERTYS]")
    	;$xr &= '	;============>>CONVERTED>>[LOCAL VARIABLES OF FUNCTIONS]' &$crs &$crs
    	$CLASS_STRING_MID_VAR_VAR = _cleanArray($tmp, '$', 12)
    	$xr2 &= '	;============>>START>>[EXTRACTION] OF [FUNCTION VARIABLES]' &$crs
    	;==================================================================================================================================================================================
    	Local $a, $b, $c, $delim = "<(;)>", $func_start = 'Func ', $func_end = 'EndFunc', $vars_string
    	If $CLASS_STRING_MID_VAR_VAR[0] >= 1 Then
    		Dim $temp_var_var[$CLASS_STRING_MID_VAR_VAR[0] + 1]
    		For $x = 1 To $CLASS_STRING_MID_VAR_VAR[0]
    			$b = StringSplit($CLASS_STRING_MID_VAR_VAR[$x], "=", 1)
    			$checkarray = (StringInStr($b[1], "[") And StringInStr($b[1], "]"))
    			If $checkarray Then $b[1] = StringLeft($b[1],StringInStr($b[1],"[")) & '"& .' & StringTrimRight(StringTrimLeft($b[1],StringInStr($b[1],"[")+1),1) &' & "]' ; & ']'
    			$temp_var_var[$x] = $b[1]
    		Next
    		$temp_var_var = _cleanArray($temp_var_var, 1, 16)			;remove DUPLICATES EFFECTIVE
    		$temp_var_var = _cleanArray($temp_var_var, ']', 19, -1 )	;remove [][] arrays, put it yourself back, with your hands after Convert.
    		;$temp_var_var = _cleanArray($temp_var_var, '$', 18, 1 )		;remove $ cause its no var anymore, its a property now
    			If $DEBUG Then _ArrayDisplay($temp_var_var, "5] [EXTRACTED] ALL [VARIABLES IN FUNCTIONS] AND [CONVERTED] TO [PROPERTYS]")
    
    
    	EndIf
    	;==================================================================================================================================================================================
    	For $c = 1 To $temp_var_var[0]
    		$CLASS_STRING_MID_METH = StringReplace($CLASS_STRING_MID_METH, $temp_var_var[$c], '.'&StringTrimLeft($temp_var_var[$c],1),0,1)
    		$xr2 &= StringReplace(StringReplace(StringReplace($prop_base_s, $flagS, $flagR[2]), $varS, StringTrimLeft(StringStripWS($temp_var_var[$c],8),StringInStr(StringStripWS($temp_var_var[$c],8),'$'))), $valueS, "''") & $delim
    			If $DEBUG Then ConsoleWrite( "!5a]	[$X]="&$c&"/"&$temp_var_var[0]&"	[>>]	'" & $varS & "'[->]'" & $temp_var_var[$c] & "'	[>>]	" & StringReplace(StringReplace(StringReplace($prop_base_s, $flagS, $flagR[2]), $varS, $temp_var_var[$c]), $valueS, "''") & $delim & @CR)
    	Next
    	$xr2 &= '	;============>>END>>[EXTRACTION] OF [FUNCTION VARIABLES]' &$crs
    	;==================================================================================================================================================================================
    	;If $DEBUG Then _ArrayDisplay($CLASS_STRING_MID_VAR_VAR, "5b]	[LOCAL VARIABLES] IN [FUNCTIONS]")
    	;$CLASS_STRING_MID_VAR_FUNC = _cleanArray($tmp, '$', 12)
    	;==================================================================================================================================================================================
    	;If $DEBUG Then _ArrayDisplay($CLASS_STRING_MID_VAR_FUNC, "5c]	[GET ALL LINES OF ARRAY WITH $ AT FIRST POSITION]")
    ;======================================================================================================================================================================================
    ;======================GET ONLY FUNCTION NAMES=========================================================================================================================================
    ;======================================================================================================================================================================================
    	$CLASS_FUNCTION_NAMES 	= _cleanArray($u, 'func', 12)
    	$CLASS_FUNCTION_NAMES 	= _cleanArray($CLASS_FUNCTION_NAMES, 4)
    	$CLASS_FUNCTION_NAMES 	= _cleanArray($CLASS_FUNCTION_NAMES, " ", 11)
    	$OBJECT_FUNCTIONS	 	= $CLASS_FUNCTION_NAMES
    			If $DEBUG Then _ArrayDisplay($CLASS_FUNCTION_NAMES,"6]	[FOUND] [FUNCTIONS]")
    	; ::-->>> TREATED AFTER CLASS COMPLETION
    ;======================================================================================================================================================================================
    ;======================GET GLOBALS & GLOBAL CONST======================================================================================================================================
    ;======================================================================================================================================================================================
    	Local $a = '$'&$classname&'.', $b, $c, $delim = "<(;)>"
    	$CLASS_STRING_MID_PROP = _cleanArray($u, 'global', 12)
    			If $DEBUG Then _ArrayDisplay($CLASS_STRING_MID_PROP, "8CLASS STRING MID PROP GLOBAL SEARCH")
    	;$CLASS_STRING_MID_PROP		= 	_cleanArray($CLASS_STRING_MID_PROP, 'const', 8)
    			If $DEBUG Then _ArrayDisplay($CLASS_STRING_MID_PROP, "9CLASS STRING MID PROP CONST SEARCH")
    	Local $flag = 2
    	;MsgBox(0,"",_ArrayToString($CLASS_STRING_MID_PROP,@CR))
    
    
    	$xr &= '	;============>>START>>[GLOBAL/CONST VARIABLES] -> [PUBLIC/PRIVATE PROPERTYS]' &$crs
    
    
    	If $CLASS_STRING_MID_PROP[0] >= 1 Then
    		For $x = 1 To $CLASS_STRING_MID_PROP[0]
    			$b = StringSplit($CLASS_STRING_MID_PROP[$x], "=", 1)
    			If Not @error Then
    				$flag = 2
    				If StringInStr($b[1], 'const') Then $flag = 1
    				$b[1] = StringReplace($b[1], "global", "")
    				$b[1] = StringStripWS(StringReplace($b[1], "const", ""), 8)
    				$b[2] = StringReplace($b[2], '$', "$oSelf." ); )
    				$checkright = StringRight(StringLower(StringStripWS($b[2], 8)), 2)
    				If $checkright Then $b[2] = StringTrimRight($b[2], StringInStr($b[2], "_", 0, -1))
    				$checkleft = (StringLeft(StringStripWS($b[1], 8), 1) = '$')
    				If $checkleft Then $b[1] = StringTrimLeft($b[1], 1)
    				$xr &= StringReplace(StringReplace(StringReplace($prop_base_s, $flagS, $flagR[$flag]), $varS, $b[1]), $valueS, $b[2]) & $delim
    					If $DEBUG Then ConsoleWrite( "!7 ]	[$X]="&$x&"/"&$CLASS_STRING_MID_PROP[0]&">>	" & $b[1] & "	>>	" & $b[2] & "	>>	" & StringReplace( StringReplace( StringReplace ($prop_base_s,$flagS,$flagR[$flag]),$varS,$b[1]),$valueS,$b[2]) & $delim & @CR)
    			Else
    					If $DEBUG Then ConsoleWrite( "!7 ]	[$X]="&$x&"/"&$CLASS_STRING_MID_PROP[0]&">>	Error" & $delim & @CR)
    			EndIf
    
    
    		Next
    			$xr &= '	;============>>END>>[GLOBAL/CONST] -> [PUBLIC/PRIVATE PROPERTYS]' &$crs
    		$CLASS_STRING_MID_PROP = StringSplit($xr, $delim, 3)
    	EndIf
    
    
    	$CLASS_STRING_MID_PROP = _ArrayToString($CLASS_STRING_MID_PROP, '')
    			If $DEBUG Then _ArrayDisplay($CLASS_STRING_MID_PROP,"11CLASS STRING MID PROP")
    			If $DEBUG Then ConsoleWrite("!12ARRAYTOSTRING CLASS STRING MID PROP>>"&@CRLF&_ArrayToString($CLASS_STRING_MID_PROP,@CR,1))
    	$chk = ';============' &$crs &$crs
    	$CLASS_STRING_RIGHT = $crs & "	Endwith" & $crs & "	Return " & $t & ".Object" & $crs & "Endfunc;======][Class-Definition-End] [<<]" & $crs
    ;======================================================================================================================================================================================
    ;======================CREATE METHODS OUT OF FUNCTION NAMES===========================================================================================================================================
    ;======================================================================================================================================================================================
    	Local $a = '$'&$classname&'.', $b, $c, $delim = "<(;)>", $flag = 2
    	$xr2 &= '	;============>>START>>[CREATE METHODS] -> [OUT OF FUNCS]' &$crs
    	If $CLASS_FUNCTION_NAMES[0] >= 1 Then
    		For $x = 1 To $CLASS_FUNCTION_NAMES[0]
    			$a = StringSplit( $CLASS_FUNCTION_NAMES[$x], '(', 3 )
    			$MACRO_COUNT += 1
    			$objfR = $a[0] & '_new'&StringReplace($CURRENT_OBJECT__COUNT_HOLDER,$CURRENT_OBJECT__COUNT_HOLDER,$MACRO_COUNT)
    			$xr2 &= StringReplace( StringReplace( $met_base_s, $objf, $objfR), $iobjf, $a[0]) & $delim
    				If $DEBUG Then ConsoleWrite( "!9 ] [$X]=["&$x&"/"&$CLASS_FUNCTION_NAMES[0]&"]	[>>]	[" & $CLASS_FUNCTION_NAMES[$x] & "]	[>>]	[" & $objfR & "]	[>>]	[" & StringReplace( StringReplace( $met_base_s, $objf, $objfR), $iobjf, $a[0]) & ']' & $delim & @CR)
    		Next
    		$xr2 &= '	;============>>END>>[CREATE METHODS] -> [OUT OF FUNCS]' &$crs
    		$OBJECT_METHODS = StringSplit($xr2, $delim, 3)
    	EndIf
    	$OBJECT_METHODS = _ArrayToString($OBJECT_METHODS, '')
    If $DEBUG Then _ArrayDisplay($CLASS_STRING_MID_PROP,"11CLASS STRING MID PROP")
    If $DEBUG Then ConsoleWrite("!12ARRAYTOSTRING CLASS STRING MID PROP>>"&@CRLF&_ArrayToString($CLASS_STRING_MID_PROP,@CR,1))
    	$chk = ';============' &$crs &$crs
    ;======================================================================================================================================================================================
    ;======================BUILD COMPLETE FILE-STRING FROM PARTS===========================================================================================================================
    ;======================================================================================================================================================================================
    	$OBJECT_STRING_COMPLETE&= $OBJECT_METHODS & $OBJECT_FUNC_END_STRING
    	$CLASS_STRING_COMPLETE 	= $INITIATE_STRING & $OBJECT_STRING_COMPLETE & $CLASS_STRING_LEFT & $CLASS_STRING_MID_PROP & $CLASS_STRING_RIGHT & $CLASS_STRING_MID_METH
    
    
    ;======================================================================================================================================================================================
    ;======================COMPLETE STRING_REPLACE %%CR%% WITH LINEBREAKS==================================================================================================================
    ;======================================================================================================================================================================================
    	$CLASS_STRING_COMPLETE = StringReplace($CLASS_STRING_COMPLETE, $crs, $crr, 0, 1)
    
    
    ;======================================================================================================================================================================================
    ;	::CREATE NEW FILE
    	Local $newfile=@ScriptDir & "\" & $classname & "_converted.au3"
    	_fCreate($newfile, $CLASS_STRING_COMPLETE)
    	If $tidy Then Return _tidy($newfile)
    	Return -1
    EndFunc   ;==>_classParser
    ;
    Func _fCreate($f, $t)
    	If FileExists($f) Then FileDelete($f)
    	Return FileWrite($f, $t)
    EndFunc   ;==>_fCreate
    Func _tidy($file, $oat = 1)
    	Local $ret,$tidywindow='What file do you want to tidy?',$tidypath = 'D:\Data\Programme\AutoIt3\SciTE\Tidy\Tidy.exe' ; change to your path if you wish
    	$ret		 = 			Run($tidypath)
    	WinWaitActive	($tidywindow,'',5)
    	WinSetState		($tidywindow,"",@SW_HIDE)
    	ControlSetText	($tidywindow, "", '[CLASS:Edit; INSTANCE:1]'	, $file)
    	ControlClick	($tidywindow, 	"", '[CLASS:Button; INSTANCE:1]', 'left', 1 )
    	Sleep			(1000)
    	ConsoleWrite	( ">> DID TIDY?" & @CR & FileRead($file) & @CRLF )
    	If $oat Then Run($file)
    	Return $ret
    EndFunc
    
    
    ; cleanarray
    ; 0 = kleiner als zahl		 				.sortArray( $array, 	1  ,    0	 )		;, $startnum=1, $inc=1, $delim = "|" )
    ; 1 = stringleft comapare	 				.sortArray( $array,  "text", 	1	 ) 		;, $inc=1, $delim = "|" )
    ; 2 = stringright "							.sortArray( $array,  "text", 	2	 ) 		;, $inc=1, $delim = "|" )
    ; 3 = not 1					 				.sortArray( $array,  "text", 	3	 )		;, $inc=1, $delim = "|" )
    ; 4 = not 2					 				.sortArray( $array,  "text", 	4	 ) 		;, $inc=1, $delim = "|" )
    ; 5 = startnum, inc			 				.sortArray( $array, 	   1, 	5, 	2)		;, $inc=1, $delim = "|" )
    ; 6 = trimleft				 				.sortArray( $array, 	   1, 	6	 )		;, $inc=1, $delim = "|" )
    ; 7 = trimright				 				.sortArray( $array, 	   1, 	7	 )		;, $inc=1, $delim = "|" )
    ; 8 = split and take r		 				.sortArray( $array,    'HD-',	8,  2)		; splits string at pos and returns what u want
    ; 9 = split and take l		 				.sortArray( $array,    'HD-',	9,  2)		; splits string at pos and returns what u want
    ;10 = replace				 				.sortArray( $array,	     '"',  10, '')
    ;11 = split and take complete				.sortArray( $array,    'HD-',  11	 )		; splits string at pos and returns all
    ;12 = stringleft comapare+sWS				.sortArray( $array,   "text",  12	 ) 		;, $inc=1, $delim = "|" )
    ;13 = get FUNC / ENDFUNC				 	.sortArray( $array,   "func",  13	 ) 		;, $inc=1, $delim = "|" )
    ;14 = search and mark						.sortArray( $array,   "text",  14	 ) 		;, $inc=1, $delim = "|" )
    ;15 = REMOVE #CS #CE				 		.sortArray( $array,   "#cs",  15	 ) 		;, $inc=1, $delim = "|" )
    ;16 = REMOVE DUPLICATES EFFECTIVE			.sortArray( $array,   default,  16	 ) 		;, $inc=1, $delim = "|" )
    ;17 = if stringleft -> replace				.sortArray( $array,   'leftstring',  17, 'search', 'replace' ) 		;, $delim = "|" )
    ;18 = if stringleft -> trimleft(->repl with).sortArray( $array,   'leftstring',  18,  count , $delim = "|" )
    ;19 = remove till no remain 1left/-1right	.sortArray( $array,   'leftstring',  19,  count ) 		;, $delim = "|" )
    ;20 = Convert FUNC->ENDFUNC into $oSelf OBJ .sortArray( $array,   'func',  20,  count ) 		;, $delim = "|" )
    Func _cleanArray($array, $cleanlen = 1, $mode = 0, $inc = 1, $delstring='', $DEBUG = False, $delim = "%%DELIM%%")
    	Local $r, $lor = StringLen($cleanlen), $rt, $c = 0, $x = 0, $y = 0, $z = 0, $f = 0, $inFUNC = 0, $crs='%%CR%%', $crr=@CR
    	If $mode <> 5 Then
    		For $i = 1 To UBound($array) - 1
    			If $mode = 0 Then
    				If Not (StringLen($array[$i]) <= $cleanlen) Then $r &= $array[$i] & $delim
    			ElseIf $mode = 1 Then
    				If (Not (StringCompare(StringLeft($array[$i], $lor), $cleanlen))) Then
    					$r &= $array[$i] & $delim
    				EndIf
    			ElseIf $mode = 2 Then
    				If (Not (StringCompare(StringRight($array[$i], $lor), $cleanlen))) Then
    					$r &= $array[$i] & $delim
    				EndIf
    			ElseIf $mode = 3 Then
    				If (StringCompare(StringLeft($array[$i], $lor), $cleanlen)) Then
    					$r &= $array[$i] & $delim
    				EndIf
    			ElseIf $mode = 4 Then
    				If (StringCompare(StringRight($array[$i], $lor), $cleanlen)) Then
    					$r &= $array[$i] & $delim
    				EndIf
    			ElseIf $mode = 6 Then
    				$r &= StringTrimLeft($array[$i], $cleanlen) & $delim
    			ElseIf $mode = 7 Then
    				$r &= StringTrimRight($array[$i], $cleanlen) & $delim
    			ElseIf $mode = 8 Then
    				$rt = StringSplit(StringLower($array[$i]), $cleanlen, 3)
    				If Not @error Then
    					$r &= $rt[$inc] & $delim
    				Else
    					$r &= $array[$i] & $delim
    				EndIf
    			ElseIf $mode = 9 Then
    				$rt = StringSplit($array[$i], $cleanlen, 3)
    				If Not @error Then
    					$r &= $rt[0] & $delim
    				Else
    					$r &= $array[$i] & $delim
    				EndIf
    			ElseIf $mode = 10 Then
    				$r &= StringReplace($array[$i], $cleanlen, $inc) & $delim
    			ElseIf $mode = 11 Then
    				$rt = StringSplit($array[$i], $cleanlen, 3)
    				$r &= StringTrimLeft($array[$i], StringLen($rt[0]) + 1) & $delim
    			ElseIf $mode = 12 Then
    				$rt = StringCompare(StringLeft(StringStripWS($array[$i], 8), $lor), $cleanlen)
    				If Not ($rt) Then
    					$r &= $array[$i] & $delim
    				EndIf
    			ElseIf $mode = 13 Then
    				If ($f = 0) Then
    					$rt = (Not (StringCompare(StringLeft(StringStripWS($array[$i], 8), $lor), $cleanlen)))
    					If $rt Then
    						$f = 1
    						$x = $i
    					EndIf
    				Else
    					$c += 1
    				EndIf
    				$rt = (Not (StringCompare(StringLeft(StringStripWS($array[$i], 8), StringLen('endfunc')), 'endfunc')))
    				If ($f = 1) Then
    					If $rt Then
    						$f = 0
    						$y = $x + $c
    					EndIf
    				EndIf
    				If ($y >= 1) Then
    					For $z = $x To $y
    						$r &= $array[$z] & $delim
    					Next
    					$y = 0
    					$c = 0
    				EndIf
    			ElseIf $mode = 14 Then
    				$rt = StringInStr($array[$i], $cleanlen)
    				If $rt Then $r &= $i & $delim
    			ElseIf $mode = 15 Then
    				If ($f = 0) Then
    					$rt = StringInStr($array[$i], $cleanlen, 1)
    					If $rt Then
    						$f = 1
    						$x = $i
    					EndIf
    				Else
    					$c += 1
    				EndIf
    				$rt = StringInStr($array[$i], '#ce', 1)
    				If ($f = 1) Then
    					If $rt Then
    						$f = 0
    						$y = $x + $c
    					EndIf
    				EndIf
    				If ($y >= 1) Then
    					For $z = $x To $y
    						$array[$z] = ""
    					Next
    					$y = 0
    					$c = 0
    				EndIf
    			ElseIf $mode = 16 Then
    				Local $count = 0, $truecount=0
    				$rt = $array
    				For $o = 1 To UBound($array) - 1
    					For $z = $o+1 To UBound($array) - 1
    						If ($array[$o] = $array[$z]) Then $count += 1
    						If $count = 1 Then
    							$array[$o] = ""
    							$count = 0
    						EndIf
    					Next
    					;$rt
    					$count = 0
    				Next
    				Return _cleanArray($array,3,0)
    			ElseIf $mode = 17 Then
    				If (StringLower(StringLeft($array[$i],$lor)) = StringLower($cleanlen)) Then
    					MsgBox(0,"",(StringLower(StringLeft($array[$i],$lor)) = StringLower($cleanlen)))
    					$r &= StringReplace($array[$i], $inc, $delstring) & $delim
    				Else
    					$r &= $array[$i] & $delim
    				EndIf
    			ElseIf $mode = 18 Then
    				If (StringLeft($array[$i],$lor) = $cleanlen) Then
    					$r &= $delstring & StringTrimLeft($array[$i],$inc) & $delim
    				Else
    					$r &= $array[$i] & $delim
    				EndIf
    			ElseIf $mode = 19 Then
    				Local $tmpstring=$array[$i],$chk = (StringInStr($tmpstring,$cleanlen,0,$inc))
    				If $chk Then
    					While $chk
    	If $DEBUG Then ConsoleWrite( '!>> .sortArray mode 19 - found:	' & $cleanlen & '	>> @ pos>>	' & $chk &@CR )
    	If $DEBUG Then ConsoleWrite( '!>> .string before trim: ' & $tmpstring &@CR )
    						If $inc > 0 Then
    							$tmpstring = StringRight($tmpstring,$chk-1) ; UNTESTET
    						ElseIf $inc < 0 Then
    							$tmpstring = StringLeft($tmpstring,$chk-1)
    						EndIf
    	If $DEBUG Then ConsoleWrite( '!>> .string after trim: ' & $tmpstring &@CR )
    						$chk = (StringInStr($tmpstring,$cleanlen,0,$inc))
    					WEnd
    					$r &= $tmpstring & ' &"' & $cleanlen & $delim
    				Else
    					$r &= $array[$i] & $delim
    				EndIf
    			ElseIf $mode = 20 Then
    				Local $chk1,$chk2,$leftdbgmsg="!] (inFUNC='"&$inFUNC&"') ('"&$i&"'/'"&UBound($array)-1&"') [>>]  "
    				$chk1 = StringInStr($array[$i],$cleanlen)
    				$chk2 = StringLeft(StringLower($array[$i]),StringLen('endfunc'))='endfunc'
    	If $DEBUG Then ConsoleWrite( $leftdbgmsg & "Func='"&$chk1&"' // Endfunc='"&$chk2&"'"&@CR )
    				If ($chk1 And ($inFUNC = 0)) Then
    					If $inFUNC = 1 Then	;you got an error in your script, i wont continue to parse that
    	If $DEBUG Then ConsoleWrite( $leftdbgmsg & "Error already in Function, at least 2x 'func' WITHOUT 'endfunc' [>>]	[EXITING]"&@CR )
    						Return -1
    					Else	;not in function yet, entering
    						$inFUNC = 1
    						$l		= StringTrimLeft($array[$i],StringLen($cleanlen)+1)
    						$l 		= StringLeft($l,StringInStr($l,"(",1,-1)-1)
    						$r 		= StringTrimLeft($array[$i],StringInStr($array[$i],"(",1,1)+1)
    						$len	= StringLen($r)
    	If $DEBUG Then ConsoleWrite( $leftdbgmsg & $array[$i] & "	[>>]	"  )
    						If $len >= 3 Then
    							$array[$i] = 'Func ' & $l & '($oSelf, '&$r&';'&$crs & '	#forceref $oSelf;' & $crs & '	With $oSelf;' & $crs
    							$varsinfunc=StringSplit($r,",",1)
    							$varsinfunc[$varsinfunc[0]] = StringTrimRight(StringStripWS($varsinfunc[$varsinfunc[0]],8),1)
    							;_ArrayDisplay($varsinfunc,"VARSINFUNC" & $varsinfunc[0])
    						Else
    							$array[$i] = 'Func ' & $l & '($oSelf)' &$crs 		& '	#forceref $oSelf;' & $crs &  '	With $oSelf;' & $crs
    						EndIf
    	If $DEBUG Then ConsoleWrite( $array[$i]&@CR )
    					EndIf
    				ElseIf ($chk2 And ($inFUNC = 1)) Then
    	If $DEBUG Then ConsoleWrite( $leftdbgmsg & "($chk2 And $inFUNC = 1)" & ($chk2 And ($inFUNC = 1)) &@CR&@CR )
    					If ($inFUNC = 1) Then 	;we did parse an function, so we have to complete it.
    						$array[$i] = $crs&'	EndWith;'&$crs&'Endfunc;'&$crs
    	If $DEBUG Then ConsoleWrite( $leftdbgmsg & "[endfunc] [found] searching for [func] again" &@CR )
    					Else ;im not in_function
    						;$array[$i] = 'Endfunc;'&$crs
    	If $DEBUG Then ConsoleWrite( $leftdbgmsg & "[!!error!!] [exiting a Function], [without entering], at [least 1x] ['endfunc'] [WITHOUT] ['func']" &@CR )
    					EndIf
    					$inFUNC = 0		; resetting $inFUNC so we can enter another func
    				ElseIf (($chk1 = 0) And ($chk2 = 0) And ($inFUNC=1)) Then ;waiting for endfunc and add lines
    	If $DEBUG Then ConsoleWrite( $leftdbgmsg & "found func -> waiting for endfunc" &@CR )
    					;$array[$i] = $array[$i]
    
    
    				ElseIf (($chk1 = 0) And ($chk2 = 0) And ($inFUNC=0)) Then ;waiting for endfunc and add lines
    	If $DEBUG Then ConsoleWrite( $leftdbgmsg & "nothing found yet, continue searching -> functions" &@CR )
    					;$array[$i] = $array[$i]
    				EndIf
    			EndIf
    		Next
    	Else
    		For $i = $cleanlen To UBound($array) - 1 Step $inc
    			$r &= $array[$i] & $delim
    		Next
    	EndIf
    	If StringInStr($r, $delim) Then
    		;MsgBox(0,1, $r)
    		$array = StringSplit(StringTrimRight($r, StringLen($delim)), $delim,1)
    	EndIf
    	If $mode = 15 Then $array = _cleanArray($array, 3, 0)
    	Return $array
    EndFunc   ;==>_cleanArray
    Alles anzeigen


    Eine BeispielDatei die ich umkonvertiert habe, das ist die WinHTTPConstants.au3


    Diese Datei wurde von 'AutoIT - Script-to-OOP-Converter' automatisch generiert.

    C
    ;================================================;
    ;|        AutoIT - Script-to-OOP-Converter        |;
    ;|   (c)2017 by busti_ownz@me.com                |;
    ;================================================;
    ;|     Converted with AutoIT "3.3.14.2"         |;
    ;| WinHttp_test.au3 [>>] WinHTTP_converted.au3 |;
    ;================================================;
    ;|   released on: autoit.de/codebot.de          |;
    ;================================================;
    
    
    
    
    ;=============] [Include [-once] / [AutoitObject.au3]] [>>]
    #include-once
    #include "AutoItObject.au3"
    ;=============] [Includes] [End] [<<]
    
    
    
    
    ;=============] [Variable-Declaration], [Object-Initialization] [>>]
    Global $oWinHTTP, $cWinHTTP ;
    _AutoIt_ObjectStartup() ;
    If @error Then Exit ; exit on error
    ;=============] [Variables-declared], [Object-Initialized] <<
    
    
    
    
    ;=============] [Creating-Object] [>>]
    $oWinHTTP = WinHTTP_obj()
    ;=============] [Created] [<<]
    
    
    
    
    
    
    ;=============] ;=============] [main()] ~ [{Code Here//use File as Include}] [>>]
    ;
    ;
    ;;=============] ;=============] [main()][end] [<<]
    
    
    
    
    
    
    ;=============] [Object-Definition] [>>]
    Func WinHTTP_obj()
        Global $WinHTTP_obj = _AutoitObject_Create() ; create obj
        Global $WinHTTP_class = WinHTTP_class() ;using class in every obj
    
    
    
    
        With $WinHTTP_obj
    
    
    
    
            ;============>>START>>[EXTRACTION] OF [FUNCTION VARIABLES]
            .AddProperty("File", $ELSCOPE_PUBLIC, '')
            .AddProperty("aPosts", $ELSCOPE_PUBLIC, '')
            .AddProperty("aLinks", $ELSCOPE_PUBLIC, '')
            .AddProperty("counter", $ELSCOPE_PUBLIC, '')
            .AddProperty("sHost", $ELSCOPE_PUBLIC, '')
            .AddProperty("ContentLength", $ELSCOPE_PUBLIC, '')
            .AddProperty("Content", $ELSCOPE_PUBLIC, '')
            .AddProperty("Link", $ELSCOPE_PUBLIC, '')
            .AddProperty("counter2", $ELSCOPE_PUBLIC, '')
            .AddProperty("HostsHtml", $ELSCOPE_PUBLIC, '')
            .AddProperty("winhttpCode", $ELSCOPE_PUBLIC, '')
            .AddProperty("winhttpCode&", $ELSCOPE_PUBLIC, '')
            .AddProperty("sReferrer", $ELSCOPE_PUBLIC, '')
            .AddProperty("aHosts[" & .cHost & "]", $ELSCOPE_PUBLIC, '')
            .AddProperty("aHosts[" & .cHost & "]", $ELSCOPE_PUBLIC, '')
            .AddProperty("hConnect", $ELSCOPE_PUBLIC, '')
            .AddProperty("sHTML", $ELSCOPE_PUBLIC, '')
            ;============>>END>>[EXTRACTION] OF [FUNCTION VARIABLES]
            ;============>>START>>[CREATE METHODS] -> [OUT OF FUNCS]
            .AddMethod ("test_new1", "test")
            .AddMethod ("_Arbeiten_new2", "_Arbeiten")
            .AddMethod ("_RefferalLink_new3", "_RefferalLink")
            .AddMethod ("_Host_new4", "_Host")
            .AddMethod ("_Get_new5", "_Get")
            .AddMethod ("_Post_new6", "_Post")
            .AddMethod ("_FileErstellen_new7", "_FileErstellen")
            .AddMethod ("_ende_new8", "_ende")
            ;============>>END>>[CREATE METHODS] -> [OUT OF FUNCS]
        EndWith
    
    
    
    
        Return $WinHTTP_obj
    EndFunc   ;==>WinHTTP_obj
    ;=============] [Class-Definition] [>>]
    Func WinHTTP_class() ;class-name
        Local $WinHTTP = _AutoItObject_Class() ;create_class
        With $WinHTTP
    
    
    
    
            ;============>>START>>[GLOBAL/CONST VARIABLES] -> [PUBLIC/PRIVATE PROPERTYS]
            .AddProperty("test2", $ELSCOPE_PUBLIC, 2)
            .AddProperty("x", $ELSCOPE_PUBLIC, '3333')
            .AddProperty("yamama", $ELSCOPE_PUBLIC, "testz0r")
            .AddProperty("yodaddy", $ELSCOPE_READONLY, 'tiiiiieeek12345')
            .AddProperty("doingsome", $ELSCOPE_PUBLIC, "AWESOME TESTI" & "NG" & $oSelf.yodaddy)
            .AddProperty("doingsome2", $ELSCOPE_READONLY, "AWESOME CONST    TESTI" & "NG" & $oSelf.yodaddy)
            .AddProperty("INTERNET_DEFAULT_PORT", $ELSCOPE_READONLY, 0)
            .AddProperty("INTERNET_DEFAULT_HTTP_PORT", $ELSCOPE_READONLY, 80)
            .AddProperty("INTERNET_DEFAULT_HTTPS_PORT", $ELSCOPE_READONLY, 443)
            .AddProperty("WINHTTP_FLAG_ASYNC", $ELSCOPE_READONLY, 0x10000000)
            .AddProperty("WINHTTP_FLAG_ESCAPE_PERCENT", $ELSCOPE_READONLY, 0x00000004)
            .AddProperty("WINHTTP_FLAG_NULL_CODEPAGE", $ELSCOPE_READONLY, 0x00000008)
            .AddProperty("WINHTTP_FLAG_ESCAPE_DISABLE", $ELSCOPE_READONLY, 0x00000040)
            .AddProperty("WINHTTP_FLAG_ESCAPE_DISABLE_QUERY", $ELSCOPE_READONLY, 0x00000080)
            .AddProperty("WINHTTP_FLAG_BYPASS_PROXY_CACHE", $ELSCOPE_READONLY, 0x00000100)
            .AddProperty("WINHTTP_FLAG_REFRESH", $ELSCOPE_READONLY, $oSe)
            .AddProperty("WINHTTP_FLAG_SECURE", $ELSCOPE_READONLY, 0x00800000)
            .AddProperty("WINHTTP_ACCESS_TYPE_DEFAULT_PROXY", $ELSCOPE_READONLY, 0)
            .AddProperty("WINHTTP_ACCESS_TYPE_NO_PROXY", $ELSCOPE_READONLY, 1)
            .AddProperty("WINHTTP_ACCESS_TYPE_NAMED_PROXY", $ELSCOPE_READONLY, 3)
            .AddProperty("WINHTTP_NO_PROXY_NAME", $ELSCOPE_READONLY, "")
            .AddProperty("WINHTTP_NO_PROXY_BYPASS", $ELSCOPE_READONLY, "")
            .AddProperty("WINHTTP_NO_REFERER", $ELSCOPE_READONLY, "")
            .AddProperty("WINHTTP_DEFAULT_ACCEPT_TYPES", $ELSCOPE_READONLY, 0)
            .AddProperty("WINHTTP_NO_ADDITIONAL_HEADERS", $ELSCOPE_READONLY, "")
            .AddProperty("WINHTTP_NO_REQUEST_DATA", $ELSCOPE_READONLY, "")
            .AddProperty("WINHTTP_HEADER_NAME_BY_INDEX", $ELSCOPE_READONLY, "")
            .AddProperty("WINHTTP_NO_OUTPUT_BUFFER", $ELSCOPE_READONLY, 0)
            .AddProperty("WINHTTP_NO_HEADER_INDEX", $ELSCOPE_READONLY, 0)
            .AddProperty("WINHTTP_ADDREQ_INDEX_MASK", $ELSCOPE_READONLY, 0x0000FFFF)
            .AddProperty("WINHTTP_ADDREQ_FLAGS_MASK", $ELSCOPE_READONLY, 0xFFFF0000)
            .AddProperty("WINHTTP_ADDREQ_FLAG_ADD_IF_NEW", $ELSCOPE_READONLY, 0x10000000)
            .AddProperty("WINHTTP_ADDREQ_FLAG_ADD", $ELSCOPE_READONLY, 0x20000000)
            .AddProperty("WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA", $ELSCOPE_READONLY, 0x40000000)
            .AddProperty("WINHTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON", $ELSCOPE_READONLY, 0x01000000)
            .AddProperty("WINHTTP_ADDREQ_FLAG_COALESCE", $ELSCOPE_READONLY, $oSe)
            .AddProperty("WINHTTP_ADDREQ_FLAG_REPLACE", $ELSCOPE_READONLY, 0x80000000)
            .AddProperty("WINHTTP_IGNORE_REQUEST_TOTAL_LENGTH", $ELSCOPE_READONLY, 0)
            .AddProperty("WINHTTP_OPTION_CALLBACK", $ELSCOPE_READONLY, 1)
            .AddProperty("WINHTTP_FIRST_OPTION", $ELSCOPE_READONLY, $oSelf.)
            .AddProperty("WINHTTP_OPTION_RESOLVE_TIMEOUT", $ELSCOPE_READONLY, 2)
            .AddProperty("WINHTTP_OPTION_CONNECT_TIMEOUT", $ELSCOPE_READONLY, 3)
            .AddProperty("WINHTTP_OPTION_CONNECT_RETRIES", $ELSCOPE_READONLY, 4)
            .AddProperty("WINHTTP_OPTION_SEND_TIMEOUT", $ELSCOPE_READONLY, 5)
            .AddProperty("WINHTTP_OPTION_RECEIVE_TIMEOUT", $ELSCOPE_READONLY, 6)
            .AddProperty("WINHTTP_OPTION_RECEIVE_RESPONSE_TIMEOUT", $ELSCOPE_READONLY, 7)
            .AddProperty("WINHTTP_OPTION_HANDLE_TYPE", $ELSCOPE_READONLY, 9)
            .AddProperty("WINHTTP_OPTION_READ_BUFFER_SIZE", $ELSCOPE_READONLY, 12)
            .AddProperty("WINHTTP_OPTION_WRITE_BUFFER_SIZE", $ELSCOPE_READONLY, 13)
            .AddProperty("WINHTTP_OPTION_PARENT_HANDLE", $ELSCOPE_READONLY, 21)
            .AddProperty("WINHTTP_OPTION_EXTENDED_ERROR", $ELSCOPE_READONLY, 24)
            .AddProperty("WINHTTP_OPTION_SECURITY_FLAGS", $ELSCOPE_READONLY, 31)
            .AddProperty("WINHTTP_OPTION_SECURITY_CERTIFICATE_STRUCT", $ELSCOPE_READONLY, 32)
            .AddProperty("WINHTTP_OPTION_URL", $ELSCOPE_READONLY, 34)
            .AddProperty("WINHTTP_OPTION_SECURITY_KEY_BITNESS", $ELSCOPE_READONLY, 36)
            .AddProperty("WINHTTP_OPTION_PROXY", $ELSCOPE_READONLY, 38)
            .AddProperty("WINHTTP_OPTION_USER_AGENT", $ELSCOPE_READONLY, 41)
            .AddProperty("WINHTTP_OPTION_CONTEXT_VALUE", $ELSCOPE_READONLY, 45)
            .AddProperty("WINHTTP_OPTION_CLIENT_CERT_CONTEXT", $ELSCOPE_READONLY, 47)
            .AddProperty("WINHTTP_OPTION_REQUEST_PRIORITY", $ELSCOPE_READONLY, 58)
            .AddProperty("WINHTTP_OPTION_HTTP_VERSION", $ELSCOPE_READONLY, 59)
            .AddProperty("WINHTTP_OPTION_DISABLE_FEATURE", $ELSCOPE_READONLY, 63)
            .AddProperty("WINHTTP_OPTION_CODEPAGE", $ELSCOPE_READONLY, 68)
            .AddProperty("WINHTTP_OPTION_MAX_CONNS_PER_SERVER", $ELSCOPE_READONLY, 73)
            .AddProperty("WINHTTP_OPTION_MAX_CONNS_PER_1_0_SERVER", $ELSCOPE_READONLY, 74)
            .AddProperty("WINHTTP_OPTION_AUTOLOGON_POLICY", $ELSCOPE_READONLY, 77)
            .AddProperty("WINHTTP_OPTION_SERVER_CERT_CONTEXT", $ELSCOPE_READONLY, 78)
            .AddProperty("WINHTTP_OPTION_ENABLE_FEATURE", $ELSCOPE_READONLY, 79)
            .AddProperty("WINHTTP_OPTION_WORKER_THREAD_COUNT", $ELSCOPE_READONLY, 80)
            .AddProperty("WINHTTP_OPTION_PASSPORT_COBRANDING_TEXT", $ELSCOPE_READONLY, 81)
            .AddProperty("WINHTTP_OPTION_PASSPORT_COBRANDING_URL", $ELSCOPE_READONLY, 82)
            .AddProperty("WINHTTP_OPTION_CONFIGURE_PASSPORT_AUTH", $ELSCOPE_READONLY, 83)
            .AddProperty("WINHTTP_OPTION_SECURE_PROTOCOLS", $ELSCOPE_READONLY, 84)
            .AddProperty("WINHTTP_OPTION_ENABLETRACING", $ELSCOPE_READONLY, 85)
            .AddProperty("WINHTTP_OPTION_PASSPORT_SIGN_OUT", $ELSCOPE_READONLY, 86)
            .AddProperty("WINHTTP_OPTION_PASSPORT_RETURN_URL", $ELSCOPE_READONLY, 87)
            .AddProperty("WINHTTP_OPTION_REDIRECT_POLICY", $ELSCOPE_READONLY, 88)
            .AddProperty("WINHTTP_OPTION_MAX_HTTP_AUTOMATIC_REDIRECTS", $ELSCOPE_READONLY, 89)
            .AddProperty("WINHTTP_OPTION_MAX_HTTP_STATUS_CONTINUE", $ELSCOPE_READONLY, 90)
            .AddProperty("WINHTTP_OPTION_MAX_RESPONSE_HEADER_SIZE", $ELSCOPE_READONLY, 91)
            .AddProperty("WINHTTP_OPTION_MAX_RESPONSE_DRAIN_SIZE", $ELSCOPE_READONLY, 92)
            .AddProperty("WINHTTP_OPTION_CONNECTION_INFO", $ELSCOPE_READONLY, 93)
            .AddProperty("WINHTTP_OPTION_CLIENT_CERT_ISSUER_LIST", $ELSCOPE_READONLY, 94)
            .AddProperty("WINHTTP_OPTION_SPN", $ELSCOPE_READONLY, 96)
            .AddProperty("WINHTTP_OPTION__PROXY_CREDS", $ELSCOPE_READONLY, 97)
            .AddProperty("WINHTTP_OPTION__SERVER_CREDS", $ELSCOPE_READONLY, 98)
            .AddProperty("WINHTTP_OPTION_UNLOAD_NOTIFY_EVENT", $ELSCOPE_READONLY, 99)
            .AddProperty("WINHTTP_OPTION_REJECT_USERPWD_IN_URL", $ELSCOPE_READONLY, 100)
            .AddProperty("WINHTTP_OPTION_USE__SERVER_CREDENTIALS", $ELSCOPE_READONLY, 101)
            .AddProperty("WINHTTP_OPTION_RECEIVE_PROXY_CONNECT_RESPONSE", $ELSCOPE_READONLY, 103)
            .AddProperty("WINHTTP_OPTION_IS_PROXY_CONNECT_RESPONSE", $ELSCOPE_READONLY, 104)
            .AddProperty("WINHTTP_OPTION_SERVER_SPN_USED", $ELSCOPE_READONLY, 106)
            .AddProperty("WINHTTP_OPTION_PROXY_SPN_USED", $ELSCOPE_READONLY, 107)
            .AddProperty("WINHTTP_OPTION_SERVER_CBT", $ELSCOPE_READONLY, 108)
            .AddProperty("WINHTTP_OPTION_UNSAFE_HEADER_PARSING", $ELSCOPE_READONLY, 110)
            .AddProperty("WINHTTP_OPTION_DECOMPRESSION", $ELSCOPE_READONLY, 118)
            .AddProperty("WINHTTP_LAST_OPTION", $ELSCOPE_READONLY, $oSelf.WINHT)
            .AddProperty("WINHTTP_OPTION_USERNAME", $ELSCOPE_READONLY, 0x1000)
            .AddProperty("WINHTTP_OPTION_PASSWORD", $ELSCOPE_READONLY, 0x1001)
            .AddProperty("WINHTTP_OPTION_PROXY_USERNAME", $ELSCOPE_READONLY, 0x1002)
            .AddProperty("WINHTTP_OPTION_PROXY_PASSWORD", $ELSCOPE_READONLY, 0x1003)
            .AddProperty("WINHTTP_CONNS_PER_SERVER_UNLIMITED", $ELSCOPE_READONLY, 0xFFFFFFFF)
            .AddProperty("WINHTTP_DECOMPRESSION_FLAG_GZIP", $ELSCOPE_READONLY, 0x00000001)
            .AddProperty("WINHTTP_DECOMPRESSION_FLAG_DEFLATE", $ELSCOPE_READONLY, 0x00000002)
            .AddProperty("WINHTTP_DECOMPRESSION_FLAG_ALL", $ELSCOPE_READONLY, 0x00000003)
            .AddProperty("WINHTTP_AUTOLOGON_SECURITY_LEVEL_MEDIUM", $ELSCOPE_READONLY, 0)
            .AddProperty("WINHTTP_AUTOLOGON_SECURITY_LEVEL_LOW", $ELSCOPE_READONLY, 1)
            .AddProperty("WINHTTP_AUTOLOGON_SECURITY_LEVEL_HIGH", $ELSCOPE_READONLY, 2)
            .AddProperty("WINHTTP_AUTOLOGON_SECURITY_LEVEL_DEFAULT", $ELSCOPE_READONLY, $oSel)
            .AddProperty("WINHTTP_OPTION_REDIRECT_POLICY_NEVER", $ELSCOPE_READONLY, 0)
            .AddProperty("WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP", $ELSCOPE_READONLY, 1)
            .AddProperty("WINHTTP_OPTION_REDIRECT_POLICY_ALWAYS", $ELSCOPE_READONLY, 2)
            .AddProperty("WINHTTP_OPTION_REDIRECT_POLICY_LAST", $ELSCOPE_READONLY, $oSel)
            .AddProperty("WINHTTP_OPTION_REDIRECT_POLICY_DEFAULT", $ELSCOPE_READONLY, $oS)
            .AddProperty("WINHTTP_DISABLE_PASSPORT_AUTH", $ELSCOPE_READONLY, 0x00000000)
            .AddProperty("WINHTTP_ENABLE_PASSPORT_AUTH", $ELSCOPE_READONLY, 0x10000000)
            .AddProperty("WINHTTP_DISABLE_PASSPORT_KEYRING", $ELSCOPE_READONLY, 0x20000000)
            .AddProperty("WINHTTP_ENABLE_PASSPORT_KEYRING", $ELSCOPE_READONLY, 0x40000000)
            .AddProperty("WINHTTP_DISABLE_COOKIES", $ELSCOPE_READONLY, 0x00000001)
            .AddProperty("WINHTTP_DISABLE_REDIRECTS", $ELSCOPE_READONLY, 0x00000002)
            .AddProperty("WINHTTP_DISABLE_AUTHENTICATION", $ELSCOPE_READONLY, 0x00000004)
            .AddProperty("WINHTTP_DISABLE_KEEP_ALIVE", $ELSCOPE_READONLY, 0x00000008)
            .AddProperty("WINHTTP_ENABLE_SSL_REVOCATION", $ELSCOPE_READONLY, 0x00000001)
            .AddProperty("WINHTTP_ENABLE_SSL_REVERT_IMPERSONATION", $ELSCOPE_READONLY, 0x00000002)
            .AddProperty("WINHTTP_DISABLE_SPN_SERVER_PORT", $ELSCOPE_READONLY, 0x00000000)
            .AddProperty("WINHTTP_ENABLE_SPN_SERVER_PORT", $ELSCOPE_READONLY, 0x00000001)
            .AddProperty("WINHTTP_OPTION_SPN_MASK", $ELSCOPE_READONLY, $oS)
            .AddProperty("WINHTTP_ERROR_BASE", $ELSCOPE_READONLY, 12000)
            .AddProperty("ERROR_WINHTTP_OUT_OF_HANDLES", $ELSCOPE_READONLY, 12001)
            .AddProperty("ERROR_WINHTTP_TIMEOUT", $ELSCOPE_READONLY, 12002)
            .AddProperty("ERROR_WINHTTP_INTERNAL_ERROR", $ELSCOPE_READONLY, 12004)
            .AddProperty("ERROR_WINHTTP_INVALID_URL", $ELSCOPE_READONLY, 12005)
            .AddProperty("ERROR_WINHTTP_UNRECOGNIZED_SCHEME", $ELSCOPE_READONLY, 12006)
            .AddProperty("ERROR_WINHTTP_NAME_NOT_RESOLVED", $ELSCOPE_READONLY, 12007)
            .AddProperty("ERROR_WINHTTP_INVALID_OPTION", $ELSCOPE_READONLY, 12009)
            .AddProperty("ERROR_WINHTTP_OPTION_NOT_SETTABLE", $ELSCOPE_READONLY, 12011)
            .AddProperty("ERROR_WINHTTP_SHUTDOWN", $ELSCOPE_READONLY, 12012)
            .AddProperty("ERROR_WINHTTP_LOGIN_FAILURE", $ELSCOPE_READONLY, 12015)
            .AddProperty("ERROR_WINHTTP_OPERATION_CANCELLED", $ELSCOPE_READONLY, 12017)
            .AddProperty("ERROR_WINHTTP_INCORRECT_HANDLE_TYPE", $ELSCOPE_READONLY, 12018)
            .AddProperty("ERROR_WINHTTP_INCORRECT_HANDLE_STATE", $ELSCOPE_READONLY, 12019)
            .AddProperty("ERROR_WINHTTP_CANNOT_CONNECT", $ELSCOPE_READONLY, 12029)
            .AddProperty("ERROR_WINHTTP_CONNECTION_ERROR", $ELSCOPE_READONLY, 12030)
            .AddProperty("ERROR_WINHTTP_RESEND_REQUEST", $ELSCOPE_READONLY, 12032)
            .AddProperty("ERROR_WINHTTP_SECURE_CERT_DATE_INVALID", $ELSCOPE_READONLY, 12037)
            .AddProperty("ERROR_WINHTTP_SECURE_CERT_CN_INVALID", $ELSCOPE_READONLY, 12038)
            .AddProperty("ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED", $ELSCOPE_READONLY, 12044)
            .AddProperty("ERROR_WINHTTP_SECURE_INVALID_CA", $ELSCOPE_READONLY, 12045)
            .AddProperty("ERROR_WINHTTP_SECURE_CERT_REV_FAILED", $ELSCOPE_READONLY, 12057)
            .AddProperty("ERROR_WINHTTP_CANNOT_CALL_BEFORE_OPEN", $ELSCOPE_READONLY, 12100)
            .AddProperty("ERROR_WINHTTP_CANNOT_CALL_BEFORE_SEND", $ELSCOPE_READONLY, 12101)
            .AddProperty("ERROR_WINHTTP_CANNOT_CALL_AFTER_SEND", $ELSCOPE_READONLY, 12102)
            .AddProperty("ERROR_WINHTTP_CANNOT_CALL_AFTER_OPEN", $ELSCOPE_READONLY, 12103)
            .AddProperty("ERROR_WINHTTP_HEADER_NOT_FOUND", $ELSCOPE_READONLY, 12150)
            .AddProperty("ERROR_WINHTTP_INVALID_SERVER_RESPONSE", $ELSCOPE_READONLY, 12152)
            .AddProperty("ERROR_WINHTTP_INVALID_HEADER", $ELSCOPE_READONLY, 12153)
            .AddProperty("ERROR_WINHTTP_INVALID_QUERY_REQUEST", $ELSCOPE_READONLY, 12154)
            .AddProperty("ERROR_WINHTTP_HEADER_ALREADY_EXISTS", $ELSCOPE_READONLY, 12155)
            .AddProperty("ERROR_WINHTTP_REDIRECT_FAILED", $ELSCOPE_READONLY, 12156)
            .AddProperty("ERROR_WINHTTP_SECURE_CHANNEL_ERROR", $ELSCOPE_READONLY, 12157)
            .AddProperty("ERROR_WINHTTP_BAD_AUTO_PROXY_SCRIPT", $ELSCOPE_READONLY, 12166)
            .AddProperty("ERROR_WINHTTP_UNABLE_TO_DOWNLOAD_SCRIPT", $ELSCOPE_READONLY, 12167)
            .AddProperty("ERROR_WINHTTP_SECURE_INVALID_CERT", $ELSCOPE_READONLY, 12169)
            .AddProperty("ERROR_WINHTTP_SECURE_CERT_REVOKED", $ELSCOPE_READONLY, 12170)
            .AddProperty("ERROR_WINHTTP_NOT_INITIALIZED", $ELSCOPE_READONLY, 12172)
            .AddProperty("ERROR_WINHTTP_SECURE_FAILURE", $ELSCOPE_READONLY, 12175)
            .AddProperty("ERROR_WINHTTP_AUTO_PROXY_SERVICE_ERROR", $ELSCOPE_READONLY, 12178)
            .AddProperty("ERROR_WINHTTP_SECURE_CERT_WRONG_USAGE", $ELSCOPE_READONLY, 12179)
            .AddProperty("ERROR_WINHTTP_AUTODETECTION_FAILED", $ELSCOPE_READONLY, 12180)
            .AddProperty("ERROR_WINHTTP_HEADER_COUNT_EXCEEDED", $ELSCOPE_READONLY, 12181)
            .AddProperty("ERROR_WINHTTP_HEADER_SIZE_OVERFLOW", $ELSCOPE_READONLY, 12182)
            .AddProperty("ERROR_WINHTTP_CHUNKED_ENCODING_HEADER_SIZE_OVERFLOW", $ELSCOPE_READONLY, 12183)
            .AddProperty("ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW", $ELSCOPE_READONLY, 12184)
            .AddProperty("ERROR_WINHTTP_CLIENT_CERT_NO_PRIVATE_KEY", $ELSCOPE_READONLY, 12185)
            .AddProperty("ERROR_WINHTTP_CLIENT_CERT_NO_ACCESS_PRIVATE_KEY", $ELSCOPE_READONLY, 12186)
            .AddProperty("WINHTTP_ERROR_LAST", $ELSCOPE_READONLY, 12186)
            .AddProperty("WINHTTP_QUERY_MIME_VERSION", $ELSCOPE_READONLY, 0)
            .AddProperty("WINHTTP_QUERY_CONTENT_TYPE", $ELSCOPE_READONLY, 1)
            .AddProperty("WINHTTP_QUERY_CONTENT_TRANSFER_ENCODING", $ELSCOPE_READONLY, 2)
            .AddProperty("WINHTTP_QUERY_CONTENT_ID", $ELSCOPE_READONLY, 3)
            .AddProperty("WINHTTP_QUERY_CONTENT_DESCRIPTION", $ELSCOPE_READONLY, 4)
            .AddProperty("WINHTTP_QUERY_CONTENT_LENGTH", $ELSCOPE_READONLY, 5)
            .AddProperty("WINHTTP_QUERY_CONTENT_LANGUAGE", $ELSCOPE_READONLY, 6)
            .AddProperty("WINHTTP_QUERY_ALLOW", $ELSCOPE_READONLY, 7)
            .AddProperty("WINHTTP_QUERY_PUBLIC", $ELSCOPE_READONLY, 8)
            .AddProperty("WINHTTP_QUERY_DATE", $ELSCOPE_READONLY, 9)
            .AddProperty("WINHTTP_QUERY_EXPIRES", $ELSCOPE_READONLY, 10)
            .AddProperty("WINHTTP_QUERY_LAST_MODIFIED", $ELSCOPE_READONLY, 11)
            .AddProperty("WINHTTP_QUERY_MESSAGE_ID", $ELSCOPE_READONLY, 12)
            .AddProperty("WINHTTP_QUERY_URI", $ELSCOPE_READONLY, 13)
            .AddProperty("WINHTTP_QUERY_DERIVED_FROM", $ELSCOPE_READONLY, 14)
            .AddProperty("WINHTTP_QUERY_COST", $ELSCOPE_READONLY, 15)
            .AddProperty("WINHTTP_QUERY_LINK", $ELSCOPE_READONLY, 16)
            .AddProperty("WINHTTP_QUERY_PRAGMA", $ELSCOPE_READONLY, 17)
            .AddProperty("WINHTTP_QUERY_VERSION", $ELSCOPE_READONLY, 18)
            .AddProperty("WINHTTP_QUERY_STATUS_CODE", $ELSCOPE_READONLY, 19)
            .AddProperty("WINHTTP_QUERY_STATUS_TEXT", $ELSCOPE_READONLY, 20)
            .AddProperty("WINHTTP_QUERY_RAW_HEADERS", $ELSCOPE_READONLY, 21)
            .AddProperty("WINHTTP_QUERY_RAW_HEADERS_CRLF", $ELSCOPE_READONLY, 22)
            .AddProperty("WINHTTP_QUERY_CONNECTION", $ELSCOPE_READONLY, 23)
            .AddProperty("WINHTTP_QUERY_ACCEPT", $ELSCOPE_READONLY, 24)
            .AddProperty("WINHTTP_QUERY_ACCEPT_CHARSET", $ELSCOPE_READONLY, 25)
            .AddProperty("WINHTTP_QUERY_ACCEPT_ENCODING", $ELSCOPE_READONLY, 26)
            .AddProperty("WINHTTP_QUERY_ACCEPT_LANGUAGE", $ELSCOPE_READONLY, 27)
            .AddProperty("WINHTTP_QUERY_AUTHORIZATION", $ELSCOPE_READONLY, 28)
            .AddProperty("WINHTTP_QUERY_CONTENT_ENCODING", $ELSCOPE_READONLY, 29)
            .AddProperty("WINHTTP_QUERY_FORWARDED", $ELSCOPE_READONLY, 30)
            .AddProperty("WINHTTP_QUERY_FROM", $ELSCOPE_READONLY, 31)
            .AddProperty("WINHTTP_QUERY_IF_MODIFIED_SINCE", $ELSCOPE_READONLY, 32)
            .AddProperty("WINHTTP_QUERY_LOCATION", $ELSCOPE_READONLY, 33)
            .AddProperty("WINHTTP_QUERY_ORIG_URI", $ELSCOPE_READONLY, 34)
            .AddProperty("WINHTTP_QUERY_REFERER", $ELSCOPE_READONLY, 35)
            .AddProperty("WINHTTP_QUERY_RETRY_AFTER", $ELSCOPE_READONLY, 36)
            .AddProperty("WINHTTP_QUERY_SERVER", $ELSCOPE_READONLY, 37)
            .AddProperty("WINHTTP_QUERY_TITLE", $ELSCOPE_READONLY, 38)
            .AddProperty("WINHTTP_QUERY_USER_AGENT", $ELSCOPE_READONLY, 39)
            .AddProperty("WINHTTP_QUERY_WWW_AUTHENTICATE", $ELSCOPE_READONLY, 40)
            .AddProperty("WINHTTP_QUERY_PROXY_AUTHENTICATE", $ELSCOPE_READONLY, 41)
            .AddProperty("WINHTTP_QUERY_ACCEPT_RANGES", $ELSCOPE_READONLY, 42)
            .AddProperty("WINHTTP_QUERY_SET_COOKIE", $ELSCOPE_READONLY, 43)
            .AddProperty("WINHTTP_QUERY_COOKIE", $ELSCOPE_READONLY, 44)
            .AddProperty("WINHTTP_QUERY_REQUEST_METHOD", $ELSCOPE_READONLY, 45)
            .AddProperty("WINHTTP_QUERY_REFRESH", $ELSCOPE_READONLY, 46)
            .AddProperty("WINHTTP_QUERY_CONTENT_DISPOSITION", $ELSCOPE_READONLY, 47)
            .AddProperty("WINHTTP_QUERY_AGE", $ELSCOPE_READONLY, 48)
            .AddProperty("WINHTTP_QUERY_CACHE_CONTROL", $ELSCOPE_READONLY, 49)
            .AddProperty("WINHTTP_QUERY_CONTENT_BASE", $ELSCOPE_READONLY, 50)
            .AddProperty("WINHTTP_QUERY_CONTENT_LOCATION", $ELSCOPE_READONLY, 51)
            .AddProperty("WINHTTP_QUERY_CONTENT_MD5", $ELSCOPE_READONLY, 52)
            .AddProperty("WINHTTP_QUERY_CONTENT_RANGE", $ELSCOPE_READONLY, 53)
            .AddProperty("WINHTTP_QUERY_ETAG", $ELSCOPE_READONLY, 54)
            .AddProperty("WINHTTP_QUERY_HOST", $ELSCOPE_READONLY, 55)
            .AddProperty("WINHTTP_QUERY_IF_MATCH", $ELSCOPE_READONLY, 56)
            .AddProperty("WINHTTP_QUERY_IF_NONE_MATCH", $ELSCOPE_READONLY, 57)
            .AddProperty("WINHTTP_QUERY_IF_RANGE", $ELSCOPE_READONLY, 58)
            .AddProperty("WINHTTP_QUERY_IF_UNMODIFIED_SINCE", $ELSCOPE_READONLY, 59)
            .AddProperty("WINHTTP_QUERY_MAX_FORWARDS", $ELSCOPE_READONLY, 60)
            .AddProperty("WINHTTP_QUERY_PROXY_AUTHORIZATION", $ELSCOPE_READONLY, 61)
            .AddProperty("WINHTTP_QUERY_RANGE", $ELSCOPE_READONLY, 62)
            .AddProperty("WINHTTP_QUERY_TRANSFER_ENCODING", $ELSCOPE_READONLY, 63)
            .AddProperty("WINHTTP_QUERY_UPGRADE", $ELSCOPE_READONLY, 64)
            .AddProperty("WINHTTP_QUERY_VARY", $ELSCOPE_READONLY, 65)
            .AddProperty("WINHTTP_QUERY_VIA", $ELSCOPE_READONLY, 66)
            .AddProperty("WINHTTP_QUERY_WARNING", $ELSCOPE_READONLY, 67)
            .AddProperty("WINHTTP_QUERY_EXPECT", $ELSCOPE_READONLY, 68)
            .AddProperty("WINHTTP_QUERY_PROXY_CONNECTION", $ELSCOPE_READONLY, 69)
            .AddProperty("WINHTTP_QUERY_UNLESS_MODIFIED_SINCE", $ELSCOPE_READONLY, 70)
            .AddProperty("WINHTTP_QUERY_PROXY_SUPPORT", $ELSCOPE_READONLY, 75)
            .AddProperty("WINHTTP_QUERY_AUTHENTICATION_INFO", $ELSCOPE_READONLY, 76)
            .AddProperty("WINHTTP_QUERY_PASSPORT_URLS", $ELSCOPE_READONLY, 77)
            .AddProperty("WINHTTP_QUERY_PASSPORT_CONFIG", $ELSCOPE_READONLY, 78)
            .AddProperty("WINHTTP_QUERY_MAX", $ELSCOPE_READONLY, 78)
            .AddProperty("WINHTTP_QUERY_CUSTOM", $ELSCOPE_READONLY, 65535)
            .AddProperty("WINHTTP_QUERY_FLAG_REQUEST_HEADERS", $ELSCOPE_READONLY, 0x80000000)
            .AddProperty("WINHTTP_QUERY_FLAG_SYSTEMTIME", $ELSCOPE_READONLY, 0x40000000)
            .AddProperty("WINHTTP_QUERY_FLAG_NUMBER", $ELSCOPE_READONLY, 0x20000000)
            .AddProperty("WINHTTP_CALLBACK_STATUS_RESOLVING_NAME", $ELSCOPE_READONLY, 0x00000001)
            .AddProperty("WINHTTP_CALLBACK_STATUS_NAME_RESOLVED", $ELSCOPE_READONLY, 0x00000002)
            .AddProperty("WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER", $ELSCOPE_READONLY, 0x00000004)
            .AddProperty("WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER", $ELSCOPE_READONLY, 0x00000008)
            .AddProperty("WINHTTP_CALLBACK_STATUS_SENDING_REQUEST", $ELSCOPE_READONLY, 0x00000010)
            .AddProperty("WINHTTP_CALLBACK_STATUS_REQUEST_SENT", $ELSCOPE_READONLY, 0x00000020)
            .AddProperty("WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE", $ELSCOPE_READONLY, 0x00000040)
            .AddProperty("WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED", $ELSCOPE_READONLY, 0x00000080)
            .AddProperty("WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION", $ELSCOPE_READONLY, 0x00000100)
            .AddProperty("WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED", $ELSCOPE_READONLY, 0x00000200)
            .AddProperty("WINHTTP_CALLBACK_STATUS_HANDLE_CREATED", $ELSCOPE_READONLY, 0x00000400)
            .AddProperty("WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING", $ELSCOPE_READONLY, 0x00000800)
            .AddProperty("WINHTTP_CALLBACK_STATUS_DETECTING_PROXY", $ELSCOPE_READONLY, 0x00001000)
            .AddProperty("WINHTTP_CALLBACK_STATUS_REDIRECT", $ELSCOPE_READONLY, 0x00004000)
            .AddProperty("WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE", $ELSCOPE_READONLY, 0x00008000)
            .AddProperty("WINHTTP_CALLBACK_STATUS_SECURE_FAILURE", $ELSCOPE_READONLY, 0x00010000)
            .AddProperty("WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE", $ELSCOPE_READONLY, 0x00020000)
            .AddProperty("WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE", $ELSCOPE_READONLY, 0x00040000)
            .AddProperty("WINHTTP_CALLBACK_STATUS_READ_COMPLETE", $ELSCOPE_READONLY, 0x00080000)
            .AddProperty("WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE", $ELSCOPE_READONLY, 0x00100000)
            .AddProperty("WINHTTP_CALLBACK_STATUS_REQUEST_ERROR", $ELSCOPE_READONLY, 0x00200000)
            .AddProperty("WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE", $ELSCOPE_READONLY, 0x00400000)
            .AddProperty("WINHTTP_CALLBACK_FLAG_RESOLVE_NAME", $ELSCOPE_READONLY, 0x00000003)
            .AddProperty("WINHTTP_CALLBACK_FLAG_CONNECT_TO_SERVER", $ELSCOPE_READONLY, 0x0000000C)
            .AddProperty("WINHTTP_CALLBACK_FLAG_SEND_REQUEST", $ELSCOPE_READONLY, 0x00000030)
            .AddProperty("WINHTTP_CALLBACK_FLAG_RECEIVE_RESPONSE", $ELSCOPE_READONLY, 0x000000C0)
            .AddProperty("WINHTTP_CALLBACK_FLAG_CLOSE_CONNECTION", $ELSCOPE_READONLY, 0x00000300)
            .AddProperty("WINHTTP_CALLBACK_FLAG_HANDLES", $ELSCOPE_READONLY, 0x00000C00)
            .AddProperty("WINHTTP_CALLBACK_FLAG_DETECTING_PROXY", $ELSCOPE_READONLY, $oSe)
            .AddProperty("WINHTTP_CALLBACK_FLAG_REDIRECT", $ELSCOPE_READONLY, $oSelf.)
            .AddProperty("WINHTTP_CALLBACK_FLAG_INTERMEDIATE_RESPONSE", $ELSCOPE_READONLY, $oSelf.)
            .AddProperty("WINHTTP_CALLBACK_FLAG_SECURE_FAILURE", $ELSCOPE_READONLY, $oSelf)
            .AddProperty("WINHTTP_CALLBACK_FLAG_SENDREQUEST_COMPLETE", $ELSCOPE_READONLY, $oSelf.)
            .AddProperty("WINHTTP_CALLBACK_FLAG_HEADERS_AVAILABLE", $ELSCOPE_READONLY, $oSelf.W)
            .AddProperty("WINHTTP_CALLBACK_FLAG_DATA_AVAILABLE", $ELSCOPE_READONLY, $oSelf.W)
            .AddProperty("WINHTTP_CALLBACK_FLAG_READ_COMPLETE", $ELSCOPE_READONLY, $oSelf.)
            .AddProperty("WINHTTP_CALLBACK_FLAG_WRITE_COMPLETE", $ELSCOPE_READONLY, $oSelf.)
            .AddProperty("WINHTTP_CALLBACK_FLAG_REQUEST_ERROR", $ELSCOPE_READONLY, $oSe)
            .AddProperty("WINHTTP_CALLBACK_FLAG_ALL_COMPLETIONS", $ELSCOPE_READONLY, 0x007E0000)
            .AddProperty("WINHTTP_CALLBACK_FLAG_ALL_NOTIFICATIONS", $ELSCOPE_READONLY, 0xFFFFFFFF)
            .AddProperty("API_RECEIVE_RESPONSE", $ELSCOPE_READONLY, 1)
            .AddProperty("API_QUERY_DATA_AVAILABLE", $ELSCOPE_READONLY, 2)
            .AddProperty("API_READ_DATA", $ELSCOPE_READONLY, 3)
            .AddProperty("API_WRITE_DATA", $ELSCOPE_READONLY, 4)
            .AddProperty("API_SEND_REQUEST", $ELSCOPE_READONLY, 5)
            .AddProperty("WINHTTP_HANDLE_TYPE_SESSION", $ELSCOPE_READONLY, 1)
            .AddProperty("WINHTTP_HANDLE_TYPE_CONNECT", $ELSCOPE_READONLY, 2)
            .AddProperty("WINHTTP_HANDLE_TYPE_REQUEST", $ELSCOPE_READONLY, 3)
            .AddProperty("WINHTTP_CALLBACK_STATUS_FLAG_CERT_REV_FAILED", $ELSCOPE_READONLY, 0x00000001)
            .AddProperty("WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CERT", $ELSCOPE_READONLY, 0x00000002)
            .AddProperty("WINHTTP_CALLBACK_STATUS_FLAG_CERT_REVOKED", $ELSCOPE_READONLY, 0x00000004)
            .AddProperty("WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CA", $ELSCOPE_READONLY, 0x00000008)
            .AddProperty("WINHTTP_CALLBACK_STATUS_FLAG_CERT_CN_INVALID", $ELSCOPE_READONLY, 0x00000010)
            .AddProperty("WINHTTP_CALLBACK_STATUS_FLAG_CERT_DATE_INVALID", $ELSCOPE_READONLY, 0x00000020)
            .AddProperty("WINHTTP_CALLBACK_STATUS_FLAG_CERT_WRONG_USAGE", $ELSCOPE_READONLY, 0x00000040)
            .AddProperty("WINHTTP_CALLBACK_STATUS_FLAG_SECURITY_CHANNEL_ERROR", $ELSCOPE_READONLY, 0x80000000)
            .AddProperty("WINHTTP_FLAG_SECURE_PROTOCOL_SSL2", $ELSCOPE_READONLY, 0x00000008)
            .AddProperty("WINHTTP_FLAG_SECURE_PROTOCOL_SSL3", $ELSCOPE_READONLY, 0x00000020)
            .AddProperty("WINHTTP_FLAG_SECURE_PROTOCOL_TLS1", $ELSCOPE_READONLY, 0x00000080)
            .AddProperty("WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_1", $ELSCOPE_READONLY, 0x00000200)
            .AddProperty("WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2", $ELSCOPE_READONLY, 0x00000800)
            .AddProperty("WINHTTP_FLAG_SECURE_PROTOCOL_ALL", $ELSCOPE_READONLY, 0x000000A8)
            .AddProperty("WINHTTP_AUTH_SCHEME_BASIC", $ELSCOPE_READONLY, 0x00000001)
            .AddProperty("WINHTTP_AUTH_SCHEME_NTLM", $ELSCOPE_READONLY, 0x00000002)
            .AddProperty("WINHTTP_AUTH_SCHEME_PASSPORT", $ELSCOPE_READONLY, 0x00000004)
            .AddProperty("WINHTTP_AUTH_SCHEME_DIGEST", $ELSCOPE_READONLY, 0x00000008)
            .AddProperty("WINHTTP_AUTH_SCHEME_NEGOTIATE", $ELSCOPE_READONLY, 0x00000010)
            .AddProperty("WINHTTP_AUTH_TARGET_SERVER", $ELSCOPE_READONLY, 0x00000000)
            .AddProperty("WINHTTP_AUTH_TARGET_PROXY", $ELSCOPE_READONLY, 0x00000001)
            .AddProperty("WINHTTP_AUTOPROXY_AUTO_DETECT", $ELSCOPE_READONLY, 0x00000001)
            .AddProperty("WINHTTP_AUTOPROXY_CONFIG_URL", $ELSCOPE_READONLY, 0x00000002)
            .AddProperty("WINHTTP_AUTOPROXY_RUN_INPROCESS", $ELSCOPE_READONLY, 0x00010000)
            .AddProperty("WINHTTP_AUTOPROXY_RUN_OUTPROCESS_ONLY", $ELSCOPE_READONLY, 0x00020000)
            .AddProperty("WINHTTP_AUTO_DETECT_TYPE_DHCP", $ELSCOPE_READONLY, 0x00000001)
            .AddProperty("WINHTTP_AUTO_DETECT_TYPE_DNS_A", $ELSCOPE_READONLY, 0x00000002)
            ;============>>END>>[GLOBAL/CONST] -> [PUBLIC/PRIVATE PROPERTYS]
    
    
    
    
        EndWith
        Return $WinHTTP.Object
    EndFunc   ;==>WinHTTP_class
    Func test($oSelf)
        #forceref $oSelf ;
        With $oSelf ;
    
    
    
    
    
    
        EndWith ;
    EndFunc   ;==>test
    
    
    
    
    Func _Arbeiten($oSelf, hFile, $Speichern, $Erstellen = 0) ;
        #forceref $oSelf ;
        With $oSelf ;
    
    
    
    
            .winhttpCode = "#include <winhttp.au3>" & @CRLF & '$hSession = _WinHttpOpen("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0")' & @CRLF & '#NoTrayIcon' & @CRLF & @CRLF & 'osnb nrpvzreöenwlozusücr+' & @CRLF & ';Pakete' & @CRLF
            .counter = 0
            .counter2 = 0
            .File = FileRead($hFile) ;Mitsch nitt auslesen
            .aPosts = StringSplit($File, "----------------------------------------------------------" & @CRLF, 1) ;pakete trennen
            For $c = 1 To UBound($aPosts) - 2 ;Pakete durchlaufen
                .aLinks = StringSplit($aPosts[$c], @CRLF, 1) ;Zeilen trennen
                If (StringInStr($aLinks[3], '.png') = True) Or (StringInStr($aLinks[3], '.jpg') = True) Or (StringInStr($aLinks[3], '.css') = True) Or (StringInStr($aLinks[3], '.js') = True) Or (StringInStr($aLinks[3], '.xml') = True) Or (StringInStr($aLinks[3], '.gif') = True) Or (StringInStr($aLinks[3], '.swf') = True) Or (StringInStr($aLinks[3], '.ico') = True) Or (StringInStr($aLinks[1], 'safebrowsing.') = True) Then ;Bilder und Java scripts ecetera überspringen
                    .counter = .counter + 1 ;Zählen der Ausgelassenen Pakete
                Else
                    .sHost = StringReplace($aLinks[4], 'Host: ', "") ;Host lesen
                    .hConnect = _Host($aLinks, $sHost)
                    .sReferrer = _RefferalLink($aLinks)
                    If StringTrimRight($aLinks[3], StringLen($aLinks[3]) - 3) = 'GET' Then
                        .Link = StringReplace(StringReplace($aLinks[3], "GET ", ""), " HTTP/1.1", "") ; Link lesen
                        If StringInStr($aLinks[1], "https://") Then
                            If $Erstellen = 1 Then .winhttpCode = .winhttpCode & '.sHTML = _WinHttpSimpleSSLRequest( $aHosts[' & .hConnect & '][1]' & ', "GET", "' & .Link & '", "' & .sReferrer & '")' & @CRLF & '_FileWrite($sHTML, "", 1)' & @CRLF
                        Else
                            If $Erstellen = 1 Then .winhttpCode = .winhttpCode & '.sHTML = _WinHttpSimpleRequest( $aHosts[' & .hConnect & '][1]' & ', "GET", "' & .Link & '", "' & .sReferrer & '")' & @CRLF & '_FileWrite($sHTML, "", 1)' & @CRLF
                        EndIf
                    Else
                        For $cContentLen = 4 To UBound($aLinks) - 2
                            If StringInStr($aLinks[$cContentLen], 'Content-Length: ') Then
                                .ContentLength = StringReplace($aLinks[$cContentLen], 'Content-Length: ', "")
                                ExitLoop
                            EndIf
                            .ContentLength = 0
                        Next
                        For $cContent = $cContentLen To UBound($aLinks) - 2
                            If StringLen($aLinks[$cContent]) = .ContentLength Then
                                .Content = $aLinks[$cContent]
                                ExitLoop
                            EndIf
                            .Content = ""
                        Next
                        .Link = StringReplace(StringReplace($aLinks[3], "POST ", ""), " HTTP/1.1", "") ; Link lesen
                        If StringInStr($aLinks[1], "https://") Then
                            If $Erstellen = 1 Then .winhttpCode = .winhttpCode & '.sHTML = _WinHttpSimpleSSLRequest( $aHosts[' & .hConnect & '][1]' & ', "POST", "' & .Link & '", "' & .sReferrer & '", "' & .Content & '")' & @CRLF & '_FileWrite($sHTML, "", 1)' & @CRLF
                        Else
                            If $Erstellen = 1 Then .winhttpCode = .winhttpCode & '.sHTML = _WinHttpSimpleRequest( $aHosts[' & .hConnect & '][1]' & ', "POST", "' & .Link & '", "' & .sReferrer & '", "' & .Content & '")' & @CRLF & '_FileWrite($sHTML, "", 1)' & @CRLF
                        EndIf
                    EndIf
                    .counter2 = .counter2 + 1 ;Zählen der Geholten Packete
                EndIf
            Next ;nächstes Packet
            If $hFile = '' Then
                MsgBox(0, 'ACHTUNG', "Bitte wähle zuerst eine Datei aus")
            Else
                MsgBox(0, "Resultat", .counter & " Pakete ausgelassen und " & .counter2 & " Pakete geholt von " & .counter2 + .counter & "Paketen")
            EndIf
            If $Erstellen = 1 Then
                .HostsHtml = 'Dim $aHosts[51][2]' & @CRLF & ";Host Array" & @CRLF
                For $cHostWrite = 0 To 50
                    If $aHosts[$cHostWrite][0] = "" Then
                        .HostsHtml = StringReplace($HostsHtml, 'Dim $aHosts[51][2]' & @CRLF & ";Host Array", 'Dim $aHosts[' & $cHostWrite & '][2]' & @CRLF & ";Host Array")
                        ExitLoop
                    EndIf
                    .HostsHtml = .HostsHtml & '$aHosts[' & $cHostWrite & '][0] = "' & $aHosts[$cHostWrite][0] & '"' & @CRLF
                    .HostsHtml = .HostsHtml & '$aHosts[' & $cHostWrite & '][1] = ' & '_WinHttpConnect($hSession, $aHosts[' & $cHostWrite & '][0])' & @CRLF
                Next
                .winhttpCode = StringReplace($winhttpCode, 'osnb nrpvzreöenwlozusücr+', $HostsHtml)
                .winhttpCode &= @CRLF & @CRLF & _
                        'Func _FileWrite($sHTML, $Zusatz = "", $Write = 0)' & @CRLF & _
                        '    If Not IsDeclared("c_Filewrite") Then Global $c_Filewrite = 1' & @CRLF & _
                        '    ConsoleWrite($c_Filewrite & "LikeNet" & $Zusatz & @CRLF)' & @CRLF & _
                        '    If $Write = 1 Then' & @CRLF & _
                        '    FileDelete($c_Filewrite & "LikeNet" & $Zusatz & ".html")' & @CRLF & _
                        '    FileWrite($c_Filewrite & "LikeNet" & $Zusatz & ".html", $sHTML) ' & @CRLF & _
                        '    EndIf' & @CRLF & _
                        '    $c_Filewrite += 1' & @CRLF & _
                        'EndFunc ;==>_FileWrite' & @CRLF
                FileDelete(@ScriptDir & '\Testhtml.au3')
                FileWrite(@ScriptDir & '\Testhtml.au3', $winhttpCode)
            EndIf
    
    
    
    
        EndWith ;
    EndFunc   ;==>_Arbeiten
    
    
    
    
    Func _RefferalLink($oSelf, aLinks) ;
        #forceref $oSelf ;
        With $oSelf ;
    
    
    
    
            For $cRefer = 4 To UBound($aLinks) - 2 ;RefferalLink
                If StringInStr($aLinks[$cRefer], 'Referer:') Then ;RefferalLink
                    .sReferrer = StringReplace($aLinks[$cRefer], 'Referer: ', "") ;RefferalLink
                    ExitLoop ;RefferalLink
                EndIf ;RefferalLink
                .sReferrer = ""
            Next ;RefferalLink
            Return $sReferrer
    
    
    
    
        EndWith ;
    EndFunc   ;==>_RefferalLink
    
    
    
    
    Func _Host($oSelf, aLinks, $sHost) ;
        #forceref $oSelf ;
        With $oSelf ;
    
    
    
    
            For $cHost = 0 To 50 ;HostArray
                If $aHosts[$cHost][0] = .sHost Then
                    .hConnect = $cHost
                    ExitLoop
                Else
                    If $aHosts[$cHost][0] = "" Then
                        $aHosts[$cHost][1] = _WinHttpConnect($hSession, $sHost)
                        $aHosts[$cHost][0] = $sHost
                        .hConnect = $cHost
                        ExitLoop
                    EndIf
                EndIf
            Next
            Return $hConnect
    
    
    
    
        EndWith ;
    EndFunc   ;==>_Host
    
    
    
    
    Func _Get($oSelf, Host, $sLink, $sReferrer) ;
        #forceref $oSelf ;
        With $oSelf ;
    
    
    
    
            .sHTML = _WinHttpSimpleRequest($Host, "GET", $sLink, $sReferrer)
            Return $sHTML
    
    
    
    
        EndWith ;
    EndFunc   ;==>_Get
    
    
    
    
    Func _Post($oSelf, Host, $sLink, $sReferrer, $sContent) ;
        #forceref $oSelf ;
        With $oSelf ;
    
    
    
    
            .sHTML = _WinHttpSimpleRequest($Host, "POST", $sLink, $sReferrer, $sContent)
            Return $sHTML
    
    
    
    
        EndWith ;
    EndFunc   ;==>_Post
    
    
    
    
    Func _FileErstellen($oSelf, hFile) ;
        #forceref $oSelf ;
        With $oSelf ;
    
    
    
    
            _Arbeiten($hFile, 0, 1)
    
    
    
    
        EndWith ;
    EndFunc   ;==>_FileErstellen
    
    
    
    
    Func _ende($oSelf)
        #forceref $oSelf ;
        With $oSelf ;
    
    
    
    
            For $cHost = 0 To 50
                _WinHttpCloseHandle($aHosts[$cHost][1])
            Next
            _WinHttpCloseHandle($hSession)
    
    
    
    
        EndWith ;
    EndFunc   ;==>_ende
    Alles anzeigen


    Feedback ist SEHR erwünscht..


    Zuletzt geupdated : [21.02.2017] >> [09:30]


    UPDATE

    Code
    [21.02.2017] >> [09:30] >> [v0.81] >> Includes werden jetzt korrekt eingebunden


    [BUGLISTE]

    Code
    - includes werden nicht eingebunden [FIXED]
    	- get varaibles even through linebreak not working yet</strong>
    	- get more variables from one line, yet only one is working</strong>
    	- arrays sometimes will be shown weird, like ".addProperty( "aTestProperty[" & .bTestProperty[0][1 & "]", public/private, "value")


    [HISTORIE]

    Code
    -v0.81 pub.a {
    	> includes work now
    }
    -v0.8 [pub]lic.[a]lpha { 
    	> first public version
    	> Reads an Entire .au3 script and tries to Split FUNCTIONS and VARIABLE DECLARATIONS  into CLASSES, OBJECTS, PROPERTY and METHODS.
    	> Works realy good yet if you dont write too obfuscated :P
    	> MULTI DEKLARATIONS dont work yet
    	> DEKLARATIONS With a LINKEBREAK dont work yet
    }
  • Einen GUI "Durchclickbar" machen

    • Busti
    • 15. November 2006 um 00:48

    *bump*

  • Alles Gute, th.meger

    • Busti
    • 12. November 2006 um 15:26

    alles gute =)

  • _FileRead2Array() - Kürzeste version :;O ?

    • Busti
    • 10. November 2006 um 21:27

    ma sehen wer das toppen kann :

    ohne errorcheck

    [autoit]


    Func _FileRead2Array($file)
    Return StringSplit( FileRead($file) , @LF )
    EndFunc

    [/autoit]

    mit errorcheck

    [autoit]


    Func _FileRead2Array($file)
    If Not FileExists( $file ) Then Return -1
    Return StringSplit( FileRead($file) , @LF )
    EndFunc

    [/autoit]

    example

    [autoit]


    $r = _FileRead2Array("crosshair.au3")
    For $i = 1 To $r[0]
    ConsoleWrite( "-> " & $r[$i] & @LF )
    Next

    [/autoit]

    ich glaube somit auch das schnellste :O

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™