• ベストアンサー

C言語でMS-DOSプロンプト入力でプリンタに出力する方法は?

OS/Win98でVC++を使ってC言語を学習している初心者です. C言語のプログラムでMS-DOSプロンプト上のコマンド入力において プリンタに出力する方法を知りたいです. たとえばMS-DOSプロンプト上で C:>[プログラム名][ファイル名(XXX.txt)] と入力すればプリンターにおいて、入力した[ファイル名(XXX.txt)]が 出力されるようなプログラムを作成したいです. 主にプログラムの流れをどのようにすれば良いか知りたいです. 宜しくお願いします.

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

  • ベストアンサー
  • mnabe
  • ベストアンサー率33% (427/1283)
回答No.4

補足読みました...  そうなると、プリンタドライバを使っての印刷になりますので、簡単には出来ません。  全部書いてしまうと、プログラムを載せる事になってしまうので、主な流れとその時に調べるキーワードを列挙します。 ----ここから 1.VC++のプロジェクトの新規作成を選択して、プロジェクトを作成する  ヒント:沢山あるが、今回の様なプログラムでは、『Win32 Console Application』がお薦め、その後のチェックでは『MFCを使用する』が必須(楽をしたいなら)です。 2.コマンドラインパラメータを取得する  ヒント:TCHAR* argv[], TCHAR* envp[]あたりを調べる 3.コマンドラインから取得したファイルを調べる  ヒント:そのファイルが存在するかどうかが重要 4.プリンタのハンドルを作成する  ヒント:CreateDC この時に、プリンタ名を使用するので、そのプリンタ名の取得がちょっとやっかい 5.コマンドラインからのファイルを開く 6.一行読込む 7.プリンタハンドルに一行書込む  ヒント:TextOut 8.6-7を繰り返す(改頁等の処理が入るとちょっと面倒)  ヒント:StartPage/EndPage 9.ファイルを閉じる 10.印刷を終わる  ヒント:EndDoc 11.ハンドルを解放する  ヒント:DeleteDC 12.プログラムを終了させる ----ここまで  ヒントで、関数名になっている物は、その関数名で、ヘルプを検索すれば使用方法が出て来ます。  ちょっと高いのですが、Windows95 APIバイブル1(9600円)を購入すれば、印刷の仕方が書かれています。参考になると思います。

oohanabisi
質問者

お礼

有難うございました.参考にさせて頂きます.

その他の回答 (3)

  • mnabe
  • ベストアンサー率33% (427/1283)
回答No.3

 プリンタは固定でよろしいのですか?  もしプリンタが汎用プリンタドライバを使用するとなるとちょっと厄介です。  プリンタによっては、プリンタコードが異なりますので、一度試しに  コマンドラインから、 『type ファイル名 > prn』でプリンタ出力してみて下さい。それが、無事印刷出来れば、何事もなく印刷出来ます。

oohanabisi
質問者

補足

>プリンタは固定でよろしいのですか? >もしプリンタが汎用プリン…ちょっと厄介です。 固定であるか汎用であるかの概念が勉強不足で分かりませんでした. 私の環境はパソコンからLUNでパソコン(プリンタ用サーバー)へ情報を送り そこにプリンタが接続されている状態です.汎用になるのでしょうか? MS-DOSプロンプトで pass>type ファイル名 > prn  と入力しましたが ファイルを作れませんでした.  と出力されました.

  • shigatsu
  • ベストアンサー率26% (511/1924)
回答No.2

ちょっと追加 0 main関数の引数からコマンドライン文字列を取得 やさしすぎるかな?

  • madman
  • ベストアンサー率24% (612/2465)
回答No.1

1ファイルをオープン 2プリンタポートをオープン 3ファイルを1行読込 4プリンタに1行書込み 5ファイルのEOFまで3~4繰り返し 6プリンタポートクローズ 7ファイルクローズ 必要に応じて、5・6の間で改ページ(排紙コマンド)をプリンタポートに出力

oohanabisi
質問者

補足

上記の1,7は分かったのですが2から6をどのように行えばいいのか 分かりませんでした. 出力ストリームをプリンタへするということでしょうか? 2の「プリンタポートをオープン」とはC言語の域内で出来ることでしょうか? C++/VC++はまだ勉強しておりませんので分かりません. MSDNライブラリで関数がいろいろありましたがよく分かりませんでした. 何か関数でこの関数を指しているぞ!!というのがありましたら教えて頂 きたいです.Cの域を越えていることでもかまいません. 勉強不足で申し訳ございません.どうぞ宜しくお願い致します.

関連するQ&A