如果要很自由的话,不能用VB自己的东西,假如针对一种型号的打印机,你可以使用该打印机厂商提供的PCL(打印控制语言)来控制
HP和Cannon都提供,我原来用过

解决方案 »

  1.   

    hp和cannon有针式打印机吗?可以给我一份源代码吗?
      

  2.   

    是我五年前的项目了,都不知道去哪
    当时就能精确控制在打印机上绘图和打印机状态,所以我保证这条渠道你一定能走通,不过,你需要找相应的PCL资料,然后使用print方式向打印机发送指令。
      

  3.   

    那就没问题,那就是PCL的指令集
    你可以这样:
    Open "LPT1:" For Output As #1
    print #1, Chr$(27) + "E"; Chr$(27) + "%0B";
    不过这样做出来的程序针对性太强,不太灵活。
      

  4.   

    现在管不了这么多了,不灵活就不灵活吧,可是我还是没有办法控制退纸的长度啊,快救救我吧,都快疯了,所有的分决不食言!!!
    我用的是松下1121打印机,PCL指令中退纸是ESC "j" n,其中n代表n/180英寸为距离退纸一行,可是这个n如何再PRINT #1中表示呢,救救我啊!!!
      

  5.   

    唉,分不重要,你能解决问题最重要
    大哥您不是难为我吗,我VB都一年多没用过了,该忘的都忘光了:(
    你等等,别着急,我装个VB给你看看,但愿能解决:)
      

  6.   

    这是我原来写的关于打印机控制的一段程序,我现在也看不懂了,你仔细看看吧:)
       If Index = 1 Then
         Printer.Orientation = vbPRORPortrait    Open "LPT1:" For Output As #1
        Print #1, Chr$(27); "E"; Chr(&H1B); Chr(&H26); "l"; "1"; "O"
        Close #1
        PrinterSetting.PrintDirection = 纵向   Else
        Printer.Orientation = vbPRORLandscape
        Open "LPT1:" For Output As #1
        Print #1, Chr$(27); "E"; Chr(&H1B); Chr(&H26); "r"; "0"; "F"
        Close #1
        PrinterSetting.PrintDirection = 横向
       End If
      

  7.   

    原来之所以这么做就是因为破Printer对象连横纵控制都控制不好,所以只有自己写了。
    好像指令之间要用;分隔吧,你再试一试,祝你顺利!
      

  8.   

    都怪当时注释写得不细:(
    还有一个方案,你找一本HP的打印机的说明书,看看它的PCL中横纵控制的指令,然后参照我的那段程序,应该没什么问题:)
      

  9.   

    to: wangwenyou(王文友) 我用的是pson ,上边有ESC/PK码,但我看不明,也不知点用,部份控制码如下:格式控制码:ESC 0,ESC 2,ESC 3,ESC A,ESC +,
              LF,ESC J, ESC C ,ESC CO, FF, ESC N,
              ESC O,ESC B,VT, ESC Q, ESC 1,ESC D,
              ...........
    打印改变控制码:  SO,DC 4 ,ESC W, SL, DC 2 ,ESC E, ESC F,
                    ESC E, ESC F ,ESC G,ESC H, ESC W,
                    ............请问如何用如上代码作控制?
      

  10.   

    应该是下面这样写吧:)
    Print #1, Chr$(27); "B";
      

  11.   

    Print #1, Chr$(27); "E"; Chr(&H1B); Chr(&H26); "B";
    这样行吗??
      

  12.   

    我得问题已经解决,但是还是不知道为什么。
    退纸可以这样 print #1,chr$(27)+chr$(106)+chr$(n)
    这里的n只能从30~129还有255,其他都是进一行纸,我的实际问题已经可以通过上面的操作解决,可是如果n=245就不能写成chr$(245),只能通过几个N相加。不明白为什么。
    我的环境是W2K,VB6 SP5松下1121打印机,连续纸
      

  13.   

    to:e_shark
    我跟你的问题差不多,我现在用你的那个
    print #1,chr$(27)+chr$(106)+chr$(255)是可以退纸(不知道退了多少)
    但是相应的进纸命令我就不知道了只能找你救命了