プロが教えるわが家の防犯対策術!

MS-DOSプロンプトの画面をプリンタに出力されるプログラムを
作ろうと思いました。

#include <iostream.h>
main(){
char ppp;
cout << "pの入力でプリントします";
cin >> ppp;
if (ppp=='p'){
cout << "pが入力された";
ここでプリンタ出力命令
}
}

プリンタ出力命令はどういう命令文を書ければいいのか
教えてください。

A 回答 (2件)

はっきり言って、ポインタの理解があやふやな今のA__さんには早いと思います。



bcc(もしかして、フリーbcc55コンパイラを使用なさっておられるのかな?)でやるということは、Win32APIを直接呼ぶプログラムを書く必要があります。

これは今のA__さんにはかなり難しいのではないでしょうか?
(書けたとしても、他人が書いたも同然で、
 まったく意味がわからないと思います。
 単に呼び出していると言うだけの世界です。)

今のA__さんの理解できる範囲内で、やるとすれば、
DOSプロンプトの仕組の一つである、
リダイレクト機能を利用するのが簡単かもしれません。


#include <iostream.h>
#include <stdlib.h>
#include <string>

void main(int, char *argv[]) {
/* 引数があるかないかによって、「モード」を分ける
* 仕組の説明:
* p が入力  → 〔自分〕〔ppp〕〔> PRN〕の形式で自分自身を呼び出す
* p が非入力 → そのまま終了
*/

// 引数がないと、要求モードに入る
if (!argv[1]) {
cout << "[p] の入力でプリントします。\n$>";

char ppp;
cin >> ppp;

if (ppp=='p') {
cout << "p が入力されました。\n";

// p が押されると、〔自分〕〔ppp〕〔> PRN〕の形式で自分自身を呼び出す
string s=string(argv[0])+" "+ppp+" > PRN\0";
system(s.c_str());
}

} else {
// 〔自分〕〔ppp〕〔> PRN〕の形式で自分自身を呼び出されるとここにくる。
// ここでのこのプログラムの役割は、印刷すべき文字を吐き出すだけ。
cout << argv[1];
}
}

ここでは、強引にひとつのプログラム(はっきり言って、こんなプログラムは構造的に推奨されません)としましたが、

(1)「入力の要求用 兼 入力されたデータをファイルに残しておくプログラム」
(2)「データファイルを読みこみ、表示するプログラム」

という2つのプログラムを作成し、(1)で p が入力されたときに
system("(2)の名前.exe >PRN")としてやるのが より良いプログラム設計といえると思います。
    • good
    • 0
この回答へのお礼

C++の初級の勉強のは、まずは文字列の処理とプリントアウトぐらいを
覚えよう と思っていたけど、プリンター出力命令は思ったより
難しいものだと知りました。
でも、プリンター出力は知っておきたいからなんとか理解しようと
がんばります。
初心者のための簡単なソースを教えてもらえたのがうれしかったです。
コンパイラはbcc5.5です。
ありがとうございます。

お礼日時:2001/03/21 00:37

DOSならSTDPRNに対応するストリームを開けばできますね。


"prn:"をストリームで開いて書きこめばプリンタに出力されます。

「DOS画面を」ということに固執するとVxDを書かないといけません。
“画面”の出力はドライバの範疇です。
    • good
    • 0
この回答へのお礼

言葉が難しくて分からなかったけど、プリンタ出力をする時の
キーワードになると思いました。
ありがとうございます。

お礼日時:2001/03/21 00:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!