News:

Masm32 SDK description, downloads and other helpful links
Message to All Guests
NB: Posting URL's See here: Posted URL Change

Main Menu

Image meta data viewer

Started by jj2007, November 29, 2016, 01:32:03 PM

Previous topic - Next topic

avcaballero

JJ, your new example shows me two images:
* Something like a molecule
* A window

Still it shows: "Line 30: image could not be loaded: InvalidParameter"

Though the firs time I executed it I got: "Could not open C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include\GdiPlusImaging.h for Recall, FileRead$ etc."

The program you attached yesterday worked for me in another computer, though the TWell example not even get up.

Another example that works for me is the magdelouahab crystall ball, though it is a png.

I'll try to have it a look this weekend if I have time.

Regards

jj2007

Quote from: caballero on November 30, 2016, 07:42:41 PM
JJ, your new example shows me two images:
* Something like a molecule
* A window

Still it shows: "Line 30: image could not be loaded: InvalidParameter"

Molecule is tiff, the window is jpg, then follow four simple gif images. None of them works for you, apparently...

QuoteThough the firs time I executed it I got: "Could not open C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include\GdiPlusImaging.h for Recall, FileRead$ etc."

That was the internal routine that generates the PropTags.lst sent earlier - I attach it here again.

QuoteThe program you attached yesterday worked for me in another computer, though the TWell example not even get up.

Another example that works for me is the magdelouahab crystall ball, though it is a png.

TWell's example remains silent if it doesn't find errors. So your machine accepts jpg, tiff, png but not gif. Big mystery 8)
Did you ever install something to manipulate gif images etc ?

On my machine, there are apparently several gdiplus.dll versions installed:3662933 lines read, 5489 ms
Search for: gdiplus.dll
gdiplus.dll, line 1122668       :"D14F593908F0E234A9958B4E777E1E36"="C:\\Program Files (x86)\\OpenOffice 4\\program\\gdiplus.dll"
gdiplus.dll, line 1315477       :"9040110900063D11C8EF10054038389C"="C:\\Program Files (x86)\\Microsoft Office\\OFFICE11\\GDIPLUS.DLL"
gdiplus.dll, line 1315478       :"9040580900063D11C8EF10054038389C"="C:\\Program Files (x86)\\MS Word viewer\\OFFICE11\\GDIPLUS.DLL"
gdiplus.dll, line 1997863       :"C:\\Program Files (x86)\\Common Files\\Web Solution Mart\\gdiplus.dll"=dword:00000001

536 ms for finding 4 entries in 3662933 linesSearch for: gdiplus.dll

TWell

#17
Yes, my example show only error code if exist.

Here is modified code for it, more noise, based code from PellesC forum.
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
//#include "GdiPlusFlat.h"

#pragma comment(lib, "gdiplus.lib")
// https://msdn.microsoft.com/en-us/library/windows/desktop/ms534041(v=vs.85).aspx
typedef int GpStatus;
#define WINGDIPAPI __stdcall
#define GDIPCONST const

typedef struct
{
    UINT32 GdiplusVersion ;
    void* DebugEventCallback ;
    BOOL SuppressBackgroundThread ;
    BOOL SuppressExternalCodecs ;
} GDIPLUSSTARTUPINPUT ;
typedef struct
{
    void* NotificationHook; //NotificationHookProc NotificationHook;
    void* NotificationUnhook; //NotificationUnhookProc NotificationUnhook;
} GDIPLUSSTARTUPOUTPUT ;

int __stdcall GdiplusStartup(ULONG_PTR*, const GDIPLUSSTARTUPINPUT*, GDIPLUSSTARTUPOUTPUT*) ;
void __stdcall GdiplusShutdown(ULONG_PTR) ;
typedef void GpImage;
int __stdcall GdipLoadImageFromFile(WCHAR* filename, GpImage **image);
int __stdcall GdipSaveImageToFile(GpImage *image, WCHAR* filename, const CLSID* clsidEncoder, void*);
int __stdcall GdipDisposeImage(GpImage*);

TCHAR *GdiplusStatusToString(int statusID);

GDIPLUSSTARTUPINPUT gdiplusStartupInput = { 1, NULL, FALSE, FALSE } ;
ULONG_PTR gdiplusToken;

