Opened 11 years ago
Closed 11 years ago
#2918 closed Bug (Fixed)
GDIPlus_GetEncoderParameterList not working on Windows 8.1
| Reported by: | m.andreschak@… | Owned by: | Jpm |
|---|---|---|---|
| Milestone: | 3.3.13.20 | Component: | Standard UDFs |
| Version: | 3.3.12.0 | Severity: | None |
| Keywords: | Cc: |
Description
Summaration:
- Example Script for GDIPlus_GetEncoderParameterList is not working properly.
- DllCall insinde GDIPlus_GetEncoderParameterList does not fill the buffer supplied.
- GDIPlus_GetEncoderParameterListSize returns correct values nevertheless.
Problem seems to not occur with windows 7.
I was only able to test Windows 7 and Windows 8.1.
#include <GDIPlus.au3>
#include <ScreenCapture.au3>
Global $hBitmap, $g_hImage, $sCLSID, $tParameter, $tParams
_GDIPlus_Startup()
; Create an image to use for paramater lists
$hBitmap = _ScreenCapture_Capture('', 0, 0, 1, 1)
$g_hImage = _GDIPlus_BitmapCreateFromHBITMAP($hBitmap)
; Get Parameter list
$sCLSID = _GDIPlus_EncodersGetCLSID('PNG')
$tParameter = _GDIPlus_EncodersGetParamList($g_hImage, $sCLSID)
$tParams = DllStructCreate($tagGDIPPENCODERPARAMS, DllStructGetPtr($tParameter))
MsgBox(0, '', _
'Count DllStruct: ' & DllStructGetData($tParams, 'Count') & @LF & _
'Count Function: ' & _GDIPlus_EncodersGetParamListSize($g_hImage, $sCLSID))
Attachments (0)
Change History (4)
comment:1 Changed 11 years ago by Jpm
comment:2 Changed 11 years ago by Eukalyptus
It´s a bug in GDIPlus.au3
Function _GDIPlus_EncodersGetParamList:
Return DllStructCreate($tagGDIPPENCODERPARAMS, $tBuffer)
should be:
Return DllStructCreate($tagGDIPPENCODERPARAMS, DllStructGetPtr($tBuffer))
comment:3 Changed 11 years ago by Jpm
@Eukalyptus,
That's not OK as more than $tagGDIPENCODERPARAM can be returned.
Return $tBuffer
is better but for referencing one entry the best is
$tParams = _GDIPlus_EncodersGetParamList($g_hImage, $sCLSID)
$tParam = DllStructCreate($tagGDIPENCODERPARAM, DllStructGetPtr($tParams, 2) + ($iJ * $iParamSize))
I have a silly question is _GDIPlus_EncodersGetParamList() valid for Decoders?
Thanks for the help
comment:4 Changed 11 years ago by Jpm
- Milestone set to 3.3.13.20
- Owner set to Jpm
- Resolution set to Fixed
- Status changed from new to closed
Fixed by revision [11119] in version: 3.3.13.20
Guidelines for posting comments:
- You cannot re-open a ticket but you may still leave a comment if you have additional information to add.
- In-depth discussions should take place on the forum.
For more information see the full version of the ticket guidelines here.

_GDIPlus_EncodersGetParamListSize does display the Count Function