以下是引用sam_jiang在2023-3-30 12:27:52的发言:
DECLARE long GetDefaultPrinter IN winspool.drv string@,long@
nlen = 64
cName = repli(chr(0),64)
IF GetDefaultPrinter(@cName, @nLen) != 0
? LEFT(cName,nLen-1)
ELSE
? "没有默认打印机"
ENDIF
GetDefaultPrinter 出现异常时通常会抛出:
1、接收数据的缓冲大小不够 ERROR_INSUFFICIENT_BUFFER(112)
2、没有默认打印机 ERROR_FILE_NOT_FOUND(2)
像这类in/out参数的API,最好先获取输出数据的大小,明确输出缓冲的大小后再去获取数据,这样定义的缓冲大小准确又不浪费。