const CLSID CLSID_image_bmp =  {0x557CF400,0x1A04,0x11D3,0x9A,0x73,0x00,0x00,0xF8,0x1E,0xF3,0x2E};
const CLSID CLSID_image_jpeg = {0x557CF401,0x1A04,0x11D3,0x9A,0x73,0x00,0x00,0xF8,0x1E,0xF3,0x2E};
const CLSID CLSID_image_gif =  {0x557CF402,0x1A04,0x11D3,0x9A,0x73,0x00,0x00,0xF8,0x1E,0xF3,0x2E};
const CLSID CLSID_image_tiff = {0x557CF405,0x1A04,0x11D3,0x9A,0x73,0x00,0x00,0xF8,0x1E,0xF3,0x2E};
const CLSID CLSID_image_png =  {0x557CF406,0x1A04,0x11D3,0x9A,0x73,0x00,0x00,0xF8,0x1E,0xF3,0x2E};
const CLSID CLSID_image_ico =  {0x557CF407,0x1A04,0x11D3,0x9A,0x73,0x00,0x00,0xF8,0x1E,0xF3,0x2E};

void __cdecl WinMainCRTStartup(void)
{
GpStatus status;
GpImage *image = NULL;
TCHAR szTmp[MAX_PATH];

HANDLE hLib = LoadLibrary("GdiPlus.dll");
GetModuleFileName(hLib, szTmp, sizeof(szTmp));
MessageBox(0, szTmp, 0, 0);

GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
status = GdipLoadImageFromFile(L"test1.gif", (GpImage **)&image);
if (status == 0) {
//status = GdipSaveImageToFile(image, L"test1.png", &CLSID_image_png, NULL);
GdipDisposeImage(image);
} //else  {
wsprintf(szTmp, TEXT("Error: %d\n%s"), status, GdiplusStatusToString(status));
MessageBox(0, szTmp, 0, 0);
GdiplusShutdown(gdiplusToken);
ExitProcess(0);
}
#define WIN32_LEAN_AND_MEAN
#include <windows.h>

TCHAR *GdiplusStatusToString(int statusID)
{
switch (statusID)
{
case 0: return TEXT("Ok"); break;
case 1: return TEXT("GenericError"); break;
case 2: return TEXT("InvalidParameter"); break;
case 3: return TEXT("OutOfMemory"); break;
case 4: return TEXT("ObjectBusy"); break;
case 5: return TEXT("InsufficientBuffer"); break;
case 6: return TEXT("NotImplemented"); break;
case 7: return TEXT("Win32Error"); break;
case 8: return TEXT("Aborted"); break;
case 9: return TEXT("FileNotFound"); break;
case 10: return TEXT("Aborted"); break;
case 11: return TEXT("ValueOverflow"); break;
case 12: return TEXT("AccessDenied"); break;
case 13: return TEXT("UnknownImageFormat"); break;
case 14: return TEXT("FontFamilyNotFound"); break;
case 15: return TEXT("FontStyleNotFound"); break;
case 16: return TEXT("NotTrueTypeFont"); break;
case 17: return TEXT("UnsupportedGdiplusVersion"); break;
case 18: return TEXT("GdiplusNotInitialized"); break;
case 19: return TEXT("PropertyNotFound"); break;
case 20: return TEXT("PropertyNotSupported"); break;
case 21: return TEXT("ProfileNotFound"); break;
default: return TEXT("Status Type Not Found."); break;
};
}

EDIT: Another with LoadLibrary() for testing GdiPlus.dll in local folder:#define WIN32_LEAN_AND_MEAN
#include <windows.h>
//#include "GdiPlusFlat.h"

//#pragma comment(lib, "gdiplus.lib")
// https://msdn.microsoft.com/en-us/library/windows/desktop/ms534041(v=vs.85).aspx
typedef int GpStatus;
#define WINGDIPAPI __stdcall
#define GDIPCONST const

typedef struct
{
    UINT32 GdiplusVersion ;
    void* DebugEventCallback ;
    BOOL SuppressBackgroundThread ;
    BOOL SuppressExternalCodecs ;
} GDIPLUSSTARTUPINPUT ;
typedef struct
{
    void* NotificationHook; //NotificationHookProc NotificationHook;
    void* NotificationUnhook; //NotificationUnhookProc NotificationUnhook;
} GDIPLUSSTARTUPOUTPUT ;

