過去の桐井戸端BBS (桐ver.9)
28019 Windowsで通常使うプリンタに設定されているプリンタ名を調べたい 尾形 2004/10/23-09:15
よろしくお願いします。桐9です

Windowsで「通常使うプリンタ」に設定されているプリンタ名を取得したいのですがいい方法ないでしょうか
コマンドにありそうで無いようなのですが
28021 Re:Windowsで通常使うプリンタに設定されているプリンタを調べる 佐田 守弘 2004/10/23-09:54
記事番号28019へのコメント
尾形さん
「#桐プリンタ名」関数を使うと、桐が現在選択しているプリンタ名を取得できます。
デフォルトではWindowsで通常使うプリンタになっていますが、
桐の方で選択しているプリンタを変更できますから、両者が一致する保証はありません。

質問の題意とちがいますが、桐で取得したいのは、Windowsで通常使うプリンタではなくて、
桐が選択しているプリンタの方ではないのでしょうか。

佐田守弘(KS-00119)
28022 Re:Windowsで通常使うプリンタに設定されているプリンタを調べる hidetake 2004/10/23-10:29
記事番号28019へのコメント
>Windowsで「通常使うプリンタ」に設定されている
>プリンタ名を取得したいのですがいい方法ないでしょうか
>コマンドにありそうで無いようなのですが

桐だけではできなかったのでは?

VBS (&WMI) を使えば簡単にできますけど、次のようなスクリプトで
取得してテキストファイルに落とすことは一応は可能です。

こちらにもアップしました

get_default_printer.vbs
-----------------------------------------------------------------
Dim PrtSet, Prt, Locator, Service, MesStr, Fs, Txt
File = "defaut_printer.txt"
Set Locator = CreateObject("WbemScripting.SWbemLocator")
Set Service = Locator.ConnectServer
Set PrtSet = Service.ExecQuery("Select * From Win32_Printer")
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
If Fs.FileExists(File) Then Fs.DeleteFile File, True
Set Txt = Fs.OpenTextFile(File, 2, True)

For Each Prt In PrtSet
'通常使うプリンターを取得
If Prt.Default Then
Txt.WriteLine Prt.Caption
MsgBox "通常使うプリンタ: " & Prt.Caption
End If
Next

Txt.Close
Set Txt = Nothing
Set Fs = Nothing
Set Prt = Nothing
Set PrtSet = Nothing
Set Service = Nothing
Set Locator = Nothing
-----------------------------------------------------------------

28023 Re:Windowsで通常使うプリンタに設定されているプリンタを調べる hidetake 2004/10/23-10:46
記事番号28022へのコメント
>>Windowsで「通常使うプリンタ」に設定されている
>>プリンタ名を取得したいのですがいい方法ないでしょうか
>>コマンドにありそうで無いようなのですが
>桐だけではできなかったのでは?

どうしても「桐」だけで実現したかったら、現在のプリンタを「#桐プリンタ名」ででも使って取得し、
それをテキストファイルにでも落とすような(終わったら自動終了する!)一括処理を作成し、
それを別桐(別インスタンスの桐)を立ち上げて実行する!とか?
28024 Re:Windowsで通常使うプリンタに設定されているプリンタを調べる hidetake 2004/10/23-11:12
記事番号28022へのコメント
>get_default_printer.vbs

ついでに書いておくと、Windows XP では、この辺のツールとして、
デフォルトで prnmngr.vbs と言うスクリプトを備えているので、
cscript prnmngr.vbs -g > defaut_printer.txtと実行することにより同じ事は可能ですね!

コマンドプロンプトから
cscript prnmngr.vbs
と実行することにより、使用方法の説明も出てきます。
28025 Re:Windowsで通常使うプリンタに設定されているプリンタを調べる 尾形 2004/10/23-15:05
記事番号28021へのコメント
どうも、ありがとうございます

「佐川送状」というプリンタを登録していまして
送状印刷フォームで「プリンタ」コマンドで変更しているので
同時に開いている他のフォームまで影響するので
そっちのフォームに「通常使うプリンタ」にするコマンドを
入れようと思った次第です

> どうしても「桐」だけで実現したかったら、現在のプリンタを
> 「#桐プリンタ名」ででも使って取得し、それをテキストファイル
> にでも落とすような(終わったら自動終了する!)一括処理を作成し、
> それを別桐(別インスタンスの桐)を立ち上げて実行する!とか?

