■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#5768-0通常使うプリンタわからない人1999-12-16(木) 17:57
     #5770-0RE#5768:通常使うプリンタ魔界の仮面弁士1999-12-16(木) 19:04
     #5771-0RE#5770:通常使うプリンタわからない人1999-12-16(木) 20:09
     #5773-0RE#5771:通常使うプリンタ通りすがり1999-12-16(木) 21:28
     #5786-0RE#5773:通常使うプリンタ匿名57861999-12-17(金) 08:40
#5768-0
通常使うプリンタ
教えてください。
コモンダイアログを使って印刷をさせると、通常使うプリンタが変わってしまいます。
これはPrinterDefaultをtrueにしていたからというのはわかったのですが、
これをfalseにして印刷する方法がわかりません。

それか、VBのアプリを立ち上げたときに通常使うプリンタをみて、
アプリ終了後に元のプリンタに戻す方法でもいいですから教えてください。
#5770-0
RE#5768:通常使うプリンタ
> コモンダイアログを使って印刷をさせると、通常使うプリンタが変わってしまいます。
> これはPrinterDefaultをtrueにしていたからというのはわかったのですが、
> これをfalseにして印刷する方法がわかりません。
Flagsの設定をよく見てください。
hDCプロパティに、設定結果を返してくれる設定方法があるので、
あとはRichTextBoxのSelPrintメソッドで印刷すればOKです。

> それか、VBのアプリを立ち上げたときに通常使うプリンタをみて、
> アプリ終了後に元のプリンタに戻す方法でもいいですから教えてください。
VBには、そのような機能はありません。

どうしてもやりたいなら、APIを使うことになりますので、
   http://www.ガリバー.jp.io/
にある、[Tips Library]という所を参照してみてください。
#5771-0
RE#5770:通常使うプリンタ
> Flagsの設定をよく見てください。
> hDCプロパティに、設定結果を返してくれる設定方法があるので、

これは、cdlPDReturnDCの事だと思います。
CommonDialog1.Flags=cdlPDReturnDC
で良いのでしょうか?

> あとはRichTextBoxのSelPrintメソッドで印刷すればOKです。
CommonDialog1.SelPrint (Printer.hDC)
ではないようですね、良くわかりません。

下のようにしてみましたが、だめです。

Private Sub mnuPrint_Click()
    
    Dim BeginPage, EndPage, NumCopies, i

    CommonDialog1.CancelError = True
    On Error GoTo ErrHandler
    PrinterDefault = False
    
    CommonDialog1.Flags = cdlOFNHideReadOnly
    CommonDialog1.Flags = cdlPDReturnDC
    CommonDialog1.ShowPrinter
    CommonDialog1.SelPrint (Printer.hDC)
    
    BeginPage = CommonDialog1.FromPage
    EndPage = CommonDialog1.ToPage
    NumCopies = CommonDialog1.Copies
  
    For i = 1 To NumCopies
        ' ここに、印刷データをプリンタに送信するためのコードを記述します。
    Next i
    Exit Sub

ErrHandler:
    Exit Sub

End Sub

お手数ですが、教えてください。
#5773-0
RE#5771:通常使うプリンタ
>> Flagsの設定をよく見てください。
>> hDCプロパティに、設定結果を返してくれる設定方法があるので、
> これは、cdlPDReturnDCの事だと思います。
> CommonDialog1.Flags=cdlPDReturnDC
> で良いのでしょうか?
正解です。(^^)ノ


>> あとはRichTextBoxのSelPrintメソッドで印刷すればOKです。
> CommonDialog1.SelPrint (Printer.hDC)
> ではないようですね、良くわかりません。

まず一つ。
魔界の仮面弁士さんは、『「RichTextBox」のSelPrintメソッド』とは書きましたが、
『「CommonDialog」のSelPrintメソッド』とは書いていませんよね。

次に、ヘルプのcdlPDReturnDCの解説を読むと、
》 ダイアログ ボックスで選択されたプリンタのデバイス コンテキストを取得するように設定します。
》 デバイス コンテキストは、ダイアログ ボックスの hDC プロパティに格納されます。
とあります。
つまり、設定されたデバイスコンテキストハンドルは、
『「CommonDialog」コントロールのhDCプロパティ』に格納されるのであって、
『「Printer」オブジェクトのhDCプロパティ』に格納されるのではないのです。

で、具体的にどう書けばよいかは、上記を読んだ上で、自分で考えてみてね。



それにしても…PrinterDefaultを設定しなかった場合、Printerオブジェクトに
その設定を反映させる方法はないんじゃないのかなぁ?
cdlPDReturnICを使って得た設定を、逐次Printerオブジェクトに渡せば良いかも知れないけど、
それだとプリンタドライバ固有の機能までは、反映できないだろうし。
# 元質問の第2案を検討したほうが良いのかも。
#5786-0
RE#5773:通常使うプリンタ
> > CommonDialog1.Flags=cdlPDReturnDC
> > で良いのでしょうか?
> 正解です。(^^)ノ
ヤッター!

> 魔界の仮面弁士さんは、『「RichTextBox」のSelPrintメソッド』とは書きましたが、
> 『「CommonDialog」のSelPrintメソッド』とは書いていませんよね。
>
> 『「CommonDialog」コントロールのhDCプロパティ』に格納されるのであって、
> 『「Printer」オブジェクトのhDCプロパティ』に格納されるのではないのです。
> 
> で、具体的にどう書けばよいかは、上記を読んだ上で、自分で考えてみてね。
ということは
   PrinterDefault = False
   CommonDialog1.Flags = cdlPDReturnDC
   CommonDialog1.ShowPrinter
   RichTextbox1.SelPrint (CommonDialog1.hDC)
でしょう?
でもこれも通常使うプリンターが変わってしまいます。
 
> # 元質問の第2案を検討したほうが良いのかも。
そんな感じですね、みなさま、いろいろありがとうございました。
また出直します。
このページと関連する記事:
#43145-0コモンダイアログのについて2001-05-18(金) 09:38
#6514-0プリンタの部数設定1999-10-04(月) 10:15
#1101-0プリンタドライバ2001-11-07(水) 10:40
#1101-2プリンタドライバ2001-11-07(水) 01:40
#10569-0印刷方向の切り替え1999-11-29(月) 02:28
#15248-0通常使うプリンタを元に戻すには?2001-03-23(金) 08:59
#16577-0印刷について2000-02-21(月) 22:56
#11809-0印刷ダイアログの設定をプリンタに反映したい。1999-12-16(木) 10:46
#29567-0「ファイルを開く」ダイアログボックスの複数指定のファイル名の検索2000-09-08(金) 01:57
#9701-0通常使うプリンター以外で印刷したいのですが2000-07-14(金) 15:04
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)