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:
2) Auf:
Das z.B. schafft das Programm (bei einzeiliger deklarierung) schon soziemlich perfekt.
(Der Code ist noch etwas unordentlich ) (Es gibt auch Ordentlich DEBUG-Optionen bei Fehlern)
Programm: "AutoIT - [Script]-to-[OOP-Script]-[Converter] .au3"
Beispiel Benutzung:
;================================================;
;| 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:
-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.
;================================================;
;| 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
[BUGLISTE]
- 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]
-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
}