Jump to content

ISO Creator v1.16 build 2015-07-13 beta


UEZ
 Share

Recommended Posts

Very nice program, UEZ. I'm still trying to figure out how it works. You said you used cd2iso 1.0 which is command line. Your script runs for me without any other files. Therefore, I assume you ported part of their C++ code to AutoIt. Would that be the bunch of hex values for the variable $ISOCreator? Is that just header information and the files are simply packed after the header?

Again, this is some really nice work. I'm gonna keep studying it and maybe I'll learn a few tricks.

Short description: the binary strings which you can see are some images and the cd2iso.exe. When the script starts the binary string $ISOCreator will be saved first to the temp dir and afterwards started when you push the create iso button.

The binary images will be used directly without saving to disk :huh2:

Look here to see how I converted the files to a binary string:

@smartee: I put the DLL to a binary string and it will now started directly from memory without saving it to disk! ;)

@all: can you also test it whether it is working properly?

Here the file: see first post

When it is working I will upload it to the 1st post. Done.

Edit: besides it is very slow it not working currently -> see post below

Br,

UEZ

Edited by UEZ

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Link to comment
Share on other sites

  • Replies 76
  • Created
  • Last Reply

Top Posters In This Topic

If I compare the speed from code from post#1 it is very slow. I aborted it after 3 minutes.

Currently I've mounted an iso in virtual clonedrive which is very fast when testing but as mentioned above it is very slow when doing it by the DLL.

Br,

UEZ

Edited by UEZ

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Link to comment
Share on other sites

ok i just tested your post #21 with a full iso, worked perfectly, (except for being a bit slow). The main reason for it being slower, is because this time, it checks for messages in AutoIt during the conversion process, however, I am going to remove all the debugging code (very little btw) that I added to the dll then post it here.

Link to comment
Share on other sites

Short description: the binary strings which you can see are some images and the cd2iso.exe. When the script starts the binary string $ISOCreator will be saved first to the temp dir and afterwards started when you push the create iso button.

The binary images will be used directly without saving to disk :huh2:

Look here to see how I converted the files to a binary string:

That's absolutely genius. I would have done a fileinstall of the other executable to the temp directory, but that would mean I could only distribute an executable version of a script. You accomplished the task with just the script. See? I'm learning new stuff already. ;)

And just to note, I tested your program in Win XP 32 bit and extracted an Acronis True Image bootable CD. It has a non-standard boot file which is 70 something megabytes and opened the image file in UltraISO and it did extract the boot file correctly. It does seem to produce accurate images from what I can tell. And it was not particularly slow. A 100 MB disc took about a minute to extract.

#include <ByteMe.au3>

Link to comment
Share on other sites

Why didn't we do this all along. With very minimal changes to original app by Harald, here is how to use the dll and have massive speed because we won't be meddling with the C code from AutoIt.

Makes it as easy as the command line version ;)

Download Link

Dunno if you're still fiddling with this app but I figured I'd post it anyway in case anyone comes looking for a faster dll solution :huh2:

Regards,

-smartee

Edited by smartee
Link to comment
Share on other sites

Thanks again smartee but I cannot see the benefit compared with the exe version!

Calling it from the memory is not working.

Br,

UEZ

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Link to comment
Share on other sites

Yes, my first try was to run the exe from the memory using trancexx' RunBinary.au3 but it is not working (returning an em). Further I don't know how to grab the output ($STDOUT_CHILD) when running it with RunBinary.au3 from memory - it was already asked by jscript but never answered.

Br,

UEZ

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Link to comment
Share on other sites

Btw, I hope you don't mind me posting my ramblings in your thread :huh2:

I cannot see the benefit compared with the exe version!

Calling it from the memory is not working.

Lookie here :alien: The speedy dll can be called from memory, it just can't be "interrupted" as easily, but for that you can use the slower dll/Autoit combination we made before.

I'm sure there are cases where interrupting wont be as important though, like automating a whole CD collection backup.

Here's the code for calling the speedy Dll from memory

Global $_MDCodeBuffer, $_MDLoadOffset, $_MDGetOffset, $_MDFreeOffset, $aResult
Global $_MFHookPtr, $_MFHookBak, $_MFHookApi = "LocalCompact"
Global $_MDKernel32Dll = DllOpen("kernel32.dll")

Local $sDrive = "g"
Local $sIsoPath = "new.iso"

MemoryDllInit()
Global $cd2iso_DLL = MemoryDllOpen(cd2iso_DLL())
$aResult = MemoryDllCall($cd2iso_DLL, "int:cdecl", "cd2iso_main", "str", $sDrive, "str", $sIsoPath)

#region memory DLL call
Func MemoryFuncInit()
    Local $KernelHandle = DllCall($_MDKernel32Dll, "ptr", "LoadLibrary", "str", "kernel32.dll")
    Local $HookPtr = DllCall($_MDKernel32Dll, "ptr", "GetProcAddress", "ptr", $KernelHandle[0], "str", $_MFHookApi)
    $_MFHookPtr = $HookPtr[0]

    $_MFHookBak = DllStructCreate("ubyte[7]")
    DllCall($_MDKernel32Dll, "int", "WriteProcessMemory", "ptr", -1, "ptr", DllStructGetPtr($_MFHookBak), "ptr", $_MFHookPtr, "uint", 7, "uint*", 0)

    DllCall($_MDKernel32Dll, "int", "WriteProcessMemory", "ptr", -1, "ptr", $_MFHookPtr, "byte*", 0xB8, "uint", 1, "uint*", 0)
    DllCall($_MDKernel32Dll, "int", "WriteProcessMemory", "ptr", -1, "ptr", $_MFHookPtr + 5, "ushort*", 0xE0FF, "uint", 2, "uint*", 0)
