Mit folgendem Code können beliebig viele Dateien in eine einzige Datei zusammenkopiert werden. Das Skript erstellt außerdem den Code um die einzelnen Dateien im Bedarfsfall wieder in einzelne Dateien aufzusplitten. Dieser Code wird in die Zwischenablage kopiert und kann so in einem anderen Skript eingefügt werden. Die neu erstellte Datei SourceFile.dll sollte auch in das Verzeichnis des anderen Skriptes kopiert werden.
Ich hoffe, dass meine Erklärung zu dem Skript verständlich ist und dass jemand dafür Verwendung findet. Ich brauche nun nicht mehr mit dem Resource-Hacker eine richtige dll-Datei zu erstellen, in denen meine Bilder, Avi's gespeichert sind, sondern nur noch dieses Skript.
Meldet euch bei Problemen oder Fragen, aber auch bei Kritik (hoffentlich positiv)
Make SourceFile.au3
#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]AutoIt Version: 3.2.12.1
Author: funkey
Release Date: 10. Dec. 2008
Version: 1.2
Script Function:
Dieses Skript packt alle ausgewählten Resourcen in die Datei 'SourceFile.src'.
Es wird der zum Zerlegen der Datei benötigte Code automatisch generiert und
in der Zwischenablage gespeichert.
Dieser Code wird dann in das Skript eingefügt, in dem die Resourcen benötigt
werden. Die Dateien können dann wie im folgenden Beispiel verwendet werden.
Bsp.: GUICtrlCreateIcon($Source_File_1, -1, 5,5, 32,32)
GUICtrlCreateIcon($Source_File_2, -1, 55,55, 32,32)
GUICtrlCreateAvi(Source_File_3, -1, 100, 5, 50, 50)
GUICtrlCreatePic(Source_File_4, 5, 200)
Die zur Laufzeit des Skriptes entstehenden Dateien werden im temporären Ordner
erstellt und sollten beim Beenden des Skriptes wieder gelöscht werden.
Bsp.: FileDelete($Source_File_1)
FileDelete($Source_File_2)
FileDelete($Source_File_3)
FileDelete($Source_File_4)
#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]Local $Dummy, $Sources, $Dateien = '"', $SourceFile = '"'&@ScriptDir&'\SourceFile.src"', $Result = ""
[/autoit] [autoit][/autoit] [autoit]Do
$Sources = FileOpenDialog("Resourcen wählen", @ScriptDir, "Alle Dateien (*.*)|Bilder (*.jpg;*.bmp)|Videos (*.avi)|Icons (*.ico)|Executables (*.exe)|DLL's (*.dll)", 5)
If $Sources = "" Then ExitLoop
If StringInStr($Sources, "|") = 0 Then
$Dateien &= $Sources&'" + "'
Else
$Dummy = StringSplit($Sources, "|")
For $i = 2 To $Dummy[0]
$Dateien &= $Dummy[1]&'\'&$Dummy[$i]&'" + "'
Next
EndIf
Until MsgBox(36, "Weitere Dateien hinzufügen", "Willst du noch weitere Dateien zur Source-Datei hinzufügen?") = 7
$Dateien = StringTrimRight($Dateien, 4)
$aDateien = StringSplit(StringTrimRight(StringTrimLeft($Dateien,1),1), '" + "', 1)
$SourceFile = Run(@ComSpec & " /c " & 'copy /b '&$Dateien&" "&$SourceFile, "", @SW_HIDE)
[/autoit] [autoit][/autoit] [autoit]Local $aSize[$aDateien[0]]
For $i = 1 To $aDateien[0]
$aSize[$i-1] = FileGetSize($aDateien[$i])
Next
$Result = "#Region 'Make SourceFile.au3'"&@CRLF
$Result &= "$Datei = FileOpen(@ScriptDir&'\SourceFile.src', 4)"&@CRLF
For $i = 1 To $aDateien[0]
$Result &= "$Source_"&$i&" = FileRead($Datei, "&$aSize[$i-1]&") ;Dateigröße nicht verändern!"&@CRLF
$Result &= "Do"&@CRLF
$Result &= " $Source_File_"&$i&" = @TempDir & '\temp' & Hex(Random(0, 65535), 4) ;"&$aDateien[$i]&@CRLF
$Result &= "Until Not FileExists($Source_File_"&$i&")"&@CRLF
$Result &= "$TempFile_"&$i&" = FileOpen($Source_File_"&$i&", 18)"&@CRLF
$Result &= "FileWrite($TempFile_"&$i&", $Source_"&$i&")"&@CRLF
$Result &= "FileClose($TempFile_"&$i&")"&@CRLF
Next
$Result &= "FileClose($Datei)"&@CRLF
$Result &= "#EndRegion 'Make SourceFile.au3'"
ClipPut($Result)
[/autoit]Edit: Version 1.2 : Bug ausgemerzt. Es mussten immer mehr als eine Datei ausgewählt werden.
Kommentar hinzugefügt, Filter nochmals erweitert.