- ベストアンサー
プリンタードライバーを透過させて出力したい
- プリンタードライバーを透過モードで使用する方法について質問します。
- 具体的な例として、セントロニクス接続のローカルプリンターに「ABCDEFGあいうえお」を出力する場合の方法を教えてください。
- 現在試しているコードではうまくいっていないようです。経験のある方、ご教授いただけると助かります。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Microsoftのサポート技術情報に記載されている内容を使用する言語プラットフォームに実装すると実現できると思うのですが... http://support.microsoft.com/kb/138594/ http://support.microsoft.com/kb/154078/ja http://support.microsoft.com/kb/322090/ja http://support.microsoft.com/kb/322091/ja
その他の回答 (3)
TPrinter *Prntr = Printer();を用いて、「通常使うプリンタ」に出力の経験はおありでしょうか。 お示しのプログラムが、特に出力部分で、あまりにも私と違う(*)もので・・・。 もっとも小生、独学の好き勝手流で、出力できれば・・でやってるもんだから、なんとも言えないけど・・・。 で、アプリ完成までに相当、紙を消費するため、デバック・出力位置調整中は、「通常使うプリンタ」にpdf(primo)を指定する、という知恵はつきました。 (*) ・TPrinter *Prntrはグローバルで定義しています。 private: // ユーザー宣言 TPrinter *pgPrinter; ・しょっぱな(FormCreate(TObject *Sender)で)用紙の向きを取得し、縦横の1mmあたりのドット数を取得しています。 ・テキスト出力の関数を定義します。 void __fastcall TForm1::_ST_Prn_TextOut( double dX1, double dY1, char cMess[] ) { int iX1dt, iY1dt; iX1dt = (int)( dgDot1mm * ( dX1 + dXBIASmm ) + 0.5 ); iY1dt = (int)( dgDot1mm * ( dY1 + dYBIASmm ) + 0.5 ); if( 0 > iX1dt ) iX1dt = 0; if( 0 > iY1dt ) iY1dt = 0; pgPrinter->Canvas->TextOut( iX1dt, iY1dt, cMess ); } 紙の左上からのmmの単位でX,Y(フォントサイズ・色)を指定し出力しています。 やっぱ年寄りのやりかたは、ヘンかなぁ・・・。 というか、「セントロニクス」なんちゃらに対応できるかは全く不明。
お礼
回答ありがとうございます。 お教えいただいたようなことは、普通のプリンタ出力ですね。 今回の質問はそういうことではありません。 ありがとうございます。
- asuncion
- ベストアンサー率33% (2127/6290)
> 上手くいっていないようです。 どんな風にうまくいかないのでしょうか? コンパイルエラーですか?実行時のエラーですか? 何かエラーメッセージは出ますか? それから、コンパイラは何をお使いですか?
補足
開発環境は、 WindowsXP/SP2 Borland C++ Builder 5/UP1 実行環境:セントロニクス接続のラベルプリンター うまくいっていない状況は、 実行してもプリンターに出力されない。 エラーメッセージは出力されません。 Escape関数の戻り値は0です。 セントロニクスのポートをモニターしているわけでは無いので、そのところの詳細は不明です。 質問での出力は単なる文字列ですが、実際のプログラムは、ラベルプリンターのコマンドを出しています。(出しているつもり) FILE *fp = fopen("LPT0:", "wb"); fputs("\x1bKKKK",fp); fclose(fp); 上記の手順では、出力できるのですが、 この手法では、プリンタードライバーとの相性のせいか、 ラベル出力順序が乱れる。途中でハングするなどの現象が出ます。 プリンタドライバをアンインストールするとOKなのですが、 WindowsのPrug&Play機能のせいで、毎回ハードウェア検出の ダイアログがでて困ります。(毎回キャンセルするのは煩雑) こういう理由で、プリンタードライバーを透過モードで使いたいのです。
- taikon3
- ベストアンサー率22% (803/3613)
透過? 薄くするんですか? ドライバーを?(^_^;
補足
プリンタ-ドライバ-は、デバイスドライバのことです。 透過は、デバイスドライバで処理させずに、直接プリンタポ-トに出力するという意味です。
お礼
回答有り難うございます。 http://support.microsoft.com/kb/138594/ この資料がやくにたちました。 VBや、C#の資料の方は、C++に翻訳するのが大変で、、 おかげさまで、目的を達成することができそうです。 本当に有り難うございました。