如果有谁知道同时能否告诉我一声,我也想知道怎么做,先谢谢了
请发[email protected]

解决方案 »

  1.   

    Private Const DC_PAPERNAMES = 16
    Private Declare Function DeviceCapabilities Lib "winspool.drv" Alias "DeviceCapabilitiesA" (ByVal lpDeviceName As String, ByVal lpPort As String, ByVal iIndex As Long, lpOutput As Any, lpDevMode As Any) As Long
    Private Sub Form_Load()
        'KPD-Team 2001
        'URL: http://www.allapi.net/
        'E-Mail: [email protected]
        Dim Ret As Long, PaperSizes() As Byte, Cnt As Long, AllNames As String
        Dim lStart As Long, lEnd As Long
        'Retrieve the number of available paper names
        Ret = DeviceCapabilities(Printer.DeviceName, "LPT1", DC_PAPERNAMES, ByVal 0&, ByVal 0&)
        'resize the array
        ReDim PaperSizes(1 To Ret * 64) As Byte
        'retrieve all the available paper names
        Call DeviceCapabilities(Printer.DeviceName, "LPT1", DC_PAPERNAMES, PaperSizes(1), ByVal 0&)
        'set the form's graphic mode to persistent
        Me.AutoRedraw = True
        Me.Print "Supported papersizes:"
        'convert the retrieved byte array to a string
        AllNames = StrConv(PaperSizes, vbUnicode)
        'loop through the string and search for the names of the papers
        Do
            lEnd = InStr(lStart + 1, AllNames, Chr$(0), vbBinaryCompare)
            If (lEnd > 0) And (lEnd - lStart - 1 > 0) Then
                Me.Print Mid$(AllNames, lStart + 1, lEnd - lStart - 1)
            End If
            lStart = lEnd
        Loop Until lEnd = 0
    End Sub
      

  2.   

    egrid() 真有那么多分? 口水...
      

  3.   

    uguess:
    今晚我验证一下,如果OK,1060分一定奉上。
      

  4.   

    uguess(uguess),您好:
    你提供的例程能够得到papername,那么如何将papersize和papername对应起来呢?例如papersize=9,对应的papername为A4.
      

  5.   

        Dim strDeviceName       As String
        Dim objPrint            As Printer
        Dim lngPrint            As Long
        Dim lngCount            As Long
        Dim intType()           As Integer
        Dim strPaperNames       As String
        Dim strPName            As String
        Dim lngPos              As Long
        Dim strTmp              As String
        Dim lngX                As Long
        
        strDeviceName = printer.devicename
        For Each objPrint In Printers
            If objPrint.DeviceName = strDeviceName Then
                If OpenPrinter(objPrint.DeviceName, lngPrint, 0) <> 0 Then
                    lngCount = DeviceCapabilities(objPrint.DeviceName, objPrint.Port, DC_PAPERS, ByVal vbNullString, 0)
                    ReDim intType(1 To lngCount)
                    strPaperNames = String(lngCount * 64, 0)
                    '获得纸张类型的值,返回值lngCount为纸张类型的数量
                    lngCount = DeviceCapabilities(objPrint.DeviceName, objPrint.Port, DC_PAPERS, intType(1), 0)
                    '获得纸张类型名称
                    lngCount = DeviceCapabilities(objPrint.DeviceName, objPrint.Port, DC_PAPERNAMES, ByVal strPaperNames, 0)
                    For lngX = 1 To lngCount
                        '每个名称的字节长度为64。
                        '如果名称中包含汉字,则每个名称的字节长度小于64,
                        '在获得下一个名称时,需减去累积汉字的个数,才能得到正确的起始位置
                        strPName = Mid(strPaperNames, 64 * (lngX - 1) + 1 - lngPos, 64)
                        strTmp = StrReverse(strPName)
                        lngPos = lngPos + InStr(strTmp, Chr(0)) - 1
                        strPName = Left(strPName, InStr(strPName, Chr(0)) - 1)
                        cboPapers.AddItem intType(lngX)      'pagesize
                        cboPapers.List(lngX - 1, 1) = strPName  'pagename
                    Next
                End If
                ClosePrinter (lngPrint)
                Exit For
            End If
        Next
      

  6.   

    Private Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, pDefault As Long) As Long
    Private Declare Function DeviceCapabilities Lib "winspool.drv" Alias "DeviceCapabilitiesA" (ByVal lpDeviceName As String, ByVal lpPort As String, ByVal iIndex As Long, lpOutput As Any, ByVal dev As Long) As Long
    Private Const DC_PAPERNAMES = 16
    Private Const DC_PAPERS = 2
      

  7.   

    to dbcontrols(泰山);
    是D1VB的泰山吗?好久不见了,呵呵
      

  8.   


      : egrid()  仔细看看程序,里面已经将papersize和papername对应起来了.
                    另外,我不知道如何"自定义纸张",所以没法测是否能得到这种种纸张的名字.  : darkmoon(啥也不会) 你的代码太罗嗦,也不大对,要改改才能用.
      

  9.   

    : egrid() 简单,给20次的50分,1次60分就行啦!^_^
      

  10.   

    不行啊,我给了75分之后,想再给分,结果连给贴子加分和给分的按钮都没有了,难道要我再问20个同样的问题,真不知道CSDN是怎么设计的系统。