说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

在线求助:有没有改变电脑所连的打印机打印属性方向的API函数?多谢

编辑:说三道四文库 发布时间:2017-11-20 12:22
HTML文档下载 WORD文档下载 PDF文档下载
在线求助:有没有改变电脑所连的打印机打印方向的API函数?就是改变电脑所连接的打印机属性的横向、竖向方向。等待中,谢谢。
只用API,不用其它设置,多谢
Public Enum PrinterOrientationConstants
        OrientPortrait = 1
        OrientLandscape = 2
End Enum
Private Type DEVMODE
        dmDeviceName As String * 32
        dmSpecVersion As Integer
        dmDriverVersion As Integer
        dmSize As Integer
        dmDriverExtra As Integer
        dmFields As Long
        dmOrientation As Integer
        dmPaperSize As Integer
        dmPaperLength As Integer
        dmPaperWidth As Integer
        dmScale As Integer
        dmCopies As Integer
        dmDefaultSource As Integer
        dmPrintQuality As Integer
        dmColor As Integer
        dmDuplex As Integer
        dmYResolution As Integer
        dmTTOption As Integer
        dmCollate As Integer
        dmFormName As String * 32
        dmUnusedPadding As Integer
        dmBitsPerPel As Integer
        dmPelsWidth As Long
        dmPelsHeight As Long
        dmDisplayFlags As Long
        dmDisplayFrequency As Long
End Type
Private Type PRINTER_DEFAULTS
        pDataType As String
        pDevMode As Long
        DesiredAccess As Long
End Type
Private Type PRINTER_INFO_2
        pServerName As Long
        pPrinterName As Long
        pShareName As Long
        pPortName As Long
        pDriverName As Long
        pComment As Long
        pLocation As Long
        pDevMode As Long
        pSepFile As Long
        pPrintProcessor As Long
        pDataType As Long
        pParameters As Long
        pSecurityDescriptor As Long
        Attributes As Long
        Priority As Long
        DefaultPriority As Long
        StartTime As Long
        UntilTime As Long
        Status As Long
        cJobs As Long
        AveragePPM As Long
End Type
Private Const DMPAPER_A2 = 66
Private Const DMPAPER_A3 = 8
Private Const DMPAPER_A4 = 9
Private Const DMPAPER_A5 = 11
Private Const DMPAPER_B4 = 12
Private Const DMPAPER_B5 = 13
Private Const DM_IN_BUFFER As Long = 8
Private Const DM_OUT_BUFFER As Long = 2
Private Const DM_ORIENTATION As Long = &H1
Private Const DM_PAPERSIZE = &H2&
Private Const PRINTER_ACCESS_ADMINISTER As Long = &H4
Private Const PRINTER_ACCESS_USE As Long = &H8
Private Const STANDARD_RIGHTS_REQUIRED As Long = &HF0000
Private Const PRINTER_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED Or PRINTER_ACCESS_ADMINISTER Or PRINTER_ACCESS_USE)
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
Private Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, pDefault As Any) As Long
Private Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
Private Declare Function DocumentProperties Lib "winspool.drv" Alias "DocumentPropertiesA" (ByVal hWnd As Long, ByVal hPrinter As Long, ByVal pDeviceName As String, pDevModeOutput As Any, pDevModeInput As Any, ByVal fMode As Long) As Long
Private Declare Function GetPrinter Lib "winspool.drv" Alias "GetPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, pPrinter As Any, ByVal cbBuf As Long, pcbNeeded As Long) As Long
Private Declare Function SetPrinter Lib "winspool.drv" Alias "SetPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, pPrinter As Any, ByVal Command As Long) As Long
Function SetDefaultPrinterOrientation(ByVal eOrientation As _
    PrinterOrientationConstants) As Boolean
        Dim bDevMode() As Byte
        Dim bPrinterInfo2() As Byte
        Dim hPrinter As Long
        Dim lResult As Long
        Dim nSize As Long
        Dim sPrnName As String
        Dim dm As DEVMODE
        Dim pd As PRINTER_DEFAULTS
        Dim pi2 As PRINTER_INFO_2
        ' 获取默认打印机的设备名称
        sPrnName = Printer.DeviceName
        ' 由于要调用SetPrinter,所以
        ' 如果是在NT下就要求PRINTER_ALL_ACCESS
        pd.DesiredAccess = PRINTER_ALL_ACCESS
        ' 获取打印机句柄
        If OpenPrinter(sPrnName, hPrinter, pd) Then
                ' 获取PRINTER_INFO_2结构要求的字节数
               Call GetPrinter(hPrinter, 2&, 0&, 0&, nSize)
                ReDim bPrinterInfo2(1 To nSize) As Byte
                lResult = GetPrinter(hPrinter, 2, bPrinterInfo2(1), nSize, nSize)
                Call CopyMemory(pi2, bPrinterInfo2(1), Len(pi2))
                nSize = DocumentProperties(0&, hPrinter, sPrnName, 0&, 0&, 0)
                      ReDim bDevMode(1 To nSize)
                If pi2.pDevMode Then
                        Call CopyMemory(bDevMode(1), ByVal pi2.pDevMode, Len(dm))
                Else
                        Call DocumentProperties(0&, hPrinter, sPrnName, bDevMode(1), 0&, DM_OUT_BUFFER)
                End If

                Call CopyMemory(dm, bDevMode(1), Len(dm))
                With dm
                        ' 设置新的走向
                        .dmOrientation = eOrientation
                        .dmFields = DM_ORIENTATION
                        '.dmPaperSize = DMPAPER_A5 将纸张大小设为A5,请自行更改所需大小
                        '.dmFields = DM_PAPERSIZE  必须,否则无法设置纸张大小
                End With
                Call CopyMemory(bDevMode(1), dm, Len(dm))

                Call DocumentProperties(0&, hPrinter, sPrnName, _
                        bDevMode(1), bDevMode(1), DM_IN_BUFFER Or _
                        DM_OUT_BUFFER)

                pi2.pDevMode = VarPtr(bDevMode(1))

                lResult = SetPrinter(hPrinter, 2, pi2, 0&)

                Call ClosePrinter(hPrinter)
                SetDefaultPrinterOrientation = True
        Else
                SetDefaultPrinterOrientation = False
        End If