EndFunc   ;==>MemoryFuncInit

Func MemoryFuncCall($RetType, $Address, $Type1 = "", $Param1 = 0, $Type2 = "", $Param2 = 0, $Type3 = "", $Param3 = 0, $Type4 = "", $Param4 = 0, $Type5 = "", $Param5 = 0, $Type6 = "", $Param6 = 0, $Type7 = "", $Param7 = 0, $Type8 = "", $Param8 = 0, $Type9 = "", $Param9 = 0, $Type10 = "", $Param10 = 0, $Type11 = "", $Param11 = 0, $Type12 = "", $Param12 = 0, $Type13 = "", $Param13 = 0, $Type14 = "", $Param14 = 0, $Type15 = "", $Param15 = 0, $Type16 = "", $Param16 = 0, $Type17 = "", $Param17 = 0, $Type18 = "", $Param18 = 0, $Type19 = "", $Param19 = 0, $Type20 = "", $Param20 = 0)
    If Not IsDllStruct($_MFHookBak) Then MemoryFuncInit()

    MemoryFuncSet($Address)
    Local $Ret
    Switch @NumParams
        Case 2
            $Ret = DllCall($_MDKernel32Dll, $RetType, $_MFHookApi)
        Case 4
            $Ret = DllCall($_MDKernel32Dll, $RetType, $_MFHookApi, $Type1, $Param1)
        Case 6
            $Ret = DllCall($_MDKernel32Dll, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2)
        Case 8
            $Ret = DllCall($_MDKernel32Dll, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2, $Type3, $Param3)
        Case 10
            $Ret = DllCall($_MDKernel32Dll, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2, $Type3, $Param3, $Type4, $Param4)
        Case 12
            $Ret = DllCall($_MDKernel32Dll, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2, $Type3, $Param3, $Type4, $Param4, $Type5, $Param5)
        Case Else
            Local $DllCallStr = 'DllCall($_MDKernel32Dll, $RetType, $_MFHookApi', $n, $i
            For $i = 4 To @NumParams Step 2
                $n = ($i - 2) / 2
                $DllCallStr &= ', $Type' & $n & ', $Param' & $n
            Next
            $DllCallStr &= ')'
            $Ret = Execute($DllCallStr)
    EndSwitch
    Return $Ret
EndFunc   ;==>MemoryFuncCall

Func MemoryFuncSet($Address)
    DllCall($_MDKernel32Dll, "int", "WriteProcessMemory", "ptr", -1, "ptr", $_MFHookPtr + 1, "uint*", $Address, "uint", 4, "uint*", 0)
EndFunc   ;==>MemoryFuncSet

Func MemoryFuncExit()
    DllCall($_MDKernel32Dll, "int", "WriteProcessMemory", "ptr", -1, "ptr", $_MFHookPtr, "ptr", DllStructGetPtr($_MFHookBak), "uint", 7, "uint*", 0)
    $_MFHookBak = 0
EndFunc   ;==>MemoryFuncExit