int __stdcall GdiplusStartup(ULONG_PTR*, const GDIPLUSSTARTUPINPUT*, GDIPLUSSTARTUPOUTPUT*) ;
void __stdcall GdiplusShutdown(ULONG_PTR) ;
typedef void GpImage;
int __stdcall GdipLoadImageFromFile(WCHAR* filename, GpImage **image);
int __stdcall GdipSaveImageToFile(GpImage *image, WCHAR* filename, const CLSID* clsidEncoder, void*);
int __stdcall GdipDisposeImage(GpImage*);

#define DYNDLL
#ifdef DYNDLL
typedef int (WINAPI GDIPLUSSHUTDOWN)(ULONG_PTR);
typedef GDIPLUSSHUTDOWN *PGDIPLUSSHUTDOWN;
typedef int (WINAPI GDIPLUSSTARTUP)(void*, void*, void*);
typedef GDIPLUSSTARTUP *PGDIPLUSSTARTUP;
typedef int (WINAPI GDIPLOADIMAGEFROMFILE)(void*, void*);
typedef GDIPLOADIMAGEFROMFILE *PGDIPLOADIMAGEFROMFILE;
typedef int (WINAPI GDIPDISPOSEIMAGE)(void*);
typedef GDIPDISPOSEIMAGE *PGDIPDISPOSEIMAGE;
#else
#pragma comment(lib, "gdiplus.lib")
#endif

TCHAR *GdiplusStatusToString(int statusID);

GDIPLUSSTARTUPINPUT gdiplusStartupInput = { 1, NULL, FALSE, FALSE } ;
ULONG_PTR gdiplusToken;

void __cdecl WinMainCRTStartup(void)
{
GpStatus status;
GpImage *image = NULL;
HANDLE hLib;
TCHAR szTmp[MAX_PATH];

#ifdef DYNDLL
hLib = LoadLibrary(".\\GdiPlus.dll");
if (hLib) {
static PGDIPLUSSTARTUP GdiplusStartup;
static PGDIPLUSSHUTDOWN GdiplusShutdown;
static PGDIPLOADIMAGEFROMFILE GdipLoadImageFromFile;
static PGDIPDISPOSEIMAGE GdipDisposeImage;
GdiplusStartup = (PGDIPLUSSTARTUP)GetProcAddress(hLib, "GdiplusStartup");
GdiplusShutdown = (PGDIPLUSSHUTDOWN)GetProcAddress(hLib, "GdiplusShutdown");
GdipLoadImageFromFile = (PGDIPLOADIMAGEFROMFILE)GetProcAddress(hLib, "GdipLoadImageFromFile");
GdipDisposeImage = (PGDIPDISPOSEIMAGE)GetProcAddress(hLib, "GdiplusStartup");
#else
hLib = LoadLibrary("GdiPlus.dll");
#endif
GetModuleFileName(hLib, szTmp, sizeof(szTmp));
MessageBox(0, szTmp, 0, 0);

GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
status = GdipLoadImageFromFile(L"test1.gif", (GpImage **)&image);
if (status == 0)
GdipDisposeImage(image);
wsprintf(szTmp, TEXT("Error: %d\n%s"), status, GdiplusStatusToString(status));
MessageBox(0, szTmp, 0, 0);
GdiplusShutdown(gdiplusToken);
#ifdef DYNDLL
FreeLibrary(hLib);
}
#endif
ExitProcess(0);
}

avcaballero

>Did you ever install something to manipulate gif images etc ?
My God, no, as long as I know ;). In fact,
this John Findley's code works perfectly in my computer, including the wizard gif image :greenclp:

jj2007

Well, the mystery continues ;)

