• ベストアンサー

プリンターの制御

Windows Xp/SP2 Borland C++ Builder Ver5.0 UP1 上記環境で、プリンターに出力するのですが、 1)用紙の、縦置き、横置きを指定したい。(プログラムから) 2)プリンタのオンライン状態を取得したい。 3)プリンタポートに直接ASCII文字列を出力したい。 以上3点です。どなたか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • techa
  • ベストアンサー率60% (41/68)
回答No.1

>1)用紙の、縦置き、横置きを指定したい。(プログラムから) TPrinterオブジェクトがありますから、プリンタの用紙方向は Printer()->Orientation = poLandscape; Printer()->Orientation = poPortrait; で双方セレクトできるとおもいます。 ヘッダとして <Printers.hpp> をインクルードしてくださいね。 >2)プリンタのオンライン状態を取得したい。 GetPrinter()の最終引数DeviceMode(DEVMODE構造体)で得られるかもしれませんね。 ただ、私はやったことがないので定かではありません。 ごめんなさい。 >3)プリンタポートに直接ASCII文字列を出力したい。 プリンタオブジェクトを用いず、CreateFile関数で直接LPTを開けば使えるかもしれません。 また、GIVEIOやpcidebug.sys やCPUInfo.sysなどのドライバをつかえばXpでも直接IOがコントロールできますので、これでプリンタに割り振られたIOポートを直接たたけば利用可能です。

tig33
質問者

お礼

回答ありがとうございました。 プリンタポートに直接・・・は、fopen("lpt0:","wb") で可能なのですが(実際やっています) この場合、プリンターがオフラインになっているとプログラムがフリーズしてしまいます。(マルチスレッドにしていない)これを回避したくて。いろいろ試しています。 丁寧な回答ありがとうございました。