Func MemoryDllInit()
    If IsDllStruct($_MDCodeBuffer) Then Return

    Local $Opcode = '0xFFFFFFFFFFFFFFFFB800000000FFE0B800000000FFE0B800000000FFE0B800000000FFE0B800000000FFE0B800000000FFE0B800000000FFE0B800000000FFE0B800000000FFE0B800000000FFE0B800000000FFE0B800000000FFE0B800000000FFE0B800000000FFE0B800000000FFE0B800000000FFE05589E55156578B7D088B750C8B4D10FCF3A45F5E595DC35589E5578B7D088A450C8B4D10F3AA5F5DC359585A5153E8000000005B81EBAB114000898300114000899304114000E8000000005981E9C3114000518B9100114000E80B0000007573657233322E646C6C005850FFD2598B9104114000E80C0000004D657373616765426F784100595150FFD2898372114000E8000000005981E90D124000518B9100114000E80D0000006B65726E656C33322E646C6C005850FFD2598B9104114000E80A0000006C737472636D70694100595150FFD2898309114000E8000000005981E957124000518B9100114000E80D0000006B65726E656C33322E646C6C005850FFD2598B9104114000E80D0000005669727475616C416C6C6F6300595150FFD2898310114000E8000000005981E9A4124000518B9100114000E80D0000006B65726E656C33322E646C6C005850FFD2598B9104114000E80C0000005669727475616C4672656500595150FFD2898317114000E800000000'
    $Opcode &= '5981E9F0124000518B9100114000E80D0000006B65726E656C33322E646C6C005850FFD2598B9104114000E80F0000005669727475616C50726F7465637400595150FFD289831E114000E8000000005981E93F134000518B9100114000E80D0000006B65726E656C33322E646C6C005850FFD2598B9104114000E80E00000052746C5A65726F4D656D6F727900595150FFD2898325114000E8000000005981E98D134000518B9100114000E80D0000006B65726E656C33322E646C6C005850FFD2598B9104114000E80D0000004C6F61644C6962726172794100595150FFD289832C114000E8000000005981E9DA134000518B9100114000E80D0000006B65726E656C33322E646C6C005850FFD2598B9104114000E80F00000047657450726F634164647265737300595150FFD2898333114000E8000000005981E929144000518B9100114000E80D0000006B65726E656C33322E646C6C005850FFD2598B9104114000E80D00000049734261645265616450747200595150FFD289833A114000E8000000005981E976144000518B9100114000E80D0000006B65726E656C33322E646C6C005850FFD2598B9104114000E80F00000047657450726F636573734865617000595150FFD2898341114000E8000000005981E9C5144000518B9100114000E80D0000006B65726E656C33322E646C6C005850FFD2598B9104114000E80A00000048656170416C6C6F6300'
    $Opcode &= '595150FFD2898348114000E8000000005981E90F154000518B9100114000E80D0000006B65726E656C33322E646C6C005850FFD2598B9104114000E809000000486561704672656500595150FFD289834F114000E8000000005981E958154000518B9100114000E80D0000006B65726E656C33322E646C6C005850FFD2598B9104114000E80C000000476C6F62616C416C6C6F6300595150FFD2898356114000E8000000005981E9A4154000518B9100114000E80D0000006B65726E656C33322E646C6C005850FFD2598B9104114000E80E000000476C6F62616C5265416C6C6F6300595150FFD2898364114000E8000000005981E9F2154000518B9100114000E80D0000006B65726E656C33322E646C6C005850FFD2598B9104114000E80B000000476C6F62616C4672656500595150FFD289835D114000E8000000005981E93D164000518B9100114000E80D0000006B65726E656C33322E646C6C005850FFD2598B9104114000E80C000000467265654C69627261727900595150FFD289836B1140005B59585150E80E04000059C35990585A515250E8CC0500005A5AC35A585250E88E06000059C35589E557565383EC1C8B45108B40048945EC8B55108B020FB750148D740218C745F00000000066837806000F84B0000000837E1000754C8B450C8B583885DB0F8E84000000'
    $Opcode &= 'C744240C04000000C744240800100000895C24048B45EC03460C890424E8FEF9FFFF83EC10894608895C2408C744240400000000890424E864FAFFFFEB46C744240C04000000C7442408001000008B4610894424048B45EC03460C890424E8BDF9FFFF83EC1089C78B55080356148B46108944240889542404893C24E808FAFFFF897E08FF45F083C6288B55108B020FB740063B45F00F8F50FFFFFF8D65F45B5E5F5DC35589E557565383EC1C8B55088B020FB750148D5C0218BF0000000066837806000F84E80000008B432489C2C1EA1D89D683E60189C2C1EA1E83E20189C1C1E91FA9000000027422C7442408004000008B4310894424048B4308890424E822F9FFFF83EC0CE99000000085F6741E85D2740D83F90119D283E2E083C240EB2983F90119D283E29083EA80EB1C85D2740D83F90119D283E2FE83C204EB0B83F90119D283E2F983C208F6432704740681CA000200008B4B1085C97522F6432440740A8B4D088B018B4820EB0EF643248074088B4D088B018B482485C9741D8D45F08944240C89542408894C24048B4308890424E894F8FFFF83EC104783C3288B55088B020FB7400639F80F8F18FFFFFF8D65F45B5E5F5DC35589E557565383EC048B45088B50048955F08B0083B8A400000000745789D30398A0000000833B00744A8B7DF0033B8D4B08BE000000008B430483E808D1E883F80076280FB70189C2C1EA0C25FF0F000083FA037506'
    $Opcode &= '8B550C0114074683C1028B430483E808D1E839F077D8035B04833B0075B683C4045B5E5F5DC35589E557565383EC1CC745F0010000008B45088B40048945EC8B55088B0283B884000000000F84410100008B7DEC03B880000000E9120100008B45EC03470C890424E8BFF7FFFF83EC048945E883F8FF750CC745F000000000E90E0100008B4D0883790800742EC7442408400000008B410C8D048504000000894424048B4108890424E8B6F7FFFF83EC0C8B550889420885C075268B4D088B410C8D04850400000089442404C7042440000000E87EF7FFFF83EC088B55088942088B4D088B510C8B41088B4DE8890C908B4508FF400C833F0074168B5DEC031F8B75EC037710EB11C745F000000000EB578B5DEC035F1089DE833B00744A833B0079190FB703894424048B55E8891424E8FEF6FFFF83EC088906EB1C8B45EC030383C002894424048B4DE8890C24E8E0F6FFFF83EC088906833E0074AB83C30483C604833B0075B6837DF000742483C714C744240414000000893C24E8B9F6FFFF83EC0885C0750A837F0C000F85CDFEFFFF8B45F08D65F45B5E5F5DC35589E557565383EC1C8B45088945F0B8000000008B550866813A4D5A0F85A20100008B75088B45F003703CB800000000813E504500000F8588010000C744240C04000000C7442408002000008B4650894424048B4634890424E815F6FFFF83EC1089C785C07535C744240C04000000C7442408002'
    $Opcode &= '000008B465089442404C7042400000000E8E9F5FFFF83EC1089C7B80000000085FF0F8428010000E803F6FFFFC744240814000000C744240400000000890424E8F2F5FFFF83EC0C89C3897804C7400C00000000C7400800000000C7401000000000C744240C04000000C7442408001000008B465089442404893C24E87EF5FFFF83EC10C744240C04000000C7442408001000008B465489442404893C24E85CF5FFFF83EC108945EC8B55F08B423C03465489442408895424048B45EC890424E8A3F5FFFF8B45EC8B55F003423C8903897834895C2408897424048B4508890424E8B4FAFFFF89F82B4634740C89442404891C24E8A0FCFFFF891C24E814FDFFFF85C0743E891C24E876FBFFFF8B0383782800742A89FA0350287427C744240800000000C744240401000000893C24FFD283EC0C85C0740BC743100100000089D8EB0D891C24E8DB000000B8000000008D65F45B5E5F5DC35589E583EC28895DF48975F8897DFC8B45088B50048955F0C745ECFFFFFFFF8B1083C278B800000000837A04000F848E0000008B5DF0031A837B18007406837B1400750FB800000000EB760FB73F897DECEB458B75F00373208B7DF0037B24C745E800000000837B1800762C8B45F00306894424048B450C890424E820F4FFFF83EC0885C074C4FF45E883C60483C7028B55E839531877'
    $Opcode &= 'D4B800000000837DECFF741EB8000000008B55EC3B531477118B45ECC1E00203431C8B55F003141089D08B5DF48B75F88B7DFC89EC5DC35589E5565383EC108B750885F60F84AC000000837E1000742A8B068B56048B48288D040AC744240800000000C744240400000000891424FFD083EC0CC7461000000000837E08007436BB00000000837E0C007E1D8B4608833C98FF740E8B0498890424E8CCF3FFFF83EC0443395E0C7FE38B4608890424E8AAF3FFFF83EC04837E0400741EC744240800800000C7442404000000008B4604890424E840F3FFFF83EC0CE862F3FFFF89742408C744240400000000890424E85CF3FFFF83EC0C8D65F85B5E5DC3'

    $_MDLoadOffset = (StringInStr($Opcode, "59585A51") - 1) / 2 - 1
    $_MDGetOffset = (StringInStr($Opcode, "5990585A51") - 1) / 2 - 1
    $_MDFreeOffset = (StringInStr($Opcode, "5A585250") - 1) / 2 - 1

    $_MDCodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]")
    DllStructSetData($_MDCodeBuffer, 1, $Opcode)

    If Not IsDllStruct($_MFHookBak) Then MemoryFuncInit()
