行単位で印刷する方法 <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