- ベストアンサー
プリンターの制御
Windows Xp/SP2 Borland C++ Builder Ver5.0 UP1 上記環境で、プリンターに出力するのですが、 1)用紙の、縦置き、横置きを指定したい。(プログラムから) 2)プリンタのオンライン状態を取得したい。 3)プリンタポートに直接ASCII文字列を出力したい。 以上3点です。どなたか教えてください。
- みんなの回答 (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ポートを直接たたけば利用可能です。
お礼
回答ありがとうございました。 プリンタポートに直接・・・は、fopen("lpt0:","wb") で可能なのですが(実際やっています) この場合、プリンターがオフラインになっているとプログラムがフリーズしてしまいます。(マルチスレッドにしていない)これを回避したくて。いろいろ試しています。 丁寧な回答ありがとうございました。