- Offizieller Beitrag
Hi,
nun im zweiten Anlauf, da der erste Thread sich nicht mehr öffnen ließ:
Wer sich schon mal näher die Funktion _SQLiteStartUp() in der SQLite-UDF angesehen hat, wird bemerkt haben, dass hier die SQLite Dll geladen wird, ohne dass sie auf dem System installiert ist.
Das wird gelöst, indem der Inhalt der Dll als Binärstring innerhalb des Includes gespeichert ist und zur Laufzeit temporär die Datei erstellt wird.
Daraus ergibt sich der Vorteil, dass man nur die reine EXE weitergibt und alle weiteren notwendigen Komponenten (Dll, Bilder etc.) nur temporär generiert.
Da ich diese Methode in letzter Zeit häufiger nutze, habe ich auch die Erstellung des Binärstrings und der Helperfunktion automatisiert.
Mit dem Aufruf der Funktion: _CreateTmpBinaryCall($sPath, $sBin='$sData') wird die mit $sPath übergebene Datei als Binärstring in der Variablen $sBin gespeichert. Der Variablenname darf 29 89 Zeichen nicht überschreiten, da sonst die max. Länge einer Befehlszeile überchritten wird.
Weiterhin wird die Funktion _CreateTmpFile($sFileName, $sBin) erstellt. Diese gibt den Pfad der temporär erzeugten Datei für den übergebenen Binärstring zurück.
Der erstellte String und die Funktion werden sowohl in die Console als auch in die Zwischenablage ausgegeben.
Edit 17.9.2011 NEU v1.3
• Der temporäre Pfad kann ein Direktpfad sein oder eines der Makros @ScriptDir / @TempDir. Die Makros dürfen jedoch nicht als solche übergeben werden, da dann der Pfad sofort gewandelt wird, statt das Makro in die Funktionen einzusetzen. Als Standard (mit Default od. Leerstring) wird @ScriptDir verwendet, für @TempDir muß 'tmp' übergeben werden.
• Noch ein bischen Funktionskosmetik durchgeführt
Edit 21.8.2011 NEU v1.1
Schnuffel hatte eine Idee zur Funktionserweiterung, die ich beim Korrektur lesen noch etwas ausgefeilt habe und herausgekommen aus diesem Brainstorming ist dieses:
• Übergabe nicht nur einer Datei, sondern eines Strings mit mehreren Pfaden möglich (Trenner: GUIDataSeparatorChar, Standard also: '|')
• Wird kein Datei-Pfad übergeben, öffnet sich ein Fenster zur Dateiauswahl (auch Multiselect möglich)
• Der temporäre Pfad ist jetzt wählbar
• Eine Funktion zur automatischen Löschung der temporären Dateien bei Skriptende, wird bei Bedarf miterstellt
• Ausgabe in die Konsole erfolgt nicht mehr (Zwischenablage reicht)
Edit2 21.08.2011
Grrr, da hatte ich noch einen Bug drin. FileSelectFolder (also kein Pfad übergeben) mit nur einer Datei führte zu einem Fehler - gefixt.
Hier werden String und Funktion erstellt
v 1.3
#Region - TimeStamp
; 2011-09-17 13:12:56 v 1.3
#EndRegion - TimeStamp
; Local $gifPath1 = 'C:\WINDOWS\system32\oobe\images\merlin.gif' ; -- XP
; Local $gifPath2 = 'C:\WINDOWS\system32\oobe\images\hand2.gif' ; -- XP
Local $gifPath1 = 'C:\Windows\System32\migwiz\PostMigRes\Web\base_images\System.gif' ; -- Win7
Local $gifPath2 = 'C:\Windows\System32\migwiz\PostMigRes\Web\base_images\Programs.gif' ; -- Win7
_CreateTmpBinaryCall($gifPath1 & '|' & $gifPath2)
;==================================================================================================
; Function Name..: _CreateTmpBinaryCall($sPath = '', $sBin='$bData', $sSavePath = @ScriptDir, $fFilesDelete = True)
; Description....: Erzeugt einen Binärstring der übergebenen Datei/en und erstellt eine Funktion um
; durch Aufruf des Strings die Datei temporär zu erstellen.
; Parameter(s)...: $sPath - Pfad der Datei/en, von der/denen ein Binärstring erstellt werden soll; GUIDataSeparatorChar als Trenner
; optional.: $sBin - Name der Variablen, die den String aufnehmen soll, max. Länge Variablenname: 89 Zeichen (Standard = $bData)
; optional.: $sSavePath - Pfad, in dem die temporären Dateien abgelegt werden (abschließender Backslash nicht zwingend, skriptgesteuert)
; • Default od. Leerstring setzt das Makro @ScriptDir ein (Standard)
; • 'tmp' setzt das Makro @TempDir ein
; Achtung: Hier KEIN Makro direkt verwenden, da dann der Pfad sofort gewandelt wird, statt das Makro in die Funktionen einzufügen
; $fFilesDelete - (True/False) Switch der festlegt, ob die Funktion zum Löschen der Tmp-Daten bei Skriptende erstellt werden soll
; Return Value(s): Erfolg - 1 Ausgabe des Strings und der Funktion _CreateTmpFile() in der Zwischenablage
; Fehler - 0 Set @error; 1 - keine Datei ausgewählt,
; 2 - Datei konnte nicht geöffnet werden (@Extended = n-te Datei, die den Fehler erzeugte)
; Author(s)......: BugFix ([email='bugfix@autoit.de'][/email])
; Modified.......: Schnuffel ([email='schnuffel@autoit.de'][/email])
;==================================================================================================
Func _CreateTmpBinaryCall($sPath = '', $sBin = '$bData', $sSavePath = Default, $fFilesDelete = True)
Local $sSeparator = Opt('GUIDataSeparatorChar')
If $sPath = '' Then
$sPath = FileOpenDialog('Datei/-en zum binären Includen auswählen:', @ScriptDir & '\', 'Alle Dateien (*.*)', 4)
If $sPath = '' Then Return SetError(1,0,0)
Local $aTmp = StringSplit($sPath, '|', 2), $ubound = UBound($aTmp)
$sPath = ''
If $ubound = 1 Then
$sPath = $aTmp[0]
Else
For $i = 1 To $ubound -1
$sPath &= $aTmp[0] & '\' & $aTmp[$i] & $sSeparator
Next
$sPath = StringTrimRight($sPath, StringLen($sSeparator))
EndIf
EndIf
If $sBin = '' Or IsKeyword($sBin) Then $sBin = '$bData'
If Not IsBool($fFilesDelete) Then $fFilesDelete = True
If $sSavePath = '' Or $sSavePath = Default Then
$sSavePath = '@ScriptDir & "\"'
ElseIf $sSavePath = 'tmp' Then
$sSavePath = '@TempDir & "\"'
Else
If StringRight($sSavePath,1) <> '\' Then $sSavePath &= '\'
EndIf
If StringLeft($sSavePath, 1) <> '@' Then $sSavePath = '"' & $sSavePath & '"'
; == Deklarieren der lokalen Variablen
Local $sToWrite, $hFile = '', $bRead = '', $sLen = '', $nCount = 4000, $aTrimPath, $aFilenames = '['
Local $aSplitPaths = StringSplit($sPath, $sSeparator, 3)
$ubound = UBound($aSplitPaths)
Local $aFiles[$ubound+1][2]
$aFiles[0][0] = $ubound
For $i = 1 To $aFiles[0][0]
$aFiles[$i][0] = $aSplitPaths[$i-1]
$aFiles[$i][1] = StringRight($aSplitPaths[$i-1], StringLen($aSplitPaths[$i-1])-StringInStr($aSplitPaths[$i-1], '\', 1, -1))
$aFilenames &= '"' & $aFiles[$i][1] & '"' & ','
Next
$aFilenames = StringTrimRight($aFilenames,1) & ']'
$sToWrite = 'Global $sPath = ' & $sSavePath & ', ' & $sBin & '[' & $aFiles[0][0]+1 & '] = [' & $aFiles[0][0] & ']' & @CRLF
; == Dateien binär einlesen
For $i = 1 To $aFiles[0][0]
$hFile = FileOpen($aFiles[$i][0], 16)
If @error Then Return SetError(2, $i, 0)
$bRead = FileRead($hFile)
FileClose($hFile)
$sLen = StringLen($bRead)
$sToWrite &= ';' & @TAB & 'String mit den Binärdaten von: ' & $aFiles[$i][1] & @CRLF
If $sLen < $nCount Then
$sToWrite &= $sBin & '[' & $i & ']' & ' &= "' & $bRead & '"' & @CRLF
Else
While 1
$sToWrite &= $sBin & '[' & $i & ']' & ' &= "' & StringLeft($bRead, $nCount) & '"' & @CRLF
$bRead = StringTrimLeft($bRead, $nCount)
$sLen = StringLen($bRead)
If $sLen <= $nCount Then
$sToWrite &= $sBin & '[' & $i & ']' & ' &= "' & $bRead & '"' & @CRLF
ExitLoop
EndIf
WEnd
EndIf
Next
; == Ausgabe String Erstellen
$sToWrite &= @CRLF & ';' & @TAB & 'erstellt im TEMPDIR die Datei/-en aus allen vorhandenen ' & $sBin & ' Variablen' & @CRLF
$sToWrite &= 'Global '&$sBin&'names['&$aFiles[0][0]&'] = ' & $aFilenames & @CRLF
$sToWrite &= 'For $i = 1 To ' & $sBin & '[0]' & @CRLF
$sToWrite &= @TAB & 'Local $sFile = $sPath & ' & $sBin & 'names[$i -1]' & @CRLF
$sToWrite &= @TAB & 'Local $hFileOut = FileOpen($sFile, 2+8+16)' & @CRLF
$sToWrite &= @TAB & 'FileWrite($hFileOut, Binary(' & $sBin & '[$i]' & '))' & @CRLF
$sToWrite &= @TAB & 'FileClose($hFileOut)' & @CRLF & 'Next' & @CRLF & @CRLF
; == Schreibt eine Funktion zum Löschen der Dateien bei Skriptende wenn $fFilesDelete = True
If $fFilesDelete Then
$sToWrite &= '; registriert die Funktion "_DelBinaryTempFiles()", damit die temporär erstellten Dateien bei Beendigung wieder gelöscht werden' & @CRLF
$sToWrite &= 'OnAutoItExitRegister("_DelBinaryTempFiles")' & @CRLF & @CRLF
$sToWrite &= 'Func _DelBinaryTempFiles()' & @CRLF
$sToWrite &= @TAB & 'For $i = 1 To ' & $sBin & '[0]' & @CRLF
$sToWrite &= @TAB & @TAB & 'FileDelete($sPath & ' & $sBin & 'names[$i -1]'& ')' & @CRLF & @TAB & 'Next' & @CRLF
$sToWrite &= 'EndFunc' & @CRLF
EndIf
; == Kopieren der Daten in die Zwischenablage
ClipPut('')
If ClipPut($sToWrite) = 1 Then
Return MsgBox(64 + 262144, 'Daten kopiert', 'Die Daten wurden in die Zwischenablage kopiert.' & @CRLF & 'Einfügen in Ihr Script mit Ctrl + v.',5)
Else
MsgBox(64 + 262144, 'Fehler - Daten kopieren', 'Die Daten konnten nicht in die Zwischenablage kopiert werden.')
Return 0
EndIf
EndFunc ;==>_CreateTmpBinaryCall
Und das ist das Ergebnis zum Einfügen in das Skript:
Spoiler anzeigen
Global $sPath = @ScriptDir & "\", $bData[3] = [2]
; String mit den Binärdaten von: System.gif
$bData[1] &= "0x4749463839613000300077000021F904010000F2002C0000000030003000871A19191F23372D2D2D25293B2E313E3636382D31423639453C404B3E4758385874403E3A44413A454548494A534E5057504E48504F5354524D565658435C745C5D63565F77576178605F6569675E67676A696A72706F7570706F757577072AAC082CB20935BB1736AD193AB6203EB70339C70036D2193CC11C41BC2744B8324EB73B53AC3954BA0742CA0747D51746C7144AD21F52CD2548C7264ED22B55CA2654D4304EC53853C63659D32D5DE03B67CA3D66DC4F5F83415ABD5B6C984B65B6516BA85364B75165BD5D6CB25C6EB85E72B46A748B6D77907B7C846277A76A79B5717DB4435AC3425CCA485EC3435ED14269C94C62C24A62CB4766D84E73DC5165C55166CB5369C35569CC586EC6596CCB536BD4536CDB596ED25478CA5A72C35D72C95374DB5C73DB5C7ED55C7BDF4769E54D75E2516DE45473E15371EA577EE7517AE85B75E45974EB5A78EC6274CE6378CB687CCC6073D46277DC6579DD6E7FD4647BE3607AEB6A7FE5687FEB607BF05C81E66A88D47C8BD47B94D26481E0648AEA6986E36A82EC6C88E66B8CE86780F16D85F16E92EC738DE57796EB769DF07C92F67FA2E3888889898A9387939E97979A818BB6818DBC9B9DA698A1AA9EA7B49EA5BCABAAAAA6AABBABAEBBA4B2BDB3B3B3B3B3BBBCBCBE8E9AD3929AC1819BEB8296F18199F388A4DB99A1C396A9D097ACD99CB1C182A3E385A4EE8DA4ED8BABEE89A8F091A8EF91A9F099ACF699B3EA94B1F09CB4F19CB9F1A1A7C4A3ABC1ABB6CEA0B0D7A3B3DAAAB6D0B5BACBBABCC2A4B8E7A0B9EFAABAEBA4BBF1A9BCF3AFBEF8A9C0D2BFC0C1BEC2CAB2CADCBAC2D4BCC4DCB9CEDFACC1F2B5C0E3B4CFE6B9C3E1BFC8E2B2C4F3B7C9F4BBCBF5BDD1E1C3C3C4C2C2C8C6C9CDCBCBCBC2C6D3C2CAD9CBCBD2CFCFD8C1D0DBCED0D3CCD0D8D1D0CED3D3D5D4D4DBD9D8D7DBDBDCC0CFF6C0CCFCC6D7E6C5D2F6C2D1F8CBD7F7CAD7FAD8DCE4D2DCFAD7E2ECDBE7F1E4E4E5E4E4EAEBEBEDE8ECF1EBF1F7FFFFE5F2F2F4F3F8FBF9F8F5FEFEFECEA4D6083053000000000100F5F578000002CEA4B4CEA49FF5F57408FF00E5091C48B0A0C18308132A5CC8B0A1C38710234A9C48B1A2C58B18336A1CF86E23454C9F68E9CAF62D5C388F0C2355D1F2A64E9F3E9E701DBBC60D1C386FE0500E5C52A58B1C3A74F008126428942F65CC9ACDE4E6AD9AB46ADD30B61B52058B4F3A76F0E429B4689C3A74E6A039F3C50BD7AD5CC6AC11EB368CA2B72051AC581583F58E1E43C1D49D2B572EECB367C180F58285AAD4268AC484449162650B17316CD8B4D1F36AAF3871D09E39DBBC39D92C5C97285A0253C589942D8ED1B04993461434CC9A9D259B9DECD7AF55C20E4F8C04070C932652A64CE172264D1943C09C3D4B060C98EDE7B350E9AAA8040E1C27BF9F082F73A68C1B57819DCBFFEA35ABFCAC588CDA4E7C47E44D1C272C7E37D13E853BA857B2F2E38FC57F152B469D5014CE0F59C051050B3724D8040E4FE0508620ADA8E2CA84FEB1924A2A8A8CA29E44BAB070451655DCA0428237E060220E7380A2A22A17AAA888228098220D45A4A81085622CA860C38E3B9AC805228824920828421E62E41EB8CC38912429F4E0240B2944B9A30C36CC30C51F83043208218400D225206BD832CD44F51491428E2AA810650A32B429C30C38A041C69C7BFCB1871A6AAC11063114BDB3020929A8990209849270420A27503945185434BA8619909631463514A523820884627AE90823187A42A23808F7C40E53EC606A0E7C282991311F7C70E9AB2274FF8A820C28244AC38938E4906B0E35F8A16A44B5A8290208AD8210EB0828242B430C34345BC30C33D4F02C0CA6504351071D2061840F45B0506B08E09E10C2092FC400C30BE8BE00C3BA2F58C38D458D643041061D6C7044122CD0F0420B25F4DBC2BFFEAE4BC3361A3552C10412483001061BF0000414E6BA6082BF2EB4A003A5114DE308124870B0C1061C70A0C1040B2CD00004109C3CC1041724F1030D119BE005C10FEDE288060FAC3C41051A7CBC41050E2C5080004417C040030C300081041558E0C317B7FCAA10278D6C104103113CD000020838D040051F77A0010613346076030E682076051008CD40051E30B48D2356373041040E20A0F5D60E10FF700002093830C106F562707004116810513B2479B389231E687035D6662780C0010D1C6080DF0774BE33062353A08003712F940E3624A5D38E3BEFB8E34D27907000F4027F777E40029D1B70C000010C60C0E5095080C002083492D037E97CA3BCEAACBF338F3DEF5CD2C8F41B3C70B9ED0618E0BBF603746F4003051050C0020A41B2CB37EEA4CFFA3CF348D308B6D94E0FF9040810E0FBF6BE07F07701FC03E0102490C0863BD8178E616C62128D4082D8E6B58975586312487840F60CD0BBCE15007CE48B482320C18970CCA31EEDA8C6302081844678231EF060073BD6A10D4D3C620381139A030AD0818B386212D868C73CDA110E7BD8031EF058C73A50C8414472144318A7A0C4061AE0112470301D3EA4470A87488E682CA318CB408602752290044E821AF088C70AAB180D725402035C3C88071C918975AC501B1ED8401A1582841BCA718E78CCA31E311210003B"
; String mit den Binärdaten von: Programs.gif
$bData[2] &= "0x4749463839613000300077000021F904010000F7002C0000000030003000871615151C1C1C1F212020222129292A2F2F303131325A5A5E4646645E5E615655745F7173606060666B696A6B6B62617F6E6C737374747679787A7A7B62628268678E6C6C897376877272937A7A937D7D9A7A7AA47E7EAE598668688A7976897C76907F65C26C5D97A65CAA9D6E91807F81807A968A6FA68D86AC7C95AE7281D93C93EB18A5F62884CD5FA1C07EA6E446D7AC67D2AF7C8989898282988E908F829D9187989D8E97978B9C95908C8D928F9194948E93939392959B949B9B9A95979A949A9A9A9A8282A18585AE8A8AA48C8CAA8585B18B8BB38C8CBC8F90AB8F98A69293AC979AAE9A9AAB9494B19393B99A9AB49C9CB986A2968BB49884A8B894A3A091A9A09CA5A69FA7A99EA9A49AA9ADA4959FA89AA3A1A29FA9B29CBEB19DA3A3A3A1A1ADA0AAA6A4ABABA8A3A6ABA6AAABAFA5ABABACA4A4B2A2A2BCA5AAB1A9A9B4ACACBAA5B2ABADB2B5AFB0BAACB9B6ACB9B8B4A8A9B6AAB7B4B4A7B5B9ABBBB2A8B3B3B3B2B2BCB3BCBBBAB1B7BCB3BBBABBBB9393C39999C3A4A4C1A9A9C4ACACC9A6A6D5AAAAD7AEB5C1B4B4C4B2B2CCB7B8C1BABAC4BBBBCBB5B5D2B0B0D9BBBBD3BCBCDAB9B9E5BDBDE9B0CD84ADCCB5BDC3AAB4C4BDB4CDBAB9C6BEB8CABEB5D1BDB6C1C0BDC3C2BACAC2BDD5C4D7B98AD6BC9BC1ACBAC4B6A4C4BDBBD4BEA3E2BB89E1BF90C1BCC2E1BBC6E7BBD1DAC08CD2C098CEC2AAC5C0B9DCC6A8D7C8B8D6D2A5D6D2B5EDC487EAC896F3D589F1D693E6CBA3EDD0A4EED3ADECD9AFEBD7B8F1D3AAF0D8A4F9DEBBE9E7A9F9EEADF6E5B1C6C7C7C4C3D2C3C3DBC6CFD0C9C7DCCAC9D4CDCDDCC5D2CDCED1D2C8DBD0D1C3CCD8C9D5D7D4C9D2D2D3D3D3DCD3D9D7D4D9DBDBDBDCC4C4E3C4C4EECBCBE4CCCCEBCACAF2CDCDFCCFD0E2D4D4E2D2D2EAD7DCE0DADBE3DADAE9D4D4F4D3D3FDDADAF2DCDCFCD2E2D7D5E2DCDDE1E4DFE8E8E5C4C9E3DBCEEDDFCFE1DCDCF5D0C7E2DFE0E5E2DBE4E4E4E4E4ECE6E8EBE8E8E7EAEAEBE3E3F3E3E3FCEBEDF2EBEBFDEEF1F5EFF0FEF0EFEFFFFFE5F3F4F4F3F3FDFEFEFEF5F578000002CEA4B4CEA49FF5F57408FF00EF091C48B0A0C18308132A5CC8B0A14383519CA409C44898356C0F33264CA348912143810001FA930690A25F16B769441868A2224002A15CBB664DD82F468C3E8E4C13250D4F2850A244F90353E31245DC80A51156115EBB76ECA2B2F346151B3460C01A7554142824A0344603716BF4C710206BECDABD7BD70E1EBC7870E37D9BDBAD1B376ED4A8457B2448A3933FD25EF2DC064F6A5AB76FBFC9A55BB75BB56A8F903CE9F330C99F46148BFCC197AF73BE7AF3E6259E4BBAB1634747FC0C7AF290C8C7344988382954D11AE1D09DE7D55B6CFAB19F23D01641699D868810211A10287860410391255100D10626CD1BDCD2D5061931442D4A4627D7E8C9FF1337AC109A24192C50A0600183062144924437C4081AB4BC1C9E406B34FCA1136D9DE9A34F3E03E6630F3BC42462481449143144114938F1C4507F3C614420FCF905A06703E2130E38047A26DA36D848038C478154B04121C248534443F80CC4C435017616CE26975C328E679FD5D3633EF3C4A38F06851043CC2F4730148103413CB3CC1967E07148269A587209259144728C67F580165A5CDFE8F3061A6F2492C8100C31100004F6E893491C715C71430F58A8E1061C9354E24C39B6C8124B2CB99803A63E68848187994430E4000112BCA34F33796A520C26946212071DA1B0A28A2AACA4F2092AA3B0625D9868A051889942300401011338DA8C269914FF638C2FCB9CB3CE3BEADC524B2DABA4B24A279D7C62072B72E9B3061A871E92EA428B4ED08E3ECF64920928A4D0FA8C3B6DE6936B2DB3CC02CB2BA27CC1C934DE188B6C22852CAB9003054CE08E3EC6F071071FA404B34C3AD8EA63CF3AE7DC820B2DDE8EF2090CD37063ACA1A82AC9A83BEBF001C619778062AD3BF8E0634F3ACE2C534B2EB0C0324A2A041BBCC61ABF5CF38BBA0949C0EA3AA480114419F366B2CCB515BBF38C2F992043CBB702C3208DC16F20F2CB2FE92A3C813190A4004417108362CC39EF18B8CE3299C8CB0ACF9FC450B0B16B045DF44211B0CA070B2BA410C4C37CF8F2CC3B169FE38BBC4C7F7BCA17A0FC7C702137A18C10040640FF10C40B2BA880421064DC2133DBEBC47B061941F4F0C92B9C7C220D34D8E8C3C61BBF6C238CDE074960400232D4E1420B219CE043193237734E337CC8D1C50F34C8D0C52B317C62DF34FAE051F236C0706E90040524C0831E6F9831C508221CF28E78EBF8E272EC32E4D045279CD8010C34B8E3318C6DBD33E4F90125902106C45A50910D3EE264335E173900C1C5FB5B90320C1F8D0093FD2FC4F0EE7B410E1870800441E0C10F821084333C251370C8063D48013F1EE4400678004621EA078DDCE14F7F4AFA5C0478A0031AD0400765608B26DA100C7AF84206D1A3C103CF90884330A21115D41DF7F6479009102002B223831CE6E0893D88831ED9D08433FF4C8842153E100C89C08322EA67416660702125180000CBE0093DE8E10C41E08378DA210F7924630E3F28A20C904808432CD1823364481425400A1EDCE10C2ECB41109AD1C5F120C314A5B0030F50588642BCC18C8DB060FE36C790090C0002EBE00118BAC0031AF00062BE10875A96810C72A0831576D8C11A0EA1864098B189DB20060D0712C506D8831425809D0EBA20AFC3E1C31DB362852E7AD18A4320E20A80F0242845C910190CA0016C43"
$bData[2] &= "210F82708762D22A1D154B873140C10A5EEC821088A802510C81C66D306394022981001AF0AE44C8E06C6F4CDBBDEC818F773CC318A4708524B490071C40E10F819007E6F2670D6CDE238A0EA09830F000FF062F98615E13AB5933D0690529B4C1044A208A36D8803F765CC39E130080031C250E61F8C20C1013E7B5DAB4AF65B4410A060581097CB2D05FA085970C294317D6E60E77C8A319C5CC84B56E25A075C00107201D03083CC084343C830DC3204650ED4990A939C319EF705BB58CF18C5BC1F2A352A88114C400820ED8000AC3580322F0708DEEADE41EDAB886337CE10B63206319B3E283156A600213D4200B1FE8000998908826B0C11A50204221BE5A9062C0CA18E96893368A3189B5B6E1020BF0C012DEC00636CC20097C4D48338AE10B659CE319F6C8473832F186195CC00250C80011D010D986944319AC28873A32311044182711A5D5082B9611DBDA03463620003B"
; erstellt im TEMPDIR die Datei/-en aus allen vorhandenen $bData Variablen
Global $bDatanames[2] = ["System.gif","Programs.gif"]
For $i = 1 To $bData[0]
Local $sFile = $sPath & $bDatanames[$i -1]
Local $hFileOut = FileOpen($sFile, 2+8+16)
FileWrite($hFileOut, Binary($bData[$i]))
FileClose($hFileOut)
Next
; registriert die Funktion "_DelBinaryTempFiles()", damit die temporär erstellten Dateien bei Beendigung wieder gelöscht werden
OnAutoItExitRegister("_DelBinaryTempFiles")
Func _DelBinaryTempFiles()
For $i = 1 To $bData[0]
FileDelete($sPath & $bDatanames[$i -1])
Next
EndFunc