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

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

编辑:说三道四文库 发布时间:2017-09-26 06:37
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的设置而改变!
可以
VB访问数据库的方案比较 VB数据库编程经验两则 VB数据库编空字段的处理 VB数据库多字段记录的录入 VB数据库记录查询四法 vb应用程序访问sql server方法探讨 VB中超长OLE数据库字段的操纵方法 VB中将数据转换为数据库文件 VB中远程数据库的访问 Visual Basic 的数据库编程 Visual Basic数据库数据的选项录入及选项增减与编辑 把资料输往Excel来列印-VB资料 报表中的滚动问题-VB资料 编写Connect Strings-VB资料 表或查询是否存在-VB资料 不创建DSN直接在程序中使用ODBC数据源-VB资料 不用 DATA 控件操作数据库文件 -VB资料 不用 EOF 以加快记录循环-VB资料 处理Select语句中的单引号 -VB资料 断开所有的数据连接 -VB资料 访问VB外来数据库 非access数据库在vb中的编程及应用 关闭程序中所有创建的数据库连接。 -VB资料 关闭所有的数据连接 -VB资料 关于数据报表的打印设置-VB资料 VB建立、改变及重构Access数据库-VB资料 结构化查询语言(SQL)详解之一-VB资料 利用VB使ACCESS数据库在网络使用中保持同步 返回 连接Data到多个表单-VB资料 列出 SQL Server 数据库中所有的存储过程-VB资料 列出MDB档当中所有table的名称-VB资料 怎样使一个按钮成为默认按钮? 小问题,高分请教用滑动条制作的调色板问题。 在Asp怎样连接Access数据库? 跳线 高分求DELPHI4.0中的哪个做安装程序的工具,只要这个版本的! 难道是Delphi6的Bug吗?还望遇到过这样问题的大哥多多指教! 怎样实现要最新的信息? 一个疑惑的问题? 此觸發器該如何寫 关于数据库更新的问题!帮帮忙,50分就是你的啦! easy问题送大分,DLL中的资源,马上结贴 菜鸟刚学vc.net,新建了一个dialog based,只有一个窗体,我在窗体上放一个按钮,这就是我的程序了,运行之后生成了可执行文件,我把他拷 不明白交换机的网管功能? 请问:如何将richtextbox中显示的内容转换成图像信息?(急) 请各位同志帮我看看这段程序: 谢谢! 没有免费的午餐.各位求救.dbf文件损坏,如何修复(没有带.cdx文件) 在线等!急急急!!! 请大家帮忙 急需解决!!!!! 一个简单的问题,请帮忙 请教!如何用非模式对话框实现面板? 请问高手,这样是否可行? 是不是真的要我去当内裤了呀~~~~~~~~~~~~~在线等待!~!~!~! 请各位大侠帮忙:要在Excel中实现以下功能 如何往串口的发送脚送出一个持续10ms的低电平? 如何实现有些项输出到打印机,有些项输出到显示器,也就是有预览时能看到,而打印时不把他打印出来. ★紧急求助!!如何在CListCtrl中的非第一列贴图?或者设个标记?在线等待!★ memset、memcopy\memget等都是干什么的怎么用?? dropDownList的异常现象?????? 如何改变EventLog中Source和自定义Log的对应关系? 紧急求助,在线等待。 为什么无法实现? 请问vc60.idb和vc60.pdb是干什么用的? dreamweaver Mx再繁體系統中的使用 乱码问题!请高手赐教!! 请问在jsp中如何连接access数据库? 你愿意赐教吗? w3svc记录的时间跟系统时间不一致? 谁能告诉我在哪儿可以下载到微软BHO的例子? 一个弄了很长时间的问题,高手过来看看。。 怎样在网页中显示数据类型为"OLE 对象"的图片 可以帮我看一下这段程序吗? 谢谢! 急救我 请问 tomcat 中服务 问题? 我的心渐渐寒了,IT公司怎么这么没信誉呀? 关于安装qq的问题. 我看到有的文章发布系统里,有在word里直接粘贴就可以显示的JS,但我不会调用,谁知道? 一个很菜的问题 需要一个弹珠台游戏的设计思路,(windows自带的那个pinball游戏) windows 2000 中有多少中方法访问硬盘上的文件?? 文档不能删除的问题!请高手赐教,定重谢 Set object1 = object2 有关拷贝文件的问题? 李源潮同南非副总统莫特兰蒂举行会谈地方金融机构应做大还是做小?省政协经美国安局30天内收集西班牙6050万中储粮:发现两企业违规将进口油菜籽掺贵州遵义市委书记廖少华涉嫌严重违纪违韩国陆军前方哨所一士兵中枪身亡 军方尼日利亚叛军袭击军队 医院收到35具突尼斯政治纷争致市政荒废 街头成“垃韩国陆军前方哨所一士兵中枪身亡 军方省委通报省级班子专题民主生活会情况女子骑电瓶车上高速 前后行驶约35公外国专家学者积极评价习近平在周边外交美国安局30天内收集西班牙6050万韩国陆军前方哨所一士兵中枪身亡 军方宁波公共自行车实施满月 绿色出行渐获北京全城再陷严重污染 首次启动蓝色预中央气象台继续发布霾黄色预警 华北局尼日利亚叛军袭击军队 医院收到35具财经随笔:俄罗斯老拉达遭遇进口车挑战格鲁吉亚大选出口民调显示执政联盟或将澳大利亚山火多处火情失控 1名救援飞记者直击:巧遇“抗震父子兵”云投集团向昭通市鲁甸地震灾区捐款80巧家女孩被滚石砸中头部 经5小时手术切尔西官宣西班牙中场租借离队 刚续约两名加拿大籍公民因涉嫌窃取我国国家秘伦敦股市4日下跌巴黎股市CAC40股指4日较前一交易德国法兰克福股市DAX指数4日下跌找到一艘唐代沉船,就等于找到一千多年找到一艘唐代沉船,就等于找到一千多年常德县地名溯源:地名中,识风气与精魂菊花石非浏阳独有,湘西也有关键图泸溪菊花石雕刻工艺:“极细微处,还是菊生两地:浏阳的菊花石秀气,泸溪的菊菊生两地:浏阳的菊花石秀气,泸溪的菊永修“最美水中公路”现血吸虫踪迹?该“中国之最”皮划艇竞赛在龟峰举行(图南昌“千禧颐和园”上演电梯惊魂 一部江西吉水县57岁局长晚节不保受贿5.148箱蜜蜂一夜暴毙 痛煞蜂农 80
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