I got curious and checked my gdiplus.dll versions. There are four registry entries, see above, and my Windows folder has stored GdiPlus.dll in various locations. Here is the list of 100 - it's genuine Windows, greetings to Redmond :tamd64_microswinsxs\Backup                                                                      2.19 MB  14.10.16 09:48 
amd64_microswinsxs\Backup                                                                      2.07 MB  14.10.16 09:48 
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.17514_none_3bd2e 2.19 MB  21.11.10 04:24 
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.17825_none_3bd3c 2.19 MB  21.4.12 06:16   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18120_none_3bd44 2.19 MB  3.4.13 06:46   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18455_none_3bd6d 2.19 MB  26.4.14 03:32   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18658_none_3bd68 2.19 MB  11.11.14 04:03 
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18716_none_3bd2b 2.19 MB  13.1.15 04:04   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18741_none_3bd62 2.19 MB  3.2.15 04:28   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18834_none_3bd4e 2.19 MB  20.4.15 04:11   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18852_none_3bd71 2.19 MB  15.5.15 19:14   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18946_none_3bd5b 2.19 MB  30.7.15 18:55   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.19044_none_3bd5e 2.19 MB  17.10.15 18:59 
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.19054_none_3bd6e 2.19 MB  3.11.15 19:56   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.19061_none_3bd82 2.19 MB  10.11.15 19:45 
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.21977_none_250af 2.19 MB  21.4.12 06:09   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.22290_none_250d9 2.19 MB  3.4.13 06:16   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.22667_none_2509f 2.19 MB  26.4.14 03:24   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.22865_none_250a2 2.19 MB  11.11.14 04:35 
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.22922_none_25066 2.19 MB  13.1.15 04:33   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.22948_none_2507e 2.19 MB  3.2.15 04:44   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.23038_none_2506e 2.19 MB  20.4.15 04:06   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.23055_none_25092 2.19 MB  15.5.15 19:14   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.23149_none_2507d 2.19 MB  30.7.15 19:12   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.23250_none_25099 2.19 MB  20.10.15 02:01 
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.23259_none_2508d 2.19 MB  3.11.15 20:03   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.23265_none_250a2 2.19 MB  10.11.15 19:49 
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.23407_none_2503f 2.19 MB  29.3.16 19:58   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.23545_none_25082 2.19 MB  12.9.16 22:08   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.17514_none_2b245 2.06 MB  21.11.10 04:24 
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.17825_none_2b253 2.07 MB  21.4.12 06:16   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.18120_none_2b25b 2.07 MB  3.4.13 06:46   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.18455_none_2b283 2.07 MB  26.4.14 03:32   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.18834_none_2b265 2.07 MB  20.4.15 04:11   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.18852_none_2b288 2.07 MB  15.5.15 19:14   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.18946_none_2b272 2.07 MB  30.7.15 18:55   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.19044_none_2b275 2.07 MB  17.10.15 18:59 
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.19054_none_2b285 2.07 MB  3.11.15 19:56   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.19061_none_2b299 2.07 MB  10.11.15 19:45 
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.21977_none_145c6 2.07 MB  21.4.12 06:09   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.22290_none_145f0 2.07 MB  3.4.13 06:16   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.22667_none_145b6 2.07 MB  26.4.14 03:24   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23038_none_14585 2.07 MB  20.4.15 04:06   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23055_none_145a9 2.07 MB  15.5.15 19:14   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23149_none_14594 2.07 MB  30.7.15 19:12   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23250_none_145b0 2.07 MB  20.10.15 02:01 
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23259_none_145a4 2.07 MB  3.11.15 20:03   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23265_none_145b9 2.07 MB  10.11.15 19:49 
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23407_none_14556 2.07 MB  29.3.16 19:58   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23508_none_14555 2.07 MB  29.7.16 16:31   
GdiPlus.dll winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23545_none_14599 2.07 MB  12.9.16 22:08   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.17514_none_83801b5 1.64 MB  21.11.10 04:24 
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.17825_none_8381047 1.64 MB  21.4.12 05:21   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18120_none_8381793 1.64 MB  3.4.13 05:50   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18455_none_838407c 1.64 MB  26.4.14 03:07   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18658_none_8383c32 1.64 MB  11.11.14 03:39 
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18716_none_837fef6 1.64 MB  13.1.15 03:44   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18741_none_8383623 1.64 MB  3.2.15 04:08   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18834_none_83821d6 1.64 MB  20.4.15 03:52   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18852_none_83844b9 1.64 MB  15.5.15 18:58   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18946_none_8382f00 1.64 MB  30.7.15 18:46   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.19044_none_838320b 1.64 MB  17.10.15 18:39 
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.19054_none_8384210 1.64 MB  3.11.15 19:45   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.19061_none_838565a 1.64 MB  10.11.15 19:29 
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.21977_none_6cb8319 1.64 MB  21.4.12 05:12   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.22290_none_6cbad48 1.64 MB  3.4.13 05:25   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.22667_none_6cb7339 1.64 MB  26.4.14 02:55   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.22865_none_6cb760e 1.64 MB  11.11.14 04:13 
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.22922_none_6cb3a3f 1.64 MB  13.1.15 03:57   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.22948_none_6cb51bd 1.64 MB  3.2.15 04:25   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.23038_none_6cb41eb 1.64 MB  20.4.15 03:54   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.23055_none_6cb663a 1.64 MB  15.5.15 19:02   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.23149_none_6cb5081 1.64 MB  30.7.15 18:43   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.23250_none_6cb6d54 1.64 MB  20.10.15 01:38 
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.23259_none_6cb6083 1.64 MB  3.11.15 19:44   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.23265_none_6cb763a 1.64 MB  10.11.15 19:31 
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.23407_none_6cb1341 1.64 MB  29.3.16 19:25   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.23545_none_6cb562a 1.65 MB  12.9.16 21:49   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.17514_none_72d18a4 1.55 MB  21.11.10 04:24 
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.17825_none_72d2735 1.55 MB  21.4.12 05:21   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.18120_none_72d2e82 1.55 MB  3.4.13 05:50   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.18455_none_72d576a 1.55 MB  26.4.14 03:07   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.18834_none_72d38c5 1.55 MB  20.4.15 03:52   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.18852_none_72d5ba7 1.55 MB  15.5.15 18:58   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.18946_none_72d45ee 1.55 MB  30.7.15 18:46   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.19044_none_72d48fa 1.55 MB  17.10.15 18:39 
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.19054_none_72d58fe 1.55 MB  3.11.15 19:45   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.19061_none_72d6d48 1.55 MB  10.11.15 19:29 
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.21977_none_5c09a07 1.55 MB  21.4.12 05:12   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.22290_none_5c0c436 1.55 MB  3.4.13 05:25   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.22667_none_5c08a28 1.55 MB  26.4.14 02:55   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23038_none_5c058d9 1.55 MB  20.4.15 03:54   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23055_none_5c07d28 1.55 MB  15.5.15 19:02   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23149_none_5c0676f 1.55 MB  30.7.15 18:43   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23250_none_5c08442 1.55 MB  20.10.15 01:38 
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23259_none_5c07771 1.55 MB  3.11.15 19:44   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23265_none_5c08d28 1.55 MB  10.11.15 19:31 
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23407_none_5c02a2f 1.55 MB  29.3.16 19:25   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23508_none_5c028c0 1.55 MB  29.7.16 16:15   
GdiPlus.dll winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23545_none_5c06d18 1.55 MB  12.9.16 21:49   
x86_microsofwinsxs\Backup                                                                      1.65 MB  14.10.16 09:48 
x86_microsofwinsxs\Backup                                                                      1.55 MB  14.10.16 09:48 

