こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

OS/Win98でVC++を使ってC言語を学習している初心者です.

C言語のプログラムでMS-DOSプロンプト上のコマンド入力において
プリンタに出力する方法を知りたいです.

たとえばMS-DOSプロンプト上で

C:>[プログラム名][ファイル名(XXX.txt)]

と入力すればプリンターにおいて、入力した[ファイル名(XXX.txt)]が
出力されるようなプログラムを作成したいです.
主にプログラムの流れをどのようにすれば良いか知りたいです.

宜しくお願いします.

投稿日時 - 2001-01-29 13:29:49

QNo.33840

すぐに回答ほしいです

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

補足読みました...
 そうなると、プリンタドライバを使っての印刷になりますので、簡単には出来ません。

 全部書いてしまうと、プログラムを載せる事になってしまうので、主な流れとその時に調べるキーワードを列挙します。
----ここから
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円)を購入すれば、印刷の仕方が書かれています。参考になると思います。

投稿日時 - 2001-01-29 19:14:34

お礼

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

投稿日時 - 2001-01-30 09:17:56

ANo.4

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

 プリンタは固定でよろしいのですか?

 もしプリンタが汎用プリンタドライバを使用するとなるとちょっと厄介です。

 プリンタによっては、プリンタコードが異なりますので、一度試しに
 コマンドラインから、
『type ファイル名 > prn』でプリンタ出力してみて下さい。それが、無事印刷出来れば、何事もなく印刷出来ます。

投稿日時 - 2001-01-29 15:21:23

補足

>プリンタは固定でよろしいのですか?
>もしプリンタが汎用プリン…ちょっと厄介です。

固定であるか汎用であるかの概念が勉強不足で分かりませんでした.
私の環境はパソコンからLUNでパソコン(プリンタ用サーバー)へ情報を送り
そこにプリンタが接続されている状態です.汎用になるのでしょうか?

MS-DOSプロンプトで

pass>type ファイル名 > prn  と入力しましたが
ファイルを作れませんでした.  と出力されました.

投稿日時 - 2001-01-29 15:59:45

ANo.2

ちょっと追加

0 main関数の引数からコマンドライン文字列を取得

やさしすぎるかな?

投稿日時 - 2001-01-29 14:20:23

ANo.1

1ファイルをオープン
2プリンタポートをオープン
3ファイルを1行読込
4プリンタに1行書込み
5ファイルのEOFまで3~4繰り返し
6プリンタポートクローズ
7ファイルクローズ

必要に応じて、5・6の間で改ページ(排紙コマンド)をプリンタポートに出力

投稿日時 - 2001-01-29 13:38:11

補足

上記の1,7は分かったのですが2から6をどのように行えばいいのか
分かりませんでした.

出力ストリームをプリンタへするということでしょうか?

2の「プリンタポートをオープン」とはC言語の域内で出来ることでしょうか?
C++/VC++はまだ勉強しておりませんので分かりません.

MSDNライブラリで関数がいろいろありましたがよく分かりませんでした.
何か関数でこの関数を指しているぞ!!というのがありましたら教えて頂
きたいです.Cの域を越えていることでもかまいません.

勉強不足で申し訳ございません.どうぞ宜しくお願い致します.

投稿日時 - 2001-01-29 14:20:06