Yashied Posted September 19, 2011 Share Posted September 19, 2011 (edited) expandcollapse popupFunc _IconImage_FromGdipBitmap($Gdibmp) Local $tDIBSECTION, $aSize, $tData, $tHeader, $Error, $pBits, $hBitmap, $hMask = 0 Local $BitmapSize, $BitmapBits, $MaskSize, $MaskBits Local $IconImage = Binary("") $aSize = DllCall($ghGDIPDll, "uint", "GdipGetImageDimension", "ptr", $Gdibmp, "float*", 0, "float*", 0) If (@error) Or ($aSize[0]) Then Return SetError(1, 0, $IconImage) EndIf $tData = _GDIPlus_BitmapLockBits($Gdibmp, 0, 0, $aSize[2], $aSize[3], $GDIP_ILMREAD, $GDIP_PXF32ARGB) $pBits = DllStructGetData($tData, "Scan0") If Not $pBits Then Return SetError(1, 0, $IconImage) EndIf $hBitmap = _WinAPI_CreateDIB($aSize[2], $aSize[3]) If Not @error Then _WinAPI_SetBitmapBits($hBitmap, $aSize[2] * $aSize[3] * 4, $pBits) EndIf _GDIPlus_BitmapUnlockBits($Gdibmp, $tData) If Not $hBitmap Then Return SetError(1, 0, $IconImage) EndIf Do $Error = 1 $tDIBSECTION = DllStructCreate($tagDIBSECTION) If Not _WinAPI_GetObject($hBitmap, DllStructGetSize($tDIBSECTION), DllStructGetPtr($tDIBSECTION)) Then ExitLoop EndIf $BitmapSize = DllStructGetData($tDIBSECTION, "biSizeImage") $BitmapBits = DllStructGetData($tDIBSECTION, "bmBits") $hMask = _WinAPI_CreateANDBitmap($hBitmap) If @error Then ExitLoop EndIf If Not _WinAPI_GetObject($hMask, DllStructGetSize($tDIBSECTION), DllStructGetPtr($tDIBSECTION)) Then ExitLoop EndIf $MaskSize = DllStructGetData($tDIBSECTION, "biSizeImage") $MaskBits = DllStructGetData($tDIBSECTION, "bmBits") $Error = 0 Until 1 If Not $Error Then $tHeader = DllStructCreate(StringReplace($tagBITMAPINFO, "dword RGBQuad", "")) DllStructSetData($tHeader, "Size", 40) DllStructSetData($tHeader, "Planes", 1) DllStructSetData($tHeader, "BitCount", 32) DllStructSetData($tHeader, "Width", $aSize[2]) DllStructSetData($tHeader, "Height", $aSize[3] * 2) DllStructSetData($tHeader, "SizeImage", $BitmapSize + $MaskSize) $IconImage = _BinaryFromDLLStruct($tHeader) & _BinaryFromMemory($BitmapBits, $BitmapSize) & _BinaryFromMemory($MaskBits, $MaskSize) EndIf _WinAPI_DeleteObject($hBitmap) If $hMask Then _WinAPI_DeleteObject($hMask) EndIf Return SetError($Error, 0, $IconImage) EndFunc ;==>_IconImage_FromGdipBitmap I'll include _WinAPI_CreateANDBitmap() in WinAPIEx UDF in the next release. Edited September 19, 2011 by Yashied My UDFs: iKey | FTP Uploader | Battery Checker | Boot Manager | Font Viewer | UDF Keyword Manager | Run Dialog Replacement | USBProtect | 3D Axis | Calculator | Sleep | iSwitcher | TM | NetHelper | File Types Manager | Control Viewer | SynFolders | DLL Helper Animated Tray Icons UDF Library | Hotkeys UDF Library | Hotkeys Input Control UDF Library | Caret Shape UDF Library | Context Help UDF Library | Most Recently Used List UDF Library | Icons UDF Library | FTP UDF Library | Script Communications UDF Library | Color Chooser UDF Library | Color Picker Control UDF Library | IPHelper (Vista/7) UDF Library | WinAPI Extended UDF Library | WinAPIVhd UDF Library | Icon Chooser UDF Library | Copy UDF Library | Restart UDF Library | Event Log UDF Library | NotifyBox UDF Library | Pop-up Windows UDF Library | TVExplorer UDF Library | GuiHotKey UDF Library | GuiSysLink UDF Library | Package UDF Library | Skin UDF Library | AITray UDF Library | RDC UDF Library Appropriate path | Button text color | Gaussian random numbers | Header's styles (Vista/7) | ICON resource enumeration | Menu & INI | Tabbed string size | Tab's skin | Pop-up circular menu | Progress Bar without animation (Vista/7) | Registry export | Registry path jumping | Unique hardware ID | Windows alignment More... Link to comment Share on other sites More sharing options...
Ward Posted September 20, 2011 Author Share Posted September 20, 2011 (edited) I'll include _WinAPI_CreateANDBitmap() in WinAPIEx UDF in the next release. Thanks, Yashied. I am waiting, and then I will update IconImage to use your _WinAPI_CreateANDBitmap . But you use DllStructCreate to allocate the buffer for machine code, don't forget use VirtualProtect to set the memory block to PAGE_EXECUTE_READWRITE. Or just use _MemVirtualAlloc(0, BinaryLen($Code), $MEM_COMMIT, $PAGE_EXECUTE_READWRITE). This will avoid the DEP issue. Edited September 20, 2011 by Ward 新版 _ArrayAdd 的白痴作者,不管是誰,去死一死好了。 Link to comment Share on other sites More sharing options...
Yashied Posted September 20, 2011 Share Posted September 20, 2011 (edited) But you use DllStructCreate to allocate the buffer for machine code, don't forget use VirtualProtect to set the memory block to PAGE_EXECUTE_READWRITE. Or just use _MemVirtualAlloc(0, BinaryLen($Code), $MEM_COMMIT, $PAGE_EXECUTE_READWRITE). This will avoid the DEP issue.I know about it, and rewrote _WinAPI_CreateANDBitmap() (32- and 64-bit) for the final release. Thanks for your wonderful UDF and another contribution to the AutoIt! P.S Also I will include _WinAPI_ReleaseStream() by Prog@ndy. Edited September 20, 2011 by Yashied My UDFs: iKey | FTP Uploader | Battery Checker | Boot Manager | Font Viewer | UDF Keyword Manager | Run Dialog Replacement | USBProtect | 3D Axis | Calculator | Sleep | iSwitcher | TM | NetHelper | File Types Manager | Control Viewer | SynFolders | DLL Helper Animated Tray Icons UDF Library | Hotkeys UDF Library | Hotkeys Input Control UDF Library | Caret Shape UDF Library | Context Help UDF Library | Most Recently Used List UDF Library | Icons UDF Library | FTP UDF Library | Script Communications UDF Library | Color Chooser UDF Library | Color Picker Control UDF Library | IPHelper (Vista/7) UDF Library | WinAPI Extended UDF Library | WinAPIVhd UDF Library | Icon Chooser UDF Library | Copy UDF Library | Restart UDF Library | Event Log UDF Library | NotifyBox UDF Library | Pop-up Windows UDF Library | TVExplorer UDF Library | GuiHotKey UDF Library | GuiSysLink UDF Library | Package UDF Library | Skin UDF Library | AITray UDF Library | RDC UDF Library Appropriate path | Button text color | Gaussian random numbers | Header's styles (Vista/7) | ICON resource enumeration | Menu & INI | Tabbed string size | Tab's skin | Pop-up circular menu | Progress Bar without animation (Vista/7) | Registry export | Registry path jumping | Unique hardware ID | Windows alignment More... Link to comment Share on other sites More sharing options...
Ward Posted September 20, 2011 Author Share Posted September 20, 2011 (edited) After some test, I found that even windows 7 don't handle PNG icon well.For example, try following code:$hIcon = _WinAPI_ShellExtractIcon("imageres.dll", 3, 256, 256) $hIcon = _WinAPI_Create32BitHICON($hIcon, 1) _WinAPI_SaveHICONToFile("test1.ico", $hIcon) $Icon = _IconImage_FromPEEX("imageres.dll,3", 256, 256) $hIcon = _IconImage_ToHandle($Icon) $hIcon = _WinAPI_Create32BitHICON($hIcon, 1) _WinAPI_SaveHICONToFile("test2.ico", $hIcon) $Icon = _IconImage_FromPEEX("imageres.dll,3", 256, 256) $Icon = _IconImage_ConvertToBMPIcon($Icon) _IconImage_ToIcoFile($Icon, "test3.ico") $Icon = _IconImage_FromPEEX("imageres.dll,3", 256, 256) $Icon = _IconImage_ConvertToBMPIcon($Icon) $hIcon = _IconImage_ToHandle($Icon) $hIcon = _WinAPI_Create32BitHICON($hIcon, 1) _WinAPI_SaveHICONToFile("test4.ico", $hIcon)Are all the 4 icon the same? No, only test3 and test4 is good, look likeBut 1 and 2 look like: I think it is because that test1 use _WinAPI_ShellExtractIcon, it convert PNG icon by system.test2 use _IconImage_ToHandle, it will call _WinAPI_CreateIconFromResourceEx (convert by system, too).test3 and test4 are using _IconImage_ConvertToBMPIcon, it convert the PNG icon by GDI+. For now, I use the $_IconImage_VistaFlag to decide how to convert the PNG icon (by system or by GDI+).But it seems always using GDI+ is necessary for good result. Edited September 20, 2011 by Ward 新版 _ArrayAdd 的白痴作者,不管是誰,去死一死好了。 Link to comment Share on other sites More sharing options...
Yashied Posted September 20, 2011 Share Posted September 20, 2011 Haha, the problem in the ImageList that is used in _WinAPI_Create32BitHICON(). Apparently, ImageList does not works correctly with icons that use a PNG compression. If icon does not use a PNG compression, everything works fine. I'll think about it. My UDFs: iKey | FTP Uploader | Battery Checker | Boot Manager | Font Viewer | UDF Keyword Manager | Run Dialog Replacement | USBProtect | 3D Axis | Calculator | Sleep | iSwitcher | TM | NetHelper | File Types Manager | Control Viewer | SynFolders | DLL Helper Animated Tray Icons UDF Library | Hotkeys UDF Library | Hotkeys Input Control UDF Library | Caret Shape UDF Library | Context Help UDF Library | Most Recently Used List UDF Library | Icons UDF Library | FTP UDF Library | Script Communications UDF Library | Color Chooser UDF Library | Color Picker Control UDF Library | IPHelper (Vista/7) UDF Library | WinAPI Extended UDF Library | WinAPIVhd UDF Library | Icon Chooser UDF Library | Copy UDF Library | Restart UDF Library | Event Log UDF Library | NotifyBox UDF Library | Pop-up Windows UDF Library | TVExplorer UDF Library | GuiHotKey UDF Library | GuiSysLink UDF Library | Package UDF Library | Skin UDF Library | AITray UDF Library | RDC UDF Library Appropriate path | Button text color | Gaussian random numbers | Header's styles (Vista/7) | ICON resource enumeration | Menu & INI | Tabbed string size | Tab's skin | Pop-up circular menu | Progress Bar without animation (Vista/7) | Registry export | Registry path jumping | Unique hardware ID | Windows alignment More... Link to comment Share on other sites More sharing options...
Ward Posted September 20, 2011 Author Share Posted September 20, 2011 (edited) @Yashied I think not only _WinAPI_Create32BitHICON, even _WinAPI_ShellExtractIcon has problem. For example:expandcollapse popup_IconImage_Startup() $GUI = GUICreate("", 520, 520) GUISetState() $Icon = _IconImage_FromPEEX("imageres.dll,3", 256, 256) $Icon = _IconImage_ConvertToBMPIcon($Icon) $hIcon1 = _IconImage_ToHandle($Icon) $hIcon2 = _WinAPI_ShellExtractIcon("imageres.dll", 3, 256, 256) $aInfo1 = _WinAPI_GetIconInfo($hIcon1) $aInfo2 = _WinAPI_GetIconInfo($hIcon2) $hDC = _WinAPI_GetDC($GUI) _WinAPI_DrawAlphaBitmap($hDC, 0, 0, $aInfo1[5]) _WinAPI_DrawBitmap($hDC, 256, 0, $aInfo1[4]) _WinAPI_DrawAlphaBitmap($hDC, 0, 256, $aInfo2[5]) _WinAPI_DrawBitmap($hDC, 256, 256, $aInfo2[4]) Do Sleep(10) Until GUIGetMsg() = -3 Exit Func _WinAPI_DrawAlphaBitmap($hDC, $iX, $iY, $hBitmap, $iRop = 0x00CC0020) Local $Ret, $tObj, $_hDC, $hSrcDC, $hSrcSv $tObj = DllStructCreate($tagBITMAP) $Ret = DllCall('gdi32.dll', 'int', 'GetObject', 'int', $hBitmap, 'int', DllStructGetSize($tObj), 'ptr', DllStructGetPtr($tObj)) If (@error) Or (Not $Ret[0]) Then Return SetError(1, 0, 0) EndIf $Ret = DllCall('user32.dll', 'hwnd', 'GetDC', 'hwnd', 0) $_hDC = $Ret[0] $Ret = DllCall('gdi32.dll', 'hwnd', 'CreateCompatibleDC', 'hwnd', $_hDC) $hSrcDC = $Ret[0] $Ret = DllCall('gdi32.dll', 'hwnd', 'SelectObject', 'hwnd', $hSrcDC, 'ptr', $hBitmap) $hSrcSv = $Ret[0] Local $Width = DllStructGetData($tObj, 'bmWidth') Local $Height = DllStructGetData($tObj, 'bmHeight') _WinAPI_AlphaBlend($hDC, $iX, $iY, $Width, $Height, $hSrcDC, 0, 0, $Width, $Height, 255, 1) DllCall('user32.dll', 'int', 'ReleaseDC', 'hwnd', 0, 'hwnd', $_hDC) DllCall('gdi32.dll', 'ptr', 'SelectObject', 'hwnd', $hSrcDC, 'ptr', $hSrcSv) DllCall('gdi32.dll', 'int', 'DeleteDC', 'hwnd', $hSrcDC) If Not IsArray($Ret) Then Return SetError(1, 0, 0) EndIf Return 1 EndFuncThe result: Compare to the real PNG file store in imageres.dll,3 (just extracted and save as .png file): You can see _WinAPI_ShellExtractIcon convert the PNG with some error.If the problem is in the _WinAPI_Create32BitHICON, my test4.ico should has problem, but it not.I think if the PNG is converted to hIcon in the correct way, then _WinAPI_Create32BitHICON will work without problem. So maybe the main problem is due to Microsoft, not in yours, or my code. --After some more test, I thank both _WinAPI_ShellExtractIcon and _WinAPI_Create32BitHICON have problem...I will write some code to decide when to use _WinAPI_Create32BitHICON. Edited September 21, 2011 by Ward 新版 _ArrayAdd 的白痴作者,不管是誰,去死一死好了。 Link to comment Share on other sites More sharing options...
Ward Posted September 22, 2011 Author Share Posted September 22, 2011 @Yashied I updated the UDF. It use my own version of _WinAPI_CreateANDBitmap and also some binary code to decide is there any alpha channel bits in colorbmp of hicon. If there is no alpha channel, than it create the colorbmp again by your _WinAPI_Create32BitHBITMAP to get a correct alpha channel. It also not let _WinAPI_CreateIconFromResourceEx to convert the PNG image. The conversion is always done by GDI+. I am still waiting for your new version of WinAPIEx 新版 _ArrayAdd 的白痴作者,不管是誰,去死一死好了。 Link to comment Share on other sites More sharing options...
Yashied Posted September 23, 2011 Share Posted September 23, 2011 (edited) I found a bug. DllCall($__Binary_User32Dll, "none", "CallWindowProc", "ptr", $CodePtr, "ptr", $BitPtr, "ptr", $MaskPtr, "uint", $Width, "uint", $Height) The fourth parameter must be of UINT (4 bytes) type but you pass a PTR (4/8 bytes). Edited September 23, 2011 by Yashied My UDFs: iKey | FTP Uploader | Battery Checker | Boot Manager | Font Viewer | UDF Keyword Manager | Run Dialog Replacement | USBProtect | 3D Axis | Calculator | Sleep | iSwitcher | TM | NetHelper | File Types Manager | Control Viewer | SynFolders | DLL Helper Animated Tray Icons UDF Library | Hotkeys UDF Library | Hotkeys Input Control UDF Library | Caret Shape UDF Library | Context Help UDF Library | Most Recently Used List UDF Library | Icons UDF Library | FTP UDF Library | Script Communications UDF Library | Color Chooser UDF Library | Color Picker Control UDF Library | IPHelper (Vista/7) UDF Library | WinAPI Extended UDF Library | WinAPIVhd UDF Library | Icon Chooser UDF Library | Copy UDF Library | Restart UDF Library | Event Log UDF Library | NotifyBox UDF Library | Pop-up Windows UDF Library | TVExplorer UDF Library | GuiHotKey UDF Library | GuiSysLink UDF Library | Package UDF Library | Skin UDF Library | AITray UDF Library | RDC UDF Library Appropriate path | Button text color | Gaussian random numbers | Header's styles (Vista/7) | ICON resource enumeration | Menu & INI | Tabbed string size | Tab's skin | Pop-up circular menu | Progress Bar without animation (Vista/7) | Registry export | Registry path jumping | Unique hardware ID | Windows alignment More... Link to comment Share on other sites More sharing options...
Ward Posted September 23, 2011 Author Share Posted September 23, 2011 Thanks, Yashied. Although under my test, memory pointer return by _MemVirtualAlloc always < 0xFFFFFFFF under Windows 7. But you are right, this is still dangerous. I will change the parameter sequence. However, I think DllCallAddress is better solution. Thank to the developer of AutoIt, we will have DllCallAddress in next standard release. 新版 _ArrayAdd 的白痴作者,不管是誰,去死一死好了。 Link to comment Share on other sites More sharing options...
Yashied Posted September 23, 2011 Share Posted September 23, 2011 (edited) I completely rewrote the _WinAPI_Create32BitHICON function. Now it guaranteed creates a 32 bits-per-pixel icon containing an alpha channel and AND bitmask bitmap. Here its description. The _WinAPI_Create32BitHICON() converts an icon with any color depth into an icon with 32 bits-per-pixel (RGB + Alpha) format. If the source icon already is a 32 bits-per-pixel icon, and has an alpha chanel, the function generates the new AND bitmask bitmap, and copies it to a new icon. If the source icon has a 32 bits-per-pixel color depth, and do not have an alpha chanel, the function creates an alpha chanel from its AND bitmask. If the source icon is non 32 bits-per-pixel icon, it will be converted into a 32 bits-per-pixel format with alpha chanel. The _WinAPI_Create32BitHICON() always creates an icon with alpha channel and AND bitmask, although it is not used to display icons that contain an alpha channel.The final release of WinAPIEx UDF I'll post in the next few days. Edited September 23, 2011 by Yashied My UDFs: iKey | FTP Uploader | Battery Checker | Boot Manager | Font Viewer | UDF Keyword Manager | Run Dialog Replacement | USBProtect | 3D Axis | Calculator | Sleep | iSwitcher | TM | NetHelper | File Types Manager | Control Viewer | SynFolders | DLL Helper Animated Tray Icons UDF Library | Hotkeys UDF Library | Hotkeys Input Control UDF Library | Caret Shape UDF Library | Context Help UDF Library | Most Recently Used List UDF Library | Icons UDF Library | FTP UDF Library | Script Communications UDF Library | Color Chooser UDF Library | Color Picker Control UDF Library | IPHelper (Vista/7) UDF Library | WinAPI Extended UDF Library | WinAPIVhd UDF Library | Icon Chooser UDF Library | Copy UDF Library | Restart UDF Library | Event Log UDF Library | NotifyBox UDF Library | Pop-up Windows UDF Library | TVExplorer UDF Library | GuiHotKey UDF Library | GuiSysLink UDF Library | Package UDF Library | Skin UDF Library | AITray UDF Library | RDC UDF Library Appropriate path | Button text color | Gaussian random numbers | Header's styles (Vista/7) | ICON resource enumeration | Menu & INI | Tabbed string size | Tab's skin | Pop-up circular menu | Progress Bar without animation (Vista/7) | Registry export | Registry path jumping | Unique hardware ID | Windows alignment More... Link to comment Share on other sites More sharing options...
supersonic Posted October 6, 2011 Share Posted October 6, 2011 Hi, with the help of this UDF is it possible to assign an embedded icon to a button control? Greets, -supersonic. Link to comment Share on other sites More sharing options...
ValeryVal Posted October 6, 2011 Share Posted October 6, 2011 with the help of this UDF is it possible to assign an embedded icon to a button control? Buttons with Icon AND Label was discussed here The point of world view Link to comment Share on other sites More sharing options...
Bluesmaster Posted February 23, 2013 Share Posted February 23, 2013 Hi,i would be very interessted in using your UDF buti got lots ofERROR: $SYNCHRONIZE previously declared as a 'Const'.caused by the "APIConstants.au3" which is needed by WinApiExI am relativly new to AutoIt but even dont understand this error after long google journeyregardsBluesmaster My UDF: [topic='156155']_shellExecuteHidden[/topic] Link to comment Share on other sites More sharing options...
Bluesmaster Posted February 23, 2013 Share Posted February 23, 2013 Ok sorry got the wrong version of winapiex (3.6 instead of 3.8 ) regards Bluesmaster My UDF: [topic='156155']_shellExecuteHidden[/topic] Link to comment Share on other sites More sharing options...
Lupo73 Posted March 17, 2014 Share Posted March 17, 2014 I'm trying to use this UDF, but it crashes with a strange error: !>13:11:31 AutoIt3.exe ended.rc:-1073741819 I'd like to save a .ICO file starting from a .PNG image, is this code the solution? thanks! SFTPEx, AutoCompleteInput, _DateTimeStandard(), _ImageWriteResize(), _GUIGraduallyHide(): some AutoIt functions. Lupo PenSuite: all-in-one and completely free selection of portable programs and games. DropIt: a personal assistant to automatically manage your files. ArcThemALL!: application to multi-archive your files and folders. Link to comment Share on other sites More sharing options...
Ward Posted March 18, 2014 Author Share Posted March 18, 2014 Maybe you need the last version for AutoIt 3.3.10.2 新版 _ArrayAdd 的白痴作者,不管是誰,去死一死好了。 Link to comment Share on other sites More sharing options...
Lupo73 Posted March 19, 2014 Share Posted March 19, 2014 I already use it I'm doing some tests.. the problem seems in these lines: Local $Header = DllStructCreate($tagBITMAPINFO) ConsoleWrite('1 ' & @Error & @CRLF) ; <<<<<<<<<<<<<<<<< @Error = 0 ConsoleWrite('2 ' & $Header & @CRLF) ; <<<<<<<<<<<<<<<<< $Header = '' ConsoleWrite('3 ' & $tagBITMAPINFO & @CRLF) ; <<<<<<<<<<<<<<<<< $tagBITMAPINFO = struct;dword biSize;long biWidth;long biHeight;word biPlanes;word biBitCount;dword biCompression;dword biSizeImage;long biXPelsPerMeter;long biYPelsPerMeter;dword biClrUsed;dword biClrImportant;endstruct;dword biRGBQuad[1] DllStructSetData($Header, "Size", 40) DllStructSetData($Header, "Width", $Width) DllStructSetData($Header, "Height", $Height) DllStructSetData($Header, "Planes", 1) DllStructSetData($Header, "BitCount", 1) DllStructSetData($Header, "SizeImage", $Stride * $Height) ConsoleWrite('4 ' & @Error & @CRLF) ; <<<<<<<<<<<<<<<<< @Error = 2 All the DllStructSetData return 2 as error and after the second Do-Until loop the script crashes. SFTPEx, AutoCompleteInput, _DateTimeStandard(), _ImageWriteResize(), _GUIGraduallyHide(): some AutoIt functions. Lupo PenSuite: all-in-one and completely free selection of portable programs and games. DropIt: a personal assistant to automatically manage your files. ArcThemALL!: application to multi-archive your files and folders. Link to comment Share on other sites More sharing options...
Ward Posted March 20, 2014 Author Share Posted March 20, 2014 I uploaded the last version for AutoIt v3.3.10.2 after I had seen your post. So I don't believe "YOU ALREADY USE IT".... 新版 _ArrayAdd 的白痴作者,不管是誰,去死一死好了。 Link to comment Share on other sites More sharing options...
Lupo73 Posted March 21, 2014 Share Posted March 21, 2014 Sorry, I misunderstood, I read "the last version of AutoIt" instead of "the last version for AutoIt" It perfectly works now, thanks! SFTPEx, AutoCompleteInput, _DateTimeStandard(), _ImageWriteResize(), _GUIGraduallyHide(): some AutoIt functions. Lupo PenSuite: all-in-one and completely free selection of portable programs and games. DropIt: a personal assistant to automatically manage your files. ArcThemALL!: application to multi-archive your files and folders. Link to comment Share on other sites More sharing options...
Leo1906 Posted July 1, 2016 Share Posted July 1, 2016 Could you please reupload the files 😊 It seems like they have been deleted from the server .. 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