EndFunc   ;==>MemoryDllInit

Func MemoryDllExit()
    MemoryFuncExit()
    $_MDCodeBuffer = 0
EndFunc   ;==>MemoryDllExit

Func MemoryDllOpen($DllBinary)
    If Not IsDllStruct($_MDCodeBuffer) Then MemoryDllInit()

    Local $Ret = DllCall($_MDKernel32Dll, "hwnd", "LoadLibraryA", "str", "kernel32.dll")
    Local $GetProcAddress = DllCall($_MDKernel32Dll, "uint", "GetProcAddress", "hwnd", $Ret[0], "str", "GetProcAddress")
    Local $LoadLibraryA = DllCall($_MDKernel32Dll, "uint", "GetProcAddress", "hwnd", $Ret[0], "str", "LoadLibraryA")

    Local $DllBuffer = DllStructCreate("byte[" & BinaryLen($DllBinary) & "]")
    DllStructSetData($DllBuffer, 1, $DllBinary)

    MemoryFuncSet(DllStructGetPtr($_MDCodeBuffer) + $_MDLoadOffset)

    Local $Module = DllCall($_MDKernel32Dll, "uint", $_MFHookApi, "uint", $LoadLibraryA[0], "uint", $GetProcAddress[0], "ptr", DllStructGetPtr($DllBuffer))

    $DllBuffer = 0
    Return $Module[0]
EndFunc   ;==>MemoryDllOpen

Func MemoryDllClose($Module)
    MemoryFuncSet(DllStructGetPtr($_MDCodeBuffer) + $_MDFreeOffset)
    DllCall($_MDKernel32Dll, "none", $_MFHookApi, "uint", $Module)
EndFunc   ;==>MemoryDllClose

Func MemoryDllCall($Module, $RetType, $Funcname, $Type1 = "", $Param1 = 0, $Type2 = "", $Param2 = 0, $Type3 = "", $Param3 = 0, $Type4 = "", $Param4 = 0, $Type5 = "", $Param5 = 0, $Type6 = "", $Param6 = 0, $Type7 = "", $Param7 = 0, $Type8 = "", $Param8 = 0, $Type9 = "", $Param9 = 0, $Type10 = "", $Param10 = 0, $Type11 = "", $Param11 = 0, $Type12 = "", $Param12 = 0, $Type13 = "", $Param13 = 0, $Type14 = "", $Param14 = 0, $Type15 = "", $Param15 = 0, $Type16 = "", $Param16 = 0, $Type17 = "", $Param17 = 0, $Type18 = "", $Param18 = 0, $Type19 = "", $Param19 = 0, $Type20 = "", $Param20 = 0)
    Local $Ret, $OpenFlag = False
    Local Const $MaxParams = 20
    If (@NumParams < 3) Or (@NumParams > $MaxParams * 2 + 3) Or (Mod(@NumParams, 2) = 0) Then
        SetError(2)
        Return 0
    EndIf

    If Not IsNumber($Module) Then
        $OpenFlag = True
        $Module = MemoryDllOpen($Module)
    EndIf

    If $Module = 0 Then
        If $OpenFlag Then MemoryDllClose($Module)
        SetError(1)
        Return 0
    EndIf

    MemoryFuncSet(DllStructGetPtr($_MDCodeBuffer) + $_MDGetOffset)
    $Ret = DllCall($_MDKernel32Dll, "uint", $_MFHookApi, "uint", $Module, "str", $Funcname)
    If $Ret[0] = 0 Then
        SetError(3)
        Return 0
    EndIf

    MemoryFuncSet($Ret[0])

    Switch @NumParams
        Case 3
            $Ret = DllCall($_MDKernel32Dll, $RetType, $_MFHookApi)
        Case 5
            $Ret = DllCall($_MDKernel32Dll, $RetType, $_MFHookApi, $Type1, $Param1)
        Case 7
            $Ret = DllCall($_MDKernel32Dll, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2)
        Case 9
            $Ret = DllCall($_MDKernel32Dll, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2, $Type3, $Param3)
        Case 11
            $Ret = DllCall($_MDKernel32Dll, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2, $Type3, $Param3, $Type4, $Param4)
        Case 13
            $Ret = DllCall($_MDKernel32Dll, $RetType, $_MFHookApi, $Type1, $Param1, $Type2, $Param2, $Type3, $Param3, $Type4, $Param4, $Type5, $Param5)
        Case Else
            Local $DllCallStr = 'DllCall($_MDKernel32Dll, $RetType, $_MFHookApi', $n, $i
            $n = 1
            For $i = 5 To @NumParams Step 2
                $DllCallStr &= ', $Type' & $n & ', $Param' & $n
                $n += 1
            Next
            $DllCallStr &= ')'
            $Ret = Execute($DllCallStr)
    EndSwitch
    If $OpenFlag Then MemoryDllClose($Module)
    SetError(0)
    Return $Ret
