[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2007/06/08(Fri) 15:38
投稿者名:ガスヤ
Eメール:
URL :
タイトル:
printステートメントにおけるエラー
VB6.0にて、ローカルプリンタ(FMPR-373)への直接出力を行っているのですが、
プリンタがオフラインの場合や紙切れが起こっている時には、下記プログラムの
printステートメントのところで止まってしまうのです。
ちなみに、VB2.0で同じプログラムを実行すると、オフライン時にはエラー番号57
が帰って来ます(デバイスI/Oエラー)。
2.0と6.0ではなにが違うのでしょうか。
また、VB6.0にてプリンタポートに接続したプリンタの状態を取得する方法は
どのようにしたらよいのでしょうか。

Sub Form_Load ()
    Open "LPT1" For Output As #1  'プリンターオープン(装置番号1に割当)
End Sub
Sub Command1_Click ()
    Print #1, "テスト"  ←オフライン時にはここから進まない
End Sub
Sub Command2_Click ()
    Unload Me
End Sub

投稿時間:2007/06/11(Mon) 13:18
投稿者名:K.J.K.
Eメール:
URL :
タイトル:
Re: Printステートメントにおけるエラー
> VB6.0にて、ローカルプリンタ(FMPR-373)への直接出力を行っているのですが、

まず、Windows95以降で直接出力(本当は直接ではないけど)を行う場合は、
API関数のOpenPrinter、StartDocPrinter、WritePrinterなどを組み合わせて
使うべきです。多少の手間はかかりますが、ファイルシステムを経由しない分
意図せぬ要素が介在する可能性が減ります。

また、本当に直接出力をする必要があるかどうかも検討すべきです。
取り扱いたい機能を持つ適切なドライバ・支援ソフトなどがあれば、そちら
を利用するべきでしょう。

> プリンタがオフラインの場合や紙切れが起こっている時には、下記プログラムの
> printステートメントのところで止まってしまうのです。
> ちなみに、VB2.0で同じプログラムを実行すると、オフライン時にはエラー番号57
> が帰って来ます(デバイスI/Oエラー)。

それはVB側の問題ではなく環境に著しく依存する現象なのでは。まずOSから
して異なるでしょうし、もし同じOS内で動かしているとしても、VB2プログラムは
仮想マシン中で動かされているようなものですし。

> また、VB6.0にてプリンタポートに接続したプリンタの状態を取得する方法は
> どのようにしたらよいのでしょうか。

一応、API関数のGetPrinterなどで規定のものは取得できますが、本当に欲しい情報が
取得できるかはわかりかねます。

プリンタに対して細かい制御ができるのであれば、WriterPrinterでコマンドを
送って、ReadPrinterでその情報を読み取ることになるでしょう。