【求助】printer 打印输出路径问题各位大佬,又来求助。我在vb中用printer对象打印了个线条,一旦打印就提示保
【求助】printer 打印输出路径问题
各位大佬,又来求助。
我在vb中用printer对象打印了个线条,一旦打印就提示保存,默认命名为“Microsoft Visual Basic.mdi”。现在有3个问题求助:
1. 如何设置我需要的路径?我想把另存为对话框的路径改成我需要的路径;
2. 如何更改默认命名?
3. 这是个什么打印机?换个电脑要是没这个打印机怎么办?
下面这个代码直接粘贴到代码中就可以查看的。
Private Sub Form_Click()
On Error Resume Next
Printer.ScaleMode = 6
Printer.Print "Printing Demo - Page " & Printer.Page; ' 打印页眉。
Printer.Line (0, 20)-(Printer.ScaleWidth, 20) ' 画线。
Printer.EndDoc
End Sub
[解决办法]这个问题其实就是打印时输出的设备问题,如果输出的设备是真实的打印机,自然就不会有什么
提示保存的问题,但如果输出的设备是一些虚拟设备,这种个过程就会由虚拟设备的驱动来控制,
至于想自动识别目标设备是否是真实设备而做出动态的反应(如是虚拟设备时就做出改变保存目
录的动作),这个估计可行性不大,因为在驱动层面上是区分不出设备是真实还是虚拟,只能人
为的判定或做数据一一识别,即使能识别出目标设备是否是虚拟设备,也未必可行,因为每个虚
拟设备的驱动也不一样,有的驱动有可能提示保存路径,有的也可能提供配置程序,根据配置参
数直接将输出内容按配置输出到指定的目录。即使指定设备来识别(不管其他驱动),要做这种
设置也不见得可行,有两种方法尝试:
1、标准的驱动接口
需要与驱动程序进行通讯,如使用 DeviceIoControl 函数发送指定命令参数给驱动,告
知驱动相关的命令与参数。但因为虚拟设备驱动没有什么行业规范,所以要通过这种方式
设置参数的方法有点难,需要跟踪调试驱动过程,但最重要的是搞清楚命令参数,没有源
代码的情况下很难实现。但有可能最后发现驱动程序没有提供这方面的接口也有可能。
2、监视系统对话框并做出反应
这个方法可行性最高,总的来说就像在对话框上加上图片浏览的方式,只要能够正确找到
对话框句柄就应该可以搞定。
但是无论怎样的方法,这个过程无非就是想实现我上面说的那种提供配置接口的虚拟打印机驱动的
过程,如果是这样,何不直接找一个这样的驱动还简单点。如果实在找不到,写一个也不难的,网
上有这种驱动的源码下载,下一个改一下也很简单的。如果不会或觉得麻烦,我觉得也可以不用理
会这种问题,毕竟这种打印任务的保存问题给用户自己来选择保存位置便于用户对自己资料的管理。