EndFunc   ;==>MemoryDllCall
#endregion memory DLL call

Func cd2iso_DLL()
    Local $DllHex = "0x4D5A90000300000004000000FFFF0000B8000000000000004000000000000000000000000000000000000000000000000000"
    $DllHex &= "00000000000000000000800000000E1FBA0E00B409CD21B8014CCD21546869732070726F6772616D2063616E6E6F74206265"
    $DllHex &= "2072756E20696E20444F53206D6F64652E0D0D0A2400000000000000504500004C0107003008FD4D0000000000000000E000"
    $DllHex &= "0E230B010238000C0000001A0000000A0000C010000000100000002000000000BC6F00100000000200000400000001000000"
    $DllHex &= "04000000000000000080000000040000DF0E0100030000000000200000100000000010000010000000000000100000000050"
    $DllHex &= "00004C00000000600000D002000000000000000000000000000000000000000000000000000000700000F400000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "00000000000000000000000000000000000000000000000000002E746578740000009C0B000000100000000C000000040000"
    $DllHex &= "000000000000000000000000600050602E646174610000000800000000200000000200000010000000000000000000000000"
    $DllHex &= "0000400030C02E72646174610000A0020000003000000004000000120000000000000000000000000000400060402E627373"
    $DllHex &= "0000000090080000004000000000000000000000000000000000000000000000800060C02E656461746100004C0000000050"
    $DllHex &= "00000002000000160000000000000000000000000000400030402E69646174610000D0020000006000000004000000180000"
    $DllHex &= "000000000000000000000000400030C02E72656C6F630000F40000000070000000020000001C000000000000000000000000"
    $DllHex &= "0000400030420000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000005589E583EC188B4508C74424081040BC6FC74424040040BC6F89"
    $DllHex &= "0424E88B0A0000C9C38DB6000000008DBC27000000005589E583EC188B4508C74424081040BC6FC74424040040BC6F890424"
    $DllHex &= "E85B0A0000C983F80119C0C3908DB426000000005589E55383EC148B150040BC6F85D274348B1D1040BC6F83EB0439DA7715"
    $DllHex &= "8B0385C074F3FFD08B150040BC6F83EB0439DA76EB891424E8190A0000C7050040BC6F00000000C7042400000000E80B0A00"
    $DllHex &= "0083C4145B5DC389F68DBC27000000005589E583EC38895DF48B5D0C8975F88B7508897DFC8B7D1083FB01743B897C240889"
    $DllHex &= "5C2404893424E8D307000083EC0C85DB75158B150040BC6F85D274688945E4E85AFFFFFF8B45E48B5DF48B75F88B7DFC89EC"
    $DllHex &= "5DC20C00C7042480000000E8A009000085C0A30040BC6F7443C70000000000A31040BC6FE833050000E85E070000897C2408"
    $DllHex &= "C744240401000000893424E86A07000083EC0C85C075ACE8FEFEFFFF31C0EBA331C0EB9F8DB600000000E857090000C7000C"
    $DllHex &= "00000031C0EB8A905589E583EC18E8ED0700008B0D0420BC6F85C97431C704240030BC6FE8730900005285C07422C7442404"
    $DllHex &= "0D30BC6F890424E86609000083EC0885C07409C704240420BC6FFFD0C9C3B800000000EBEA905589E5C9C39090905589E5B8"
    $DllHex &= "01000000C9C20C005589E583EC38C745F400000000C7442410000000008D45F48944240CC744240800080000C74424044040"
    $DllHex &= "BC6FA12440BC6F890424E80709000083EC1431C0817DF4000800000F95C0C9C366905589E583EC38C745F400000000C74424"
    $DllHex &= "10000000008D45F48944240CC744240800080000C74424044040BC6FA12040BC6F890424E8C308000083EC1431C0817DF400"
    $DllHex &= "0800000F95C0C9C366905589E583EC08E8A9FFFFFF85C07405C9C38D7600C9E94EFFFFFF66905589E557565383EC2CE8D6FF"
    $DllHex &= "FFFF89C285C0751EA04140BC6F3C43741F3C63741BC704245B30BC6FE80F080000BA0100000089D083C42C5B5E5FC9C3A042"
    $DllHex &= "40BC6F3C4474043C6475D8803D4340BC6F3075CF803D4440BC6F3075C6803D4540BC6F3175BDC704242430BC6F8955E4E8C9"
    $DllHex &= "0700000FB61D9340BC6FC1E3180FB6059240BC6FC1E01009C30FB6059040BC6F09C30FB6059140BC6FC1E00809C383FB118B"
    $DllHex &= "55E47E36BFA4060000BE11000000EB0A66904683C76439DE7D2089F899F7FB89442404C704243630BC6FE88B070000E80EFF"
    $DllHex &= "FFFF89C285C074D8C704244830BC6F8955E4E8510700008B55E489D083C42C5B5E5FC9C35589E55383EC0431DB8D7600E8DB"
    $DllHex &= "FEFFFF85C075064383FB1075F15A5BC9C3905589E583EC18A12040BC6F85C07413890424E86D07000050C7052040BC6F0000"
    $DllHex &= "0000A12440BC6F85C07413890424E85107000051C7052440BC6F00000000C9C35589E5565383EC208B5D088B750CE8ADFFFF"
    $DllHex &= "FFC744241800000000C744241400000000C744241003000000C744240C00000000C744240801000000C74424040000008089"
    $DllHex &= "1C24E80107000083EC1CA32040BC6F40744EC744241800000000C744241400000000C744241002000000C744240C00000000"
    $DllHex &= "C744240800000000C744240400000040893424E8BE06000083EC1CA32440BC6F40743331C08D65F85B5EC9C36690895C2408"
    $DllHex &= "C74424047830BC6FA1F460BC6F83C040890424E82C060000B8010000008D65F85B5EC9C389742408C74424048C30BC6FEBD6"
    $DllHex &= "66905589E5565381EC20020000C744240800000000C744240401000000C70424A430BC6FE8010600008B450889442408C744"
    $DllHex &= "2404EA30BC6F8D9DF8FEFFFF891C24E8D40500008B450C894424048DB5F8FDFFFF893424E8C705000089742408895C2404C7"
    $DllHex &= "0424F230BC6FE8BB050000C7052040BC6F00000000C7052440BC6F0000000089742404891C24E897FEFFFF85C0741B8985F4"
    $DllHex &= "FDFFFFE848FEFFFF8B85F4FDFFFF81C4200200005B5EC9C3E813FEFFFF85C075DCE812FDFFFFEBD500000000000000005589"
    $DllHex &= "E583EC4885C9895DF489C38975F889D6897DFC89CF750D8B5DF48B75F88B7DFC89EC5DC38D45C8C74424081C000000894424"
    $DllHex &= "04891C24E87705000083EC0C85C074768B45DC83F804742983F84074248D45E48944240C8B45D4C744240840000000894424"
    $DllHex &= "048B45C8890424E84A05000083EC10897C240889742404891C24E8E70400008B45DC83F804748C83F84074878D45E4894424"
    $DllHex &= "0C8B45E4894424088B45D4894424048B45C8890424E80A05000083EC10E95FFFFFFFC744240834000000C74424041031BC6F"
    $DllHex &= "C704243031BC6FE89E0400008D76008DBC27000000005589E583EC28A14048BC6F895DF48975F8897DFC85C0740D8B5DF48B"
    $DllHex &= "75F88B7DFC89EC5DC3B8A032BC6F2DA032BC6F83F807C7054048BC6F010000007EDA83F80BBBA032BC6F7E288B3DA032BC6F"
    $DllHex &= "85FF751E8B35A432BC6F85F675148B0DA832BC6F85C9750ABBAC32BC6F908D7426008B1385D2743A81FBA032BC6F739ABE00"
    $DllHex &= "00BC6F8D7DE08B4304B90400000001F08B10031383C3088955E089FAE87FFEFFFF81FBA032BC6F72DDE96AFFFFFF66908B43"
    $DllHex &= "0485C075BF837B0801908D7426000F8552FFFFFF83C30C81FBA032BC6F0F8343FFFFFFBE0000BC6FEB338D74260083FA2074"
    $DllHex &= "7B83FA08745829CF83FA10897DE4743F83FA20746E83FA087453669083C30C81FBA032BC6F0F8309FFFFFF8B43048B0B0FB6"
    $DllHex &= "530801F001F183FA108B3975BD0FB7106685D2784B29CA8D3C3A897DE4B9020000008D55E4E8E0FDFFFFEBBE0FB61084D278"
    $DllHex &= "3C29CA8D3C3A897DE4B9010000008D55E4E8C2FDFFFFEBA0033829CF897DE4B9040000008D55E4E8ACFDFFFFEB8A81CA0000"
    $DllHex &= "FFFF29CA01FA8955E4EBAE81CA00FFFFFF29CA01FA8955E4EBBD9090909090909090909090905589E583EC08A10020BC6F8B"
    $DllHex &= "0085C07417FFD0A10020BC6F8D50048B400489150020BC6F85C075E9C9C38DB6000000005589E5565383EC108B1D881BBC6F"
    $DllHex &= "83FBFF742D85DB74138D349D881BBC6F6690FF1683EE0483EB0175F6C704241018BC6FE8BAF7FFFF83C4105B5E5DC38D7600"
    $DllHex &= "31DBEB0289C38D43018B1485881BBC6F85D275F0EBBD8D76008DBC27000000005589E583EC088B0D5048BC6F85C97402C9C3"
    $DllHex &= "C7055048BC6F01000000C9EB819055B80100000089E55DC20C00909090905589E583EC08A16448BC6F8B4048C9FFE08D7600"
    $DllHex &= "5589E5565383EC60C7442408490000008D5DAF895C24040FB7C0890424E84E02000083EC0C85C074338D55CE31C0B9010000"
    $DllHex &= "00EB0E8D760031F609F039DA7410D1E14A803A4175F089CE09F039DA75F083385075238D65F85B5EC9C3C74424085C000000"
    $DllHex &= "C74424046031BC6FC70424A831BC6FE8A8010000C744240862000000C74424046031BC6FC70424E431BC6FE88C0100005589"
    $DllHex &= "E557565381ECCC0000008D559FB920000000B04189D7F3AA8D45BFB12989C7BE6032BC6FF3A4891424E8B4010000516685C0"
    $DllHex &= "0F85CE000000C7042450000000E80601000089C3B95000000031C089DFF3AAC70350000000C74318FFFFFFFFC74328FFFFFF"
    $DllHex &= "FFC74330FFFFFFFFC743480C1BBC6FC7434CD018BC6F8DB556FFFFFF8D8575FFFFFFB101EB03D1E14889DA21CA83FA0119D2"
    $DllHex &= "83E22083C241881039F075E88D9576FFFFFFB92900000089D7BE6032BC6FF3A4890424E82C010000526685C074500FB7C0E8"
    $DllHex &= "9EFEFFFF39C37440891C24898544FFFFFFE85C0000008B8544FFFFFF8D504889156848BC6F8D504C89156C48BC6FA36448BC"
    $DllHex &= "6F8D65F45B5E5FC9C38D76000FB7C0E85CFEFFFFEBD489D8EBD0C744240897000000C74424046031BC6FC704243032BC6FE8"
    $DllHex &= "5A0000009090FF25E860BC6F9090FF250461BC6F9090FF25FC60BC6F9090FF250861BC6F9090FF25F060BC6F9090FF251461"
    $DllHex &= "BC6F9090FF250061BC6F9090FF251861BC6F9090FF251C61BC6F9090FF251061BC6F9090FF250C61BC6F9090FF25EC60BC6F"
    $DllHex &= "9090FF25F860BC6F9090FF25C860BC6F9090FF25CC60BC6F9090FF25DC60BC6F9090FF25D060BC6F9090FF25B860BC6F9090"
    $DllHex &= "FF25BC60BC6F9090FF25D860BC6F9090FF25D460BC6F9090FF25C460BC6F9090FF25C060BC6F9090FF25B460BC6F90905589"
    $DllHex &= "E583EC18E809F6FFFFC70424D011BC6FE8ADF4FFFFC9C3909090FFFFFFFF6C1BBC6F00000000FFFFFFFF0000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000981BBC6F"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "00000000000000006C696267636A5F732E646C6C005F4A765F5265676973746572436C61737365730000000049534F393636"
    $DllHex &= "302064657465637465642E000D436F7079696E67202E2E2E2025642525000D436F7079696E6720636F6D706C657465210045"
    $DllHex &= "52524F523A2049534F39393630206E6F742064657465637465642E00436F756C64206E6F74206F70656E2025732E0A00436F"
    $DllHex &= "756C64206E6F74206372656174652025732E0A00000063643269736F2025642E256420436F70797269676874203230303820"
    $DllHex &= "486172616C6420566973746E65732E0A4D6F6464656420746F20646C6C20627920736D61727465650A005C5C2E5C25733A00"
    $DllHex &= "436F7079696E6720647269766520257320746F2025732E2E2E0A000000002E2E2F2E2E2F72756E74696D652F70736575646F"
    $DllHex &= "2D72656C6F632E63000000005669727475616C51756572792028616464722C2026622C2073697A656F662862292900000000"
    $DllHex &= "000000000000000000002E2E2F2E2E2F2E2E2F2E2E2F6763632D342E342E312F6C69626763632F2E2E2F6763632F636F6E66"
    $DllHex &= "69672F693338362F6379676D696E672D7368617265642D646174612E63000000302026262022436F756C646E277420726574"
    $DllHex &= "7269657665206E616D65206F66204743436C69622073686172656420646174612061746F6D22000000007265742D3E73697A"
    $DllHex &= "65203D3D2073697A656F66285F5F6379676D696E675F7368617265642920262620224743436C696220736861726564206461"
    $DllHex &= "74612073697A65206D69736D617463682200302026262022436F756C646E277420616464204743436C696220736861726564"
    $DllHex &= "20646174612061746F6D2200000000002D4743434C49424359474D494E472D45482D54444D312D534A4C4A2D475448522D4D"
    $DllHex &= "494E475733320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000003008FD4D00000000325000000100"
    $DllHex &= "00000100000001000000285000002C50000030500000CC14000040500000000063643269736F646C6C2E646C6C0063643269"
    $DllHex &= "736F5F6D61696E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406000000000"
    $DllHex &= "0000000000007C620000B4600000746000000000000000000000C4620000E860000000000000000000000000000000000000"
    $DllHex &= "000000000000000024610000306100003E6100004C61000058610000686100007C6100008E6100009A610000AC610000BC61"
    $DllHex &= "00000000000000000000C8610000D6610000E0610000EA610000F2610000FA610000046200000E6200001662000020620000"
    $DllHex &= "2A620000346200003C62000046620000000000000000000024610000306100003E6100004C61000058610000686100007C61"
    $DllHex &= "00008E6100009A610000AC610000BC6100000000000000000000C8610000D6610000E0610000EA610000F2610000FA610000"
    $DllHex &= "046200000E62000016620000206200002A620000346200003C6200004662000000000000010041646441746F6D4100002600"
    $DllHex &= "436C6F736548616E646C6500440043726561746546696C654100B00046696E6441746F6D4100DD0047657441746F6D4E616D"
    $DllHex &= "6541000051014765744D6F64756C6548616E646C654100006C0147657450726F634164647265737300006802526561644669"
    $DllHex &= "6C6500001E035669727475616C50726F74656374000021035669727475616C517565727900003B03577269746546696C6500"
    $DllHex &= "34005F5F646C6C6F6E657869740089005F61737365727400B6005F6572726E6F00000A015F696F620000470261626F727400"
    $DllHex &= "620266666C75736800006B02667072696E7466007102667265650000A4026D616C6C6F630000AA026D656D6370790000B102"
    $DllHex &= "7072696E74660000B402707574730000C502737072696E746600CD0273747263707900000060000000600000006000000060"
    $DllHex &= "0000006000000060000000600000006000000060000000600000006000004B45524E454C33322E646C6C0000000014600000"
    $DllHex &= "1460000014600000146000001460000014600000146000001460000014600000146000001460000014600000146000001460"
    $DllHex &= "00006D73766372742E646C6C0000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "00000000000000000000000000000000000000100000E80000000D3015303D3045306930733088309D30F630273134318D31"
    $DllHex &= "9831AA31C0310C32113258325D32AD32BC32D532E332EC32F532FF320E33183324332D3360337733B733CA33D333E6333F34"
    $DllHex &= "82349C34A134C434EA34FE3430353B35453556365D36773696369B36A436B236BA36C436CE36D736E836EF3613373B374637"
    $DllHex &= "75371738243830384A385A386D388C38A838B438D7384C39533968396F399A39E939F0392A3A633A6C3A713A9A3AA13AAE3A"
    $DllHex &= "B63ABE3AC63ACE3AD63ADE3AE63AEE3AF63AFE3A063B0E3B163B1E3B263B2E3B363B3E3B463B4E3B563B5E3B663B7A3B8C3B"
    $DllHex &= "002000000C000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    $DllHex &= "000000000000000000000000000000000000000000000000000000000000"
    Return Binary($DllHex)
