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 SubSub Command1_Click () Print #1, "テスト" ←オフライン時にはここから進まないEnd SubSub Command2_Click () Unload MeEnd Sub
> 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でその情報を読み取ることになるでしょう。