行単位で印刷する方法          <TOP>


ドットインパクトプリンターにのみ使用できます。

OpenPrinter プリンタオブジェクトをオープン
ClosePrinter プリンタオブジェクトを閉じる
EndDocPrinter 印刷ジョブを終了
EndPagePrinter 指定されたプリンタのページの終端と次のページの先頭を示す
StartDocPrinter 印刷ジョブを開始
StartPagePrinter プリンタドライバがデータを受け取る準備をさせる
WritePrinter 指定されたプリンタにデータを書き込むよう印刷スプーラに通知

 

現在ドットインパクトプリンターは、持ちあわせがないので試験できません(^^;)
 

 

'================================================================
'= 行単位で印刷する方法(ドットインパクトプリンターのみ)
'=    (WritePrinter.bas)
'=    http://support.microsoft.com/?kbid=175083
'================================================================
#include "Windows.bi"

Type DOCINFO
    pDocName    As Long
    pOutputFile As Long
    pDatatype   As Long
End Type

' プリンタオブジェクトをオープン
Declare Function Api_OpenPrinter& Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName$, phPrinter&, ByVal pDefault&)

' プリンタオブジェクトを閉じる
Declare Function Api_ClosePrinter& Lib "winspool.drv" Alias "ClosePrinter" (ByVal hPrinter&)

' 印刷ジョブを終了
Declare Function Api_EndDocPrinter& Lib "winspool.drv" Alias "EndDocPrinter" (ByVal hPrinter&)

' 指定されたプリンタのページの終端と次のページの先頭を示す
Declare Function Api_EndPagePrinter& Lib "winspool.drv" Alias "EndPagePrinter" (ByVal hPrinter&)

' 印刷ジョブを開始
Declare Function Api_StartDocPrinter& Lib "winspool.drv" Alias "StartDocPrinterA" (ByVal hPrinter&, ByVal Level&, pDocInfo As DOCINFO)

' プリンタドライバがデータを受け取る準備をさせる
Declare Function Api_StartPagePrinter& Lib "winspool.drv" Alias "StartPagePrinter" (ByVal hPrinter&)

' 指定されたプリンタにデータを書き込むよう印刷スプーラに通知
Declare Function Api_WritePrinter& Lib "winspool.drv" Alias "WritePrinter" (ByVal hPrinter&, pBuf As Any, ByVal cdBuf&, pcWritten&)

Var Shared Text1 As Object
Var Shared Button1 As Object

Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14
Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14

Var Shared hPrinter As Long

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    Var Doc As Long
    Var di As DOCINFO
    Var Ret As Long

    Ret = Api_OpenPrinter("PC-PR201", hPrinter, 0)

    If Ret = 0 Then
        A% = MessageBox("", "プリンタを認識できません!", 0, 2)
        Exit Sub
    End If

    di.pDocName = StrAdr("Test Print" & Chr$(0))
    di.pOutputFile = StrAdr(Chr$(0))
    di.pDatatype = StrAdr(Chr$(0))

    Doc = Api_StartDocPrinter(hPrinter, 1, di)
    Ret = Api_StartPagePrinter(hPrinter)
End Sub

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var lpcWritten As Long
    Var txt As String
    Var Ret As Long

    txt = "How's that for Magic !!!!" & Chr$(13, 10)
    Ret = Api_WritePrinter(hPrinter, txt, Len(txt), lpcWritten)
End Sub

'================================================================
'=
'================================================================
Declare Sub MainForm_QueryClose edecl ()
Sub MainForm_QueryClose()
    Var Ret As Long

    Ret = Api_EndPagePrinter(hPrinter)
    Ret = Api_EndDocPrinter(hPrinter)
    Ret = Api_ClosePrinter(hPrinter)
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End