UEZ Posted June 17, 2011 Author Share Posted June 17, 2011 (edited) 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 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 postWhen it is working I will upload it to the 1st post. Done.Edit: besides it is very slow it not working currently -> see post belowBr,UEZ Edited June 17, 2011 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 More sharing options...
smartee Posted June 17, 2011 Share Posted June 17, 2011 Aargh the dll is only writing 1st 34k .. back to debugging Link to comment Share on other sites More sharing options...
smartee Posted June 17, 2011 Share Posted June 17, 2011 oh very nice which dll are you using? Link to comment Share on other sites More sharing options...
UEZ Posted June 17, 2011 Author Share Posted June 17, 2011 The one from your post #17. 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 More sharing options...
smartee Posted June 17, 2011 Share Posted June 17, 2011 It seems to be working fine from your program I aborted after 8mb of an iso and i opened it with 7zip and i saw a couple files. Have you tested with a full iso yet? Link to comment Share on other sites More sharing options...
UEZ Posted June 17, 2011 Author Share Posted June 17, 2011 (edited) 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 June 17, 2011 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 More sharing options...
smartee Posted June 17, 2011 Share Posted June 17, 2011 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 More sharing options...
smartee Posted June 17, 2011 Share Posted June 17, 2011 (edited) Here it is Download Link Edited June 30, 2011 by smartee Link to comment Share on other sites More sharing options...
sleepydvdr Posted June 17, 2011 Share Posted June 17, 2011 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 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 More sharing options...
smartee Posted June 18, 2011 Share Posted June 18, 2011 (edited) 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 LinkDunno 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 Regards,-smartee Edited June 30, 2011 by smartee Link to comment Share on other sites More sharing options...
UEZ Posted June 18, 2011 Author Share Posted June 18, 2011 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 More sharing options...
smartee Posted June 18, 2011 Share Posted June 18, 2011 Indeed, this dll is too similar to the exe to add any benefits Btw, have you tried trancexx's run binary from memory with the exe version? Seems interesting. Link to comment Share on other sites More sharing options...
UEZ Posted June 18, 2011 Author Share Posted June 18, 2011 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 More sharing options...
smartee Posted June 19, 2011 Share Posted June 19, 2011 (edited) Btw, I hope you don't mind me posting my ramblings in your thread I cannot see the benefit compared with the exe version! Calling it from the memory is not working.Lookie here 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 memoryexpandcollapse popupGlobal $_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 Download Link Regards, smartee Edited June 30, 2011 by smartee Link to comment Share on other sites More sharing options...
storme Posted June 19, 2011 Share Posted June 19, 2011 Anybody got any issue, problem or bug?Br,UEZG'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. 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. Somthing like {script name} scr="{Drive}" dest="{path and filename)" /autoWould be great.Anyway keep up the great work!John Morrison Some of my small contributions to AutoIt Browse for Folder Dialog - Automation SysTreeView32 | FileHippo Download and/or retrieve program information | Get installedpath from uninstall key in registry | RoboCopy function John Morrison aka Storm-E Link to comment Share on other sites More sharing options...
UEZ Posted June 19, 2011 Author Share Posted June 19, 2011 @smartee: thanks for your efforts here! I'm greatly appreciated 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 More sharing options...
storme Posted June 19, 2011 Share Posted June 19, 2011 @storme: I added the option to start ISO creator with command line parameters. Look to the first post.Br,UEZThanks!I downloaded an earlier version and didn't realise that the cmdline had been put in the latest.John Morrison Some of my small contributions to AutoIt Browse for Folder Dialog - Automation SysTreeView32 | FileHippo Download and/or retrieve program information | Get installedpath from uninstall key in registry | RoboCopy function John Morrison aka Storm-E Link to comment Share on other sites More sharing options...
smartee Posted June 19, 2011 Share Posted June 19, 2011 (edited) 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:)I made two functions that you can just snap in to your script to add the functionality expandcollapse popup#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 ;==>_BytesUnitRegards, -smarteeEDIT: Made code more portable Edited June 19, 2011 by smartee Link to comment Share on other sites More sharing options...
UEZ Posted June 19, 2011 Author Share Posted June 19, 2011 @smartee: thanks for the idea. Idea implemented without redesigning the whole GUI 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 More sharing options...
guinness Posted June 19, 2011 Share Posted June 19, 2011 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 parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now