EndFunc   ;==>cd2iso_DLL

;)In more exciting news, I re-compiled the cd2iso exe, it now works with trancexx's UDF!! :)

We may just need to figure out that bit about grabbing STDOUT, but we can simply show the console window, as I did in this example, its equally exciting to me, once it's all from memory :ph34r:

Download Link

Regards,

smartee

Edited by smartee
Link to comment
Share on other sites

Anybody got any issue, problem or bug?

Br,

UEZ

G'day UEZ

I like the program. I download a similar one to backup customer install disks a while ago. BUT I prefer AU3 implementations as I can see what they are doing. :huh2:

When development slows a little ;) I'd suggest to add command line switches so it can be used from a batch or another program/script. I know the cd2iso is a command line utilty but I like your GUI. :alien:

Somthing like

{script name} scr="{Drive}" dest="{path and filename)" /auto

Would be great.

Anyway keep up the great work!

John Morrison

Link to comment
Share on other sites

@smartee: thanks for your efforts here! I'm greatly appreciated :huh2:

I already did the test with the fast DLL version you provided but without having the possibility of interruption and progress status I will stay with the slower version (same to the exe version calling it from memory).

@storme: I added the option to start ISO creator with command line parameters. Look to the first post.

Br,

UEZ

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Link to comment
Share on other sites

