如何在程序中控制两台打印机?

巴里 2001-08-16 11:32:27
近日开发一个收费系统,因要用两种收据,为了提高工作效率,想一台电脑带两台
打印机,每台打印机上装一种收据(不用经常入纸),但PB中好象没有提供连接指
定打印机的功能,想用API,OpenPrinter但不知如何设参数,请各位高手指教.

...全文
119 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
joycenter 2002-01-27
  • 打赏
  • 举报
回复
我的win2000怎么得不到正确结果。怎么办啊。。
windbells 2001-08-16
  • 打赏
  • 举报
回复
设定好两个打印机后,分别取不同名字。可以通过下面一段程序动态修改缺省打印机,以便使得票据打印到指定打印机上。
当换票据时只要在程序中动态切换打印机(ls_print)就行了。
可以把下面的程序作成一个函数,这样只需传入打印机的名称就可以了。



integer li_return

string ls_default, ls_driver, ls_port, ls_printer, ls_key
string ls_def,ls_def2,ls_new,ls_new2
environment env
string ls_print='PRINT' //为你想要设置为缺省打印机的打印机名称
// 获得操作系统类型
li_return = GetEnvironment(env)
IF li_return <> 1 THEN RETURN 0
if env.OSType <> WindowsNT! then goto is_win9x // Goto run under Win9x

is_winnt:
(略)
is_win9x:
1、获得原有缺省打印机的名称
RegistryGet("HKEY_LOCAL_MACHINE\Config\0001\System\CurrentControlSet\Control\Print\Printers","default",ls_default)

2、设置新的缺省打印机的名称
ls_new = ls_print
li_return = RegistrySet("HKEY_LOCAL_MACHINE\Config\0001\System\CurrentControlSet\Control\Print\Printers", "default",ls_new)
if li_return <> 1 then
return '0'
end if
3、得到新设置的缺省打印机的参数(如端口等)
ls_key = "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print\Printers\"+ ls_new
RegistryGet(ls_key, "Printer Driver", ls_driver)
RegistryGet(ls_key, "Port", ls_port)
ls_new2 = ls_driver + "," + ls_port

4、在win.ini配置文件设置缺省打印机的名称,及端口号等。
ls_printer = ls_new + "," + ls_new2
li_return = SetProfileString("c:\windows\win.ini", "Windows", "device", ls_printer)
if li_return <> 1 then
return '0'
end if

return ls_default



Methodor 2001-08-16
  • 打赏
  • 举报
回复
打印时用API修改默认的打印机~~
你直接对注册表操作也可以~~
hzslx 2001-08-16
  • 打赏
  • 举报
回复
ok
lesni 2001-08-16
  • 打赏
  • 举报
回复
就是这样了,我以前用过。

1,077

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