A snippet of my code:
Code: Select all
DllCall("gdiplus\GdipGetImageEncodersSize", "uint*", encodersCount, "uint*", encodersSize)
VarSetCapacity(encodersDump, encodersSize)
DllCall("gdiplus\GdipGetImageEncoders", "uint", encodersCount, "uint", encodersSize, "uint", &encodersDump)
Loop, %encodersCount%
{
Location := NumGet(encodersDump, 76*(A_Index-1)+44)
if !A_IsUnicode
{
encodersSize := DllCall("WideCharToMultiByte", "uint", 0, "uint", 0, "uint", Location, "int", -1, "uint", 0, "int", 0, "uint", 0, "uint", 0)
VarSetCapacity(sString, encodersSize)
DllCall("WideCharToMultiByte", "uint", 0, "uint", 0, "uint", Location, "int", -1, "str", sString, "int", encodersSize, "uint", 0, "uint", 0)
if !InStr(sString, "*.png")
{
continue
}
}
else
{
encodersSize := DllCall("WideCharToMultiByte", "uint", 0, "uint", 0, "uint", Location, "int", -1, "uint", 0, "int", 0, "uint", 0, "uint", 0)
sString := ""
Loop, %encodersSize%
{
sString .= Chr(NumGet(Location+0, 2*(A_Index-1), "char"))
}
if !InStr(sString, "*.png")
{
continue
}
}
pCodec := &encodersDump+76*(A_Index-1)
break
}