|
楼主 |
发表于 2011-4-20 11:50:32
|
显示全部楼层
本帖最后由 donque2010 于 2011-4-20 11:54 编辑
很感谢,转过来了,但还是取不到结果。
麻烦再看下我的api 声明 是否有错
vb api声明:
Private Declare Function EnumDisplaySettings Lib "user32" Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, ByVal iModeNum As Long, lpDevMode As Any) As Long
//aardio 代码
import console;//打开控制台
EnumDisplaySettings = ::User32.api("EnumDisplaySettingsA","int(int lpszDeviceName,int iModeNum,struct lpDevMode)")
//直接用aatuo编码转换工具出来的声明如下
//EnumDisplaySettings = ::User32.api("EnumDisplaySettingsA","int(int lpszDeviceName,int iModeNum,pointer& lpDevMode)")
DEVMODE = class {
BYTE dmDeviceName[32];
WORD dmSpecVersion;
WORD dmDriverVersion;
WORD dmSize;
WORD dmDriverExtra;
INT dmFields;
word dmOrientation;
word dmPaperSize;
word dmPaperLength;
word dmPaperWidth;
word dmScale;
word dmCopies;
word dmDefaultSource;
word dmPrintQuality;
word dmColor;
word dmDuplex;
word dmYResolution;
word dmTTOption;
word dmCollate;
BYTE dmFormName[32];
WORD dmUnusedPadding;
WORD dmBitsPerPel;
INT dmPelsWidth;
INT dmPelsHeight;
INT dmDisplayFlags;
INT dmDisplayFrequency;
}
var devm=DEVMODE();
EnumDisplaySettings (0,0,devm);
//用aatuo转的api声明传递指针会出错
//EnumDisplaySettings (0,0,topointor(devm));
console.log(devm.pelsWidth,devm.pelsHeight)
//打印出来是null
execute("pause") //按任意键继续
;//关闭控制台
|
|