@storme: I added the option to start ISO creator with command line parameters. Look to the first post.

Br,

UEZ

Thanks!

I downloaded an earlier version and didn't realise that the cmdline had been put in the latest.

:huh2:

John Morrison

Link to comment
Share on other sites

hi again UEZ,

Looks like the "internals" are settled then.

Btw, you know what'll be cool? More info in the Combo boxes!! Something like this perhaps:)

Posted Image

I made two functions that you can just snap in to your script to add the functionality ;)

#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
#include <GuiComboBox.au3>

Local $aDriveLetters

#region ### START Koda GUI section ### Form=
$Form1 = GUICreate("More info in the combo :)", 400, 75)
$Combo1 = GUICtrlCreateCombo(_DrivesInfo($aDriveLetters), 8, 8, 250, 25, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL))
$Button1 = GUICtrlCreateButton("Which drive?", 8, 43, 150, 25)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            MsgBox(64, "Demo", $aDriveLetters[_GUICtrlComboBox_GetCurSel($Combo1) + 1])
    EndSwitch
WEnd

Func _DrivesInfo(ByRef $aDrives, $sType = "CDROM")
    Local $sListFormat = "[%s:%s] (%s) %s"
    $aDrives = DriveGetDrive($sType)
    If IsArray($aDrives) Then
        Local $aComboDrives[$aDrives[0] + 1]
        $aComboDrives[0] = $aDrives[0]
        For $i = 1 To $aDrives[0]
            $aComboDrives[$i] = StringFormat($sListFormat, _
                    DriveGetFileSystem($aDrives[$i]), _
                    _BytesUnit(DriveSpaceTotal($aDrives[$i]), 1, 2, 0, 2), _
                    StringUpper($aDrives[$i]), _
                    DriveGetLabel($aDrives[$i]))
        Next
    Else
        Return SetError(1, 0, "") ;No drives found because $aDrives not an array
    EndIf
    Return _ArrayToString($aComboDrives, "|", 1)
EndFunc   ;==>_DrivesInfo

Func _BytesUnit($nBytes, $nReturnUnits = 1, $nDecimalPlaces = 2, $nInt = 0, $nInputUnit = 0)
    Local $asSI[9] = ["B", "K", "M", "G", "T", "P", "E", "Z", "Y"]
    While ($nBytes / 1024.0) >= 1
        $nBytes /= 1024.0
        $nInputUnit += 1
    WEnd
    If $nInt Then
        $nBytes = Int($nBytes)
    Else
        $nBytes = Round($nBytes, $nDecimalPlaces)
    EndIf
    If $nReturnUnits Then
        $nBytes &= " " & $asSI[$nInputUnit]
        If $nInputUnit > 0 Then $nBytes &= $asSI[0]
    EndIf
    Return $nBytes
EndFunc   ;==>_BytesUnit

Regards, :huh2:

-smartee

EDIT: Made code more portable

Edited by smartee
Link to comment
Share on other sites

@smartee: thanks for the idea.

Idea implemented without redesigning the whole GUI :huh2:

Br,

UEZ

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Link to comment
Share on other sites

smartee, I'm liking _BytesUnit() a bit like _ByteSuffix()!!

UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...