一時的に印刷が行われないようにするには?

解決


せとやま  2005-04-22 02:11:28  No: 89510

<実現したい内容>
マイクロソフトのパワーポイントで印刷の操作を通常通り行い、印刷を実行する「OK」ボタンを押しても、実際には印刷が行われないようにしたい。

<状況>
パワーポイントを学習するソフトを開発中です。いま、印刷についての学習に取り組んでいます。学習者には、通常通りのパワーポイントの操作を行ってもらいますが、用紙が無駄になるので一時的に実際の印刷はしないようにしたいと思います。

<環境>
・Windows XP
・Visual Studio .net (Visual Basic)
・PowerPoint 2003

PrintDocumentクラスを使った印刷については、調べることができるのですが、他のアプリケーション(今回はPowerPoint)で行った印刷についての制御については、調べることができませんでした。
大変困っております、どなたかご教授ください。
宜しくお願いします。


.net初心者  2005-04-22 03:06:04  No: 89511

下記のURLを参考にして
http://www.microsoft.com/japan/technet/scriptcenter/scripts/printing/servers/default.mspx

アプリケーション起動でプリンタを一時停止
アプリケーション終了でプリンタの印刷ジョブを削除&プリンタを再開
というように作ってみてはどうでしょう。


せとやま  2005-04-22 03:49:45  No: 89512

.net初心者様、明快なご回答ありがとうございます。

早速、試してみました。
ローカルプリンタでは上手く動作するのですが、ネットワークプリンタでは、問題があります。

<ローカルプリンタ>
・「コントロールパネル」の「プリンタとFAX」で準備完了となっている。
・ご回答の方法で、このプリンタを一時停止
・「コントロールパネル」の「プリンタとFAX」が一時停止となる。

しかし
<ネットワークワークプリンタ>
・「コントロールパネル」の「プリンタとFAX」で準備完了となっている。
・ご回答の方法で、このプリンタを一時停止
・「コントロールパネル」の「プリンタとFAX」が準備完了のままで、印刷が実行されてしまいます。

尚、「コントロールパネル」の「プリンタとFAX」で右クリックで一時停止しようとしても、ネットワークプリンタの場合は一時停止されません。何か良い方法は無いでしょうか?

よろしくお願いします。


.net初心者  2005-04-22 04:02:02  No: 89513

そうですか?
こちらはWinXP SP2ですが、ネットワークプリンタも一時停止できますね。
権限不足とかでしょうか?
こちらの環境で現象が再現できないので何故かわかりませんです。


せとやま  2005-04-22 04:12:47  No: 89514

.net初心者様  ご回答ありがとうございます。

ネットワークプリンタの設定が問題なのかもしれません。
ネットワークプリンタを一時停止すると、他のPCも印刷できなくはならないでしょうか?今、停止したいのは、学習しているPCだけです。
そこで、次のような方法を考えてみました。

1  今回開発したソフトをインストールする際に、ローカルプリンタが登録されていない場合(ネットワークプリンタのみが登録されている場合)は、擬似的に、適当なローカルプリンタを追加する。
2  学習時は、このローカルプリンタを通常使用するプリンタに設定し、.net初心者様にご指導いただいた方法で印刷を一時停止する。

と言うものです。

そこで、ローカルプリンタを追加する方法を調べてみます。
何か、ご指導、アドバイスがありましたら宜しくお願いします。


せとやま  2005-04-22 04:48:27  No: 89515

プリンタをインストールする方法を調べました。

.net初心者様にはじめに紹介していただいた。TechNetに次のようなものがあり実行してみましたが上手くインストールされません。

「プリンタ ドライバのインストール」
http://www.microsoft.com/japan/technet/scriptcenter/scripts/printing/ports/prpovb04.mspx

<私が実行したコード>
Dim objWMIService = GetObject("winmgmts:")
Dim objDriver = objWMIService.Get("Win32_PrinterDriver")
objDriver.Name = "Apple LaserWriter 8500"
objDriver.SupportedPlatform = "Windows NT x86"
objDriver.Version = "3"
Dim errResult = objDriver.AddPrinterDriver(objDriver)
MsgBox(errResult)

エラーは出ませんが、メッセージボックスに0が表示され、
コントロールパネルを見てもプリンタが登録されていません。

今回は、ローカルプリンタであればなんでもいいので、
この"Apple LaserWriter 8500"でもインストールできればOKです。

ローカルプリンタ(機種は何でもOK)をインストールする方法をお教えください。


魔界の仮面弁士  2005-04-22 19:42:02  No: 89516

> Dim objDriver = objWMIService.Get("Win32_PrinterDriver")

このあたりが参考になるかもしれません。
http://madia.world.coocan.jp/vb/vb_bbs/200401_04010129.html


せとやま  2005-04-22 22:48:59  No: 89517

WMIへの参照を追加し、
「ローカルプリンタを追加するサンプルです。Win32_Printerクラスを使用します。」を試したところ、
とても上手くいきました。
このWMIというのは、とても便利そうですね。

おかげさまで、当初の目的を達成することができました。
.net初心者様、魔界の仮面弁士様ありがとうございます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加