注册 登录
编程论坛 VFP论坛

请教一下 Winspool.drv GetDefaultPrinter 用法

weiyisc 发布于 2023-03-30 08:36, 832 次点击
请教一下 Winspool.drv GetDefaultPrinter 用法
7 回复
#2
iswith2023-03-30 09:45
内面有一些函数,你传参数,然后就可以控制了。。。。。。。。。你这问问题太泛指,啥函数那个函数调用有问题你要贴出来,这么泛指我都觉得现在请教问题的人,好NB。。。。。。

[此贴子已经被作者于2023-3-30 09:47编辑过]

#3
吹水佬2023-03-30 09:54
是获取系统设置的默认打印机设备名
程序代码:
DECLARE long GetDefaultPrinter IN winspool.drv string@,long@
nlen = 0
GetDefaultPrinter(NULL, @nLen)
cName = SPACE(nLen)
IF GetDefaultPrinter(@cName, @nLen) != 0
    ? LEFT(cName,nLen-1)
ELSE
    ? "没有默认打印机"
ENDIF
#4
iswith2023-03-30 11:44
只看前面没有看后面,抱歉。。。。。。
#5
sam_jiang2023-03-30 12:27
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
#6
吹水佬2023-03-30 12:53
以下是引用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,最好先获取输出数据的大小,明确输出缓冲的大小后再去获取数据,这样定义的缓冲大小准确又不浪费。

#7
sam_jiang2023-03-31 11:21
回复 6楼 吹水佬
我说怎么一个函数用2次呢,受教了。。。
#8
weiyisc2023-04-05 22:01
回复 6楼 吹水佬
受教了,感谢吹版!感谢给位
1