End Function

SetDefaultPrinterOrientation OrientLandscape
只用API正在找

在VB中有一个Printer对象,你可以使用这个对象来改变打印机的打印属性,该对象中的Orientation属性设置打印机的打印方向,Copies属性设置
打印机的打印份数。其它的属性及方法可以参考VB帮助。
你vb的printer对象不是有个设置打印方向的吗?

Orientation
我只要用API调用,其它都不要,谢谢。在哪能查找windows api呢?
msdn
VB中有API浏览器,你在那里能找到一些API函数!
1983 的是正解
1983的对网络打印机不管用,到Openprinter()就打不开!
1983是对的!而printer的Orientation是没用的,至少在很多时候!
对网络打机是改不了,但是如果你是通过网络打印机的话!
你打的内容会,会随着1983的设置而改变!
可以
BDE的替代品大全(按数据库类型分)-Delphi资料 BDE的替代品大全(按应用类型分)-Delphi资料 bde的组态文件-Delphi资料 DBGrid中的下拉列表和查找字段编程方法-Delphi资料 Delphi 3.0 中 连 接 数 据 库 的 三 种 方 式 Delphi 3.0中连接数据库的三种方式 Delphi 4中开发数据库控件的方法 Delphi:MIDAS中动态强制约束编程 DELPHI 中 自 适 应表 单 的 实 现 Delphi3数据库编程中的查找字段 Delphi3中 连 接 数 据 库 的 三 种 方 法 Delphi编程实现3DS动画的播放 Delphi访问ODBC数据库 Delphi如何实现在一个Dbgrid中显示多数据库 Delphi筛选数据 Delphi数据集过滤技巧 Delphi数据库应用程序开发中图像数据 Delphi下的ADO Delphi在网络数据库中的应用 Delphi中多库关联查询 Delphi中建表 Delphi中数据文件路径的管理 ODBC中的同步与异步执行模式-Delphi资料 SQL编程常见问题-Delphi资料 第11章 中级SQL-Delphi资料 第10章 SQL基础-Delphi资料 SQL语句中的删除和改变-Delphi资料 TDataLink类别的说明-Delphi资料 TDBGrid控件中对多个记录的处理-Delphi资料 安装BDE需要的东东-Delphi资料 保存DBGrid中栏的字段名及尺寸-Delphi资料 大家来讨论一下C# 和Java ,回贴均有分!! DB2的自增型变量怎么设?? 我是学php的. 谁可以讲解一下telnet的工作原理????? 狂人语录 那有BOCHS的中文帮助 在server2003操作系统下使用sql server2000 的问题 各位大侠 请问如何在C/s 下Windows程序中 找一个控件 100分 朋友! 关于英文版VC6的问题 请大师指点ASP中unicode to ansi 的问题 richtext中RtfText的内容如何编辑?200分,解决问题另外奉送! 即将前往恒生面试,大家帮我看看需要准备什么. 那有BOCHS的中文帮助 phoenix7789请回答!!!^_^ 我在装Report Machine控件时,Delphi提示我找不到RXGIF.duc,谁在给我一个? 肤色检测的问题,急!!! 如何对asp.net的程序进行加密 用datagrid问题,总是提示列键信息不足或不正确,更新影响多行, 大家来讨论一下C# 和Java ,回贴均有分!! 请问一个sql语句写法问题,100分!!!在线等待 谁能给我一点写网站制作方面投标书或者详细方案 wsad5 怎么连上ORACLE数据库啊 并非复古——关于微内核模式ASP开发框架的讨论,欢迎高手进入! 那有BOCHS的中文帮助 我愿送500分求解JAVA问题!!!!!! 关于frame里面的参数传递问题,火急 find函数的问题,请各位老兄帮忙 请问这个链接怎么写? 用xsl将xml转成html提示.... 为什么看不到邻近计算机? 关于浏览器的自定义工具栏! 无法打开web项目bbs 请告知可以下载Domino数据库安装文件和Lotus Notes的网址!在线等 我的ie6无法加载applet,请教解决方法! 如何用ASP写关闭当前窗体的代码? 用xsl将xml转成html提示.... sqlserver数据库怎么和应用程序一起打包? 一个困惑的问题,高手和有耐心的人请进! 实现要求是:对一个用来保存文件的richtext域如何创建一个代理,以实现每天固定一个时间从服务器/本地的一个固定目录下获取一个更新的文 关于数据库导入导出的问题 请问:提交表单后,把参数传到一个新弹出的页面,要求此页面没有“标准按钮”“工具栏”“地址栏”而且固定窗口大小,且不能最大化,如何 求助于高手:Tab Control控件如何使用? 组件通过鼠标移动 求助 sniffer 紧急!帮忙啊!如何获得使用<div class="test" id="mydiv"> ...</div>定义的对象 哪儿找ORACLE8i 9i for x86solaris? 在IIS中,url转发如何隐藏真实地址? 原来对应Access数据库的水晶报表现在如何转换成对应sql server 的?Access数据库已经转换成Sql server的 找到了工作,不过得告别DELPHI一段时间了本来想在非技术区发这个,但是我在这里得到的帮助最多所以...... 在web页面中如何使用脚本判断当前是否有键被按下? 用英语翻译情人眼里出西施 情人眼里出西施的英语翻译 英文翻译情人眼里出西施 then play in the playground(改成一般疑问句) 我要写一件感动的事的作文,谁有文章,给我发过来800字的哦 His father had lunch at home yesterday,so did_(I)填写?为什么? 什么叫君子之交淡如水?我要的是大家的第一直觉··· 作文 《我要的幸福》800字以上.任何类型都可以。 帮我翻译一下 君子之交淡如水 的出处的文言文的意思 什么是"君子之交淡如水"? 请翻译“There's no sin in getting weary.The sin is giving up!” 日本农工商界携手强化农业国际竞争力 罗马尼亚:保管箱频失窃 银行安全自查黎晓宏任中央巡视工作领导小组办公室主4G临近 中国三大运营商相继抛出采购大众点评网就麦当劳团购事件道歉上海交大新技术 裸眼3D有望进入家庭掘金比特币:从虚拟走进现实 上演\"58同城纽交所成功上市 分类信息第一中国高层释楼市调控信号 长效机制或加中国水土流失面积占国土面积30.7%“最牛违建”预计年底前拆完 拆除后将四川安岳“雇”狼狗守文物:每月伙食1王刚:川菜既要米其林标准 也要“妈妈体彩大乐透再开千万头奖豪门厮杀别脏了老店招牌!全聚德济南和平路店卖国企混合所有制改革有了关键“施工图”欧洲杯半决赛葡萄牙对阵威尔士 再现“再续前缘?曝勇士总冠军功臣或底薪重返急诊室“床贩子”是警示也是启示继齐达内成法国队的新领袖?博格巴:我港媒:中国空军歼-20等三款神秘战机
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