Assembly language > Assembly discussions

EnumDisplaySettings

(1/2) > >>

TimoVJL:

--- Code: ---; ml.exe -coff hello.asm -link -subsystem:console
.386
.model flat
option casemap:none
exit PROTO C :DWORD
printf PROTO C :PTR,:VARARG
INCLUDELIB msvcrt

EnumDisplaySettingsA PROTO STDCALL :PTR, :DWORD, :PTR
INCLUDELIB user32.lib

POINTL struct
x DWORD ?
y DWORD ?
POINTL ends

DEVMODEX        struct
dmDeviceName    BYTE 32 dup (?)
dmSpecVersion   WORD    ?
dmDriverVersion WORD    ?
dmSize  WORD    ?
dmDriverExtra   WORD    ?
dmFields        DWORD   ?
union
struct
dmOrientation   SWORD   ?
dmPaperSize     SWORD   ?
dmPaperLength   SWORD   ?
dmPaperWidth    SWORD   ?
ends
dmPosition      POINTL  <?>
ends
dmScale SWORD   ?
dmCopies        SWORD   ?
dmDefaultSource SWORD   ?
dmPrintQuality  SWORD   ?
dmColor SWORD   ?
dmDuplex        SWORD   ?
dmYResolution   SWORD   ?
dmTTOption      SWORD   ?
dmCollate       SWORD   ?
dmFormName      BYTE 32 dup (?)
dmLogPixels     WORD    ?
dmBitsPerPel    DWORD   ?
dmPelsWidth     DWORD   ?
dmPelsHeight    DWORD   ?
union
dmDisplayFlags  DWORD   ?
dmNup   DWORD   ?
ends
dmDisplayFrequency      DWORD   ?
dmICMMethod     DWORD   ?
dmICMIntent     DWORD   ?
dmMediaType     DWORD   ?
dmDitherType    DWORD   ?
dmReserved1     DWORD   ?
dmReserved2     DWORD   ?
dmPanningWidth  DWORD   ?
dmPanningHeight DWORD   ?
DEVMODEX        ends

.data
msg db "%d x %d",10,0
dev db "\\.\DISPLAY1",0
dm DEVMODEX <<?>>

.code
mainCRTStartup PROC C
;invoke EnumDisplaySettingsA, ADDR dev, -1, ADDR dm
invoke EnumDisplaySettingsA, 0, -1, ADDR dm
invoke printf, ADDR msg, dm.dmPelsWidth, dm.dmPelsHeight
invoke exit,0
mainCRTStartup ENDP
END mainCRTStartup

--- End code ---
EDIT: fix for default monitor without device name

Vortex:
Hi Timo,

Many thanks, attached is the project built with Poasm. There are some minor modifications in the code, I hope you don't mind.

Running the executable, I get :


--- Code: ---0 x 0
--- End code ---

TimoVJL:
Thanks
In my system it gave 1920 x 1080

EDIT:
libs are useful for this testbed
https://forum.pellesc.de/index.php?topic=11474.msg40487#msg40487

Vortex:
Hi Timo,

Thanks, I tested your 32-bit version of msvcrt.lib. The result is the same on my Windows 7 Sp1 64-bit system :


--- Code: ---0 x 0
--- End code ---

EDIT : Here is the fixed version following Timo's recommendation to set the driver name to NULL.


--- Code: ---1366 x 768
--- End code ---

TimoVJL:
My system is also Windows 7 SP1 x64.
Those msvcrt.libs was for common usage for those, who don't have them currently.

Navigation

[0] Message Index

[#] Next page

Go to full version