avcaballero

I only have a few

N° Name                                                                                                       Folder                                                                                                       Size Ext         
1 GdiPlus.dll                                                                                                C:\Windows\winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.17514_none_3bd2e487d8e769d3\ 2.239 KB .dll         
2 GdiPlus.dll                                                                                                C:\Windows\winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18455_none_3bd6d0f1d8e3e5a6\ 2.240 KB .dll         
3 GdiPlus.dll                                                                                                C:\Windows\winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.22667_none_2509fcc7f28a9296\ 2.240 KB .dll         
4 GdiPlus.dll                                                                                                C:\Windows\winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.17514_none_2b24536c71ed437a\ 2.115 KB .dll         
5 GdiPlus.dll                                                                                                C:\Windows\winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.18455_none_2b283fd671e9bf4d\ 2.116 KB .dll         
6 GdiPlus.dll                                                                                                C:\Windows\winsxs\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.22667_none_145b6bac8b906c3d\ 2.116 KB .dll         
7 amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18455_none_3bd6d0f1d8e3e5a6_gdiplus.dll_423f7010 C:\Windows\winsxs\Backup\                                                                                2.240 KB .dll_423f7010
8 amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.18455_none_2b283fd671e9bf4d_gdiplus.dll_423f7010 C:\Windows\winsxs\Backup\                                                                                2.116 KB .dll_423f7010
9 x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18455_none_838407c8ed600eac_gdiplus.dll_423f7010   C:\Windows\winsxs\Backup\                                                                                1.683 KB .dll_423f7010
10 x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.18455_none_72d576ad8665e853_gdiplus.dll_423f7010   C:\Windows\winsxs\Backup\                                                                                1.588 KB .dll_423f7010
11 GdiPlus.dll                                                                                                C:\Windows\winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.17514_none_83801b5eed6392d9\   1.683 KB .dll         
12 GdiPlus.dll                                                                                                C:\Windows\winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.18455_none_838407c8ed600eac\   1.683 KB .dll         
13 GdiPlus.dll                                                                                                C:\Windows\winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.7601.22667_none_6cb7339f0706bb9c\   1.683 KB .dll         
14 GdiPlus.dll                                                                                                C:\Windows\winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.17514_none_72d18a4386696c80\   1.587 KB .dll         
15 GdiPlus.dll                                                                                                C:\Windows\winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.18455_none_72d576ad8665e853\   1.588 KB .dll         
16 GdiPlus.dll                                                                                                C:\Windows\winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.22667_none_5c08a283a00c9543\   1.589 KB .dll         

