|
给你个儿童节礼物,获取所有支持的分辨率。
- GetAllResolution &all_res
- mess %&all_res%
- CALL $--ret:&CX user32.dll,GetSystemMetrics,#0 //获取X方向分辨率
- CALL $--ret:&CY user32.dll,GetSystemMetrics,#1 //获取Y方向分辨率
- //MESS %CX%–%CY%
- CALL $--ret:&hdc user32.dll,GetDC,#0
- FIND |%hdc%=0, EXIT //返回0,不成功
- CALL $--ret:&HORZSIZE Gdi32.dll,GetDeviceCaps,#%hdc%,#4
- CALL $--ret:&VERTSIZE Gdi32.dll,GetDeviceCaps,#%hdc%,#6
- CALL $--ret:&HORZRES Gdi32.dll,GetDeviceCaps,#%hdc%,#8
- CALL $--ret:&VERTRES Gdi32.dll,GetDeviceCaps,#%hdc%,#10
- CALL $--ret:&LOGPIXELSX Gdi32.dll,GetDeviceCaps,#%hdc%,#88
- CALL $--ret:&LOGPIXELSY Gdi32.dll,GetDeviceCaps,#%hdc%,#90
- CALL $--ret:&BITSPIXEL Gdi32.dll,GetDeviceCaps,#%hdc%,#12
- CALL $--ret:&VREFRESH Gdi32.dll,GetDeviceCaps,#%hdc%,#116
- ENVI msg1=颜色深度: %BITSPIXEL%位\n刷新率: %VREFRESH%赫兹\n水平分辨率: %HORZRES%像素\n垂直分辨率: %VERTRES%像素
- ENVI msg2=每英寸水平逻辑像数: %LOGPIXELSX%\n每英寸垂直逻辑像数: %LOGPIXELSY%\n水平毫米数: %HORZSIZE%\n垂直毫米数: %VERTSIZE%
- mess %msg1%\n%msg2%
- EXIT
- _SUB GetAllResolution
- ENVI &SaveVal=
- ENVI &dmX=0
- ENVI &dmY=0
- ENVI &colorDepth=0
- SET$ args=*1000 0 //定义一个足够长的变量,用0填充
- ENVI-addr &pArgs;&lenArgs=&args //得到这个变量的地址
-
- ENVI &iMode=0
- ENVI &retVal=1
- LOOP %retVal%!=0,
- {
- CALL $--ret:&retVal user32.dll,EnumDisplaySettingsA,#0,#%iMode%,#%pArgs%
- ENVI?long &args=&dmBitsPerPel:104
- ENVI?long &args=&dmPelsWidth:108
- ENVI?long &args=&dmPelsHeight:112
- FIND $%dmX%=%dmPelsWidth%,FIND $%dmY%=%dmPelsHeight%, FIND $%colorDepth%=%dmBitsPerPel%, !
- {
- TEAM ENVI &dmX=%dmPelsWidth%|ENVI &dmY=%dmPelsHeight%|ENVI &colorDepth=%dmBitsPerPel%
- //ENVI &SaveVal=%SaveVal%%dmPelsWidth%,%dmPelsHeight%,%dmBitsPerPel%\n
- TEAM CALC #&decPelsWidth=%dmPelsWidth%|CALC #&decPelsHeight=%dmPelsHeight%|CALC #&decBitsPerPel=%dmBitsPerPel%
- ENVI &SaveVal=%SaveVal%%decPelsWidth%╳%decPelsHeight%,%decBitsPerPel%bits\n
- }
- CALC &iMode=%iMode%+1
- }
- //mess %iMode%
- //mess %SaveVal%
- ENVI-ret %~1=%SaveVal%
- _END
复制代码 |
|