网络打印机 获取默认纸张以及支持的纸张类型错误

wzh2021 2012-11-15 01:56:35

软件的打印设置 是由“胖无极”的改造而来的,使用一直正常。
只是最近一旦在 网络打印机而且打印机类型比较新的情况下就会报错

============================================
============================================
//boolean of_getprinter(unsignedlong hpprinter,nvo_prnparam n_prnparam)
//获取打印机的属性信息
Printer_Info_2 lstr_info
blob pBackup

if not of_GetPrinter(hpPrinter, lstr_info) then return false

//打印机的DefaultSource、DefaultPaperSize、DefaultOrientation
if os = WIN9X then GetPrinter9xDM(lstr_info.pDevMode, n_prnparam)
if os = WINNT or os = WIN2K then GetPrinterNTDM(lstr_info.pDevMode, n_prnparam)

//调用第二次的原因: win98里, 好象内存的管理不同与win2k
//当发生CopyMem后, 内存的一些元素好象被释放掉了,为什么win2k没有这种情况?
//关注.
if not of_GetPrinter(hpPrinter, lstr_info) then return false


===================================
===================================
//boolean GetPrinterNTDM(unsignedlong a_pdevmode,nvo_prnparam n_prnparam)
//获取打印机的DefaultSource、DefaultPaperSize、DefaultOrientation
DevModeNT ldmnt

CopyMem(ldmnt, a_pDevMode, DEVMODENT_LEN) //此处报错

n_prnparam.DefaultSource = ldmnt.dmDefaultSource
n_prnparam.DefaultPaperSize = ldmnt.dmPaperSize
n_prnparam.DefaultOrientation = ldmnt.dmOrientation

return true

...全文
2212 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
quick688 2013-04-22
  • 打赏
  • 举报
回复
手动设置纸张,不清楚你这种方式的
茫茫前路 2013-04-19
  • 打赏
  • 举报
回复
没这样用过,关注下,也学习下
WorldMobile 2013-04-17
  • 打赏
  • 举报
回复
这段代码用的较少,可能兼容性差些
wzh2021 2013-04-17
  • 打赏
  • 举报
回复
怎么 没有人用这个代码啊
fengguangyin 2013-01-11
  • 打赏
  • 举报
回复
我也碰到这个问题呀,比较新的打印机,这个RtlMoveMemory(copymem)就会报错,而且打印机名是英文的
WorldMobile 2012-11-20
  • 打赏
  • 举报
回复
晕,你的是pb9,pb9不用加ansi 是不是打印机名有中文名?
wzh2021 2012-11-17
  • 打赏
  • 举报
回复
我的 PB9.0.3.8836
wzh2021 2012-11-17
  • 打赏
  • 举报
回复
引用 3 楼 lzp_lrp 的回复:
把以上函数声明的 alias for "RtlMoveMemory" 改为 alias for "RtlMoveMemory;ANSI"
加上";ANSI",都报错了!!
wzh2021 2012-11-17
  • 打赏
  • 举报
回复
引用 3 楼 lzp_lrp 的回复:
把以上函数声明的 alias for "RtlMoveMemory" 改为 alias for "RtlMoveMemory;ANSI"
现在我已经修改了,不知能不能有效。 因为这个问题不是经常出现,我这里也没法测试,等过段时间来反馈结果。 再问一下 加上";ANSI",是为什么,加与不加有什么区别?
WorldMobile 2012-11-17
  • 打赏
  • 举报
回复
把以上函数声明的 alias for "RtlMoveMemory" 改为 alias for "RtlMoveMemory;ANSI"
WorldMobile 2012-11-16
  • 打赏
  • 举报
回复
申明API Function ulong MemoryCopy( REF blob destination, ref char source[],ulong length) library "kernel32.dll" Alias for "RtlMoveMemory;Ansi" 将source中的内容拷贝至destination,拷贝length指定的字节数。 这个API中的两个参数原型是any类型,如果你需要对其他类型的数据进行处理,可以申明成其他的数据类型(结构也可以的)。 看一下你的网络打印机或者新打印机名里是不是有中文? 另把api函数声明加个Ansi试试
wzh2021 2012-11-16
  • 打赏
  • 举报
回复
引用 1 楼 lzp_lrp 的回复:
申明API Function ulong MemoryCopy( REF blob destination, ref char source[],ulong length) library "kernel32.dll" Alias for "RtlMoveMemory;Ansi" 将source中的内容拷贝至destination,拷贝length指定的字节数。 这个API……
api已经声明了, //内存拷贝函数 function ulong CopyMem ( ref printer_info_1 dest, ref blob source, ulong length ) library "kernel32" alias for "RtlMoveMemory" function ulong CopyMem ( ref printer_info_2 dest, ref blob source, ulong length ) library "kernel32" alias for "RtlMoveMemory" function ulong CopyMem ( ref printer_info_4 dest, ref blob source, ulong length ) library "kernel32" alias for "RtlMoveMemory" function ulong CopyMem ( ulong dest, ref blob source, ulong length ) library "kernel32" alias for "RtlMoveMemory" function ulong CopyMem ( ref blob source, ref printer_info_2 dest, ulong length ) library "kernel32" alias for "RtlMoveMemory" function ulong CopyMem (ref blob dest, ref devmodent source, ulong length) library "kernel32" alias for "RtlMoveMemory" function ulong CopyMem (ref blob dest, ref devmode source, ulong length) library "kernel32" alias for "RtlMoveMemory" function ulong CopyMem (ref devmodent dest, ulong source, ulong length) library "kernel32" alias for "RtlMoveMemory" function ulong CopyMem (ref devmode dest, ulong source, ulong length) library "kernel32" alias for "RtlMoveMemory" function ulong CopyMem (ref ulong hMem, ref devmodent source, ulong length) library "kernel32" alias for "RtlMoveMemory" function ulong CopyMem (ref string dest, ref blob source, ulong length ) library "kernel32" alias for "RtlMoveMemory" function ulong CopyMem (ref blob dest, ref PrintDlg source, ulong length) library "kernel32" alias for "RtlMoveMemory" function ulong CopyMem (ref PrintDlg dest, ref blob source, ulong length) library "kernel32" alias for "RtlMoveMemory"

680

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder API 调用
社区管理员
  • API 调用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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