jj2007

One more attempt: I have added a check for the stream creation.

TWell

Windows 10, as excepted with rtf-file:
File #108 - stream 02782598
## line 39: image could not be loaded, InvalidParameter

avcaballero

Now I can see also the dedndave avatar in the third position. Similar result to TWell:

File #103 - stream 00726390
## line 31: image could not be loaded, InvalidParameter

jj2007

Hi caballero,

Tim had an idea: Find out where gdiplus.dll sits, and try some tests with it on a different PC.
Attached is a new executable that reacts to pressing D (like Dll) - it asks if the path should be copied to the clipboard.

  .elseif wParam==VK_D
      Let dllname$=Space$(MAX_PATH)
      invoke GetModuleFileName, rv(LoadLibrary, "GdiPlus.dll"), dllname$, MAX_PATH
      MsgBox 0, dllname$, "Put path on clipboard?", MB_YESNOCANCEL
      If_ eax==IDYES Then SetClip$ dllname$


Find it, zip it, post it somewhere (800k zipped - too much for the forum), and hopefully we can solve the mystery :icon14:

Mine sits at C:\Windows\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.23545_none_5c06d189a00e2c29\GdiPlus.dll - and it's the only file in that folder. One of a hundred locations where gdiplus.dll can be found on my machine - a brilliant example of superior software design Made in Redmond :lol:


TWell

These versions was tested in one Windows 7 PC and all works.
1.0.7601.17514
1.0.7601.18455
1.0.7601.22667
1.1.7601.17514
1.1.7601.18455
1.1.7601.22667
same versions as in caballero's list.

jj2007

With LoadLibrary("GdiPlus.dll"), I always get the long WinSxS path, even if Gdiplus.dll sits in the exe's folder. Only if I rename the file to e.g. GdiPlux.dll, I can force loading this one. The test will be tricky :biggrin:

TWell

I used dynamic loading,  HANDLE hLib = LoadLibrary(".\\GdiPlus.dll"); in tests and local copy of dll.

http://masm32.com/board/index.php?topic=5827.msg62174#msg62174

jj2007

#28
Quote from: TWell on December 01, 2016, 06:44:08 AM.\\GdiPlus.dll

The OS believes it's a specific file, so instead of redirecting LoadLibrary to the obscure sxs location, it takes it from the current folder. Neat trick, thanks :t

P.S.: In the meantime, I found out that my GdiPlus.dll is version 1.1, i.e. contains e.g. GdipDeleteEffect, while \Masm32\lib\gdiplus.lib is version 1.0 :(

TWell

There should be #101 - #107, 7 pictures.