I can get the current locale paper size using
GetLocaleStr(LCID,LOCALE_IPAPERSIZE,IntToStr(DMPAPER_A4))
where LOCALE_IPAPERSIZE = $100A
LOCALE_IPAPERSIZE = $100A
but is there a way to list all paper sizes with their names?
No enumerator, see "Paper Sizes" on MSDN for a complete list.
You can find out the paper sizes supported by a specific installed printer, but this may not include everything.
There is EnumForms .
EnumForms
Stephen Friedl did research on this.