どうしても、「桐」だけで実現したかったので (^^;;
桐起動に共通変数に確保する事にしました
どうもありがとうございました

28026 【解説】桐のプリンタについて 佐田 守弘 2004/10/23-22:03
記事番号28025へのコメント
尾形さん
書かれている内容を読むと、何か無理やりに難しくしている様に見えます。
多分ご存知の事であろうかとは思いますが、念のために桐のプリンタの仕組みについて解説させて頂きます。

●桐のプリンタの設定について
桐のメニューの[ファイル]→[プリンタの変更]で(あるいはコマンドでも)
プリンタの変更ができます。このメニューでは、Windowsに登録されている
プリンタ名の一覧から、「桐で使う現在のプリンタ」が選択できます。

前回のコメントで、
 >デフォルトではWindowsで通常使うプリンタになっていますが、
と書きましたが、桐を起動した直後の状態では、桐の現在のプリンタに
Windowsで通常使うプリンタが選ばれています。

桐の起動後にメニューあるいはコマンドでプリンタを変更すると、
その後は選び直したプリンタが桐の現在のプリンタになり、
一覧表印刷やレポート印刷で印刷を行う際に、使用するプリンタが「(桐の現在プリンタ)」になっている場合には、
このプリンタが選ばれます。

桐のメニューなどで桐のプリンタを変更した場合、その設定は終了後も保存されないかと思って調べてみたのですが、
変更の保存はされません。
つまり、桐を起動し直すと、桐のプリンタはWindowsで通常使うプリンタに戻ります。

●一覧表印刷とレポートで個別に設定するプリンタ
一覧表印刷でもレポート印刷でも、それぞれに特定のプリンタの設定が行えます。
この設定を行うと、桐のプリンタ設定にかかわらず、常に個別に設定してあるプリンタが使われます。

●質問の題意に戻って
 >「佐川送状」というプリンタを登録していまして
 >送状印刷フォームで「プリンタ」コマンドで変更しているので
の意味が佐川送状を印刷するレポートだけが「佐川送状」というプリンタを使うという意味であれば、
桐のプリンタをこのプリンタに変更する必要はなく、
単にこのレポートだけに「佐川送状」のプリンタを設定しておくのが良いかと思います。
これであれば他の印刷は影響されません。

また上述の様に桐の起動直後は桐のプリンタを調べることによって、
Windowsで通常使うプリンタが調べられます。
 >桐起動に共通変数に確保する事にしました
とは、そういう意味かと理解しました。

なお、もし桐だけ他のアプリと違う別のプリンタに常に変更したいという事であれば、
起動時に一括処理を実行して、桐が使用するプリンタを変更させる方法もあり得るかと思います。

佐田守弘(KS-00119)
28029 Re:【解説】桐のプリンタについて【の解説】 (^^; 尾形 2004/10/25-07:54
記事番号28026へのコメント
どうも、こんにちは

>「佐川送状」というプリンタを登録していまして
>送状印刷フォームで「プリンタ」コマンドで変更しているので
これは具体例の一つとしてあげましたが (^^;

●ケース1
あるパソコンは画像関係の処理が多いので
「通常使うプリンタ」はカラーインクジェットに設定しているとします
でも、桐のような事務系ソフトはモノクロレーザで印刷する事がほとんどです
毎回プリンタを意識しないといけないのは大変です

●ケース2
カラーで印刷するレポートがあるのですが
パソコンによってカラープリンタのプリンタ名ばらばらです。
レポートにプリンタを設定しておくだけでは管理できません


といったような具合で
(自分の)プログラム側でプリンタを管理しないと
不便なのです

#同じ用紙名でも、用紙IDが違うとエラーとなる
#のを早くなんとかして欲しい

28032 Re:【解説】桐のプリンタについて【の解説】 (^^; hidetake 2004/10/25-18:07
記事番号28029へのコメント
>といったような具合で
>(自分の)プログラム側でプリンタを管理しないと
>不便なのです

いろいろあったとしても、プログラムでプリンタを切り替えているのならば、切り替える前に現在の
プリンタを取得し印刷が終わったら元に戻しておく方が礼儀正しいというか、
混乱は少ないのでは無いですか?
その状態で「通常使うプリンタ」から異なる場面は
ユーザが任意に設定した(させた)状態でしょうから?

戻る