[wr2.0]ネットワークプリンター・トレイ選択

HOME › フォーラム › 旧サポート掲示板 › [wr2.0]ネットワークプリンター・トレイ選択

  • このトピックは空です。
10件の投稿を表示中 - 1 - 10件目 (全10件中)
  • 投稿者
    投稿
  • #1932
    hcc初心者
    ゲスト

    VB6.0でネットワークプリンターの設定をソース上で変更する方法をご教示いただけないでしょうか?

    設定条件は第一トレイと第二トレイにA4がセットされたネットワークプリンター(\\tsu01\IBM 5589-L36)の第二トレイから指定枚数を印刷するというものです。

    ‘–Declare文–
    Declare Function wrSetReportPrinter Lib “WRENGN32.DLL” (ByVal hReport As Long, ByVal lpDeviceName As String, lpDevMode As DEVMODE) As Long

    Dim lngRet As Long
    Dim strDevName As String
    Dim bytDev() As Byte
    Dim lpDevMode As DEVMODE

    Q.1 strDevNameは、\\サーバー\プリンター名 (\\tsu01\IBM 5589-L36)と言った具合にセットして良いのでしょうか?

    サイズを取得
    lngRet = wrGetReportPrinter(hReport, strDevName, lpDevMode, WAP_GPINFOSIZE)

    ‘バッファを確保
    ReDim bytDev(lngSize(0)) As Byte

    ‘レポートプリンタ情報を取得
    lngRet = wrGetReportPrinter(hReport, strDevName, lpDevMode, WAP_GPDEVICEINFO)

    ‘トレイ設定・コピー枚数
    lpDevMode.dmPaperSize = 277
    lpDevMode.dmCopies = 2

    Q.2 トレイ設定・コピー枚数の指定はこのような感じでいいのでしょうか?

    ‘レポートプリンタ情報を設定
    lngRet = wrSetReportPrinter(hReport, strDevName, lpDevMode)

    以上こんな感じで組んでみたのですが、設定変更がされません初心者の為、本当にわかりません。

    #1933
    松嶋@ソフトウィング
    ゲスト

    お世話になります。
    お返事が遅れ、申し訳ありません。

    ご質問の内容についてですが、処理手順には問題ない様で
    す。給紙方法を設定する場合ですが、dmPaperSizeではなく
    dmDefaultSourceを使用しますので、dmDefaultSourceへプリ
    ンターがサポートする給紙先コードを設定して下さい。

    ※開発ツールなどで給紙方法が定義されていますが、必ずし
     も定義されている給紙方法が全てサポートされているとは
     限りませんので注意して下さい。

    以上です。宜しくお願い致します。

    #1934
    hcc初心者
    ゲスト

    お世話になっております

    ご回答いただいたように組んでみたところ
    dmDefaultSourceに給紙先コードをしていしているにも関わらず、指定したトレイから印刷が行われません。
    コピー枚数などは、指定したものに変わっておりますが
    トレイ指定がうまくいきません。

    >※開発ツールなどで給紙方法が定義されていますが、必ずし
    > も定義されている給紙方法が全てサポートされているとは
    > 限りませんので注意して下さい。

    Q.1
    との回答がありましたが、給紙方法がサポートされているか否かを確認する方法はございますか?

    Q.2
    給紙方法がサポートされていても、指定したトレイから印刷が行われないケースもありますか?

    #1935
    松嶋@ソフトウィング
    ゲスト

    お世話になります。

    説明が不足しており、ご迷惑をおかけ致しました。
    dmDefaultSourceを指定した場合は、dmFieldsへDM_DEFAULTSOURCE
    値を加算(ビットをセット)する必要があります。

    >Q.1
    >との回答がありましたが、給紙方法がサポートされているか>否かを確認する方法はございますか?
    WingReport v2.0では確認する機能を提供しておりませんので
    お客様にて確認して頂く事になります。
    ※WingReport v3.0では同機能を提供しております。

    >Q.2
    >給紙方法がサポートされていても、指定したトレイから印刷>が行われないケースもありますか?
    プリンタードライバーがプログラム中からの給紙方法の変更
    をサポートしていない場合が考えられます。

    ※DM_DEFAULTSOURCEは0x200と定義されています。

    以上です。宜しくお願い致します。

    #1936
    hcc初心者
    ゲスト

    度々申し訳ございません

    >dmDefaultSourceを指定した場合は、dmFieldsへ>DM_DEFAULTSOURCE
    >値を加算(ビットをセット)する必要があります。

    とのことですが、
    lpDevMode.dmDefaultSource = 277
    とした場合
    lpDevMode.dmFields + 277ということでしょうか??

    大変恐縮ですが
    DM_DEFAULTSOURCEの値をdmFieldsに加算する
    サンプルコードを記載していただけないでしょうか?

    #1937
    松嶋@ソフトウィング
    ゲスト

    お世話になります。

    説明不足で申し訳ありませんでした。
    DM_DEFAULTSOURCEは16進数で200と定義(SDK等に定義)され
    ておりますので、10進数で512をdmFieldsに加算すれば問題
    ありません。
    dmFieldsはDEVMODE構造体の有効になっているメンバーを
    (有効な値が設定されている)ビットで指定します。
    ただし、ドライバーが指定したメンバーをサポートしていな
    い場合は設定値は無視されます。

    ※1バイト=8ビット
    ※LONG=32ビット

    以上です。宜しくお願い致します。

    #1938
    hcc初心者
    ゲスト

    お世話になっております。
    WR2.0のプリンタ・トレイ選択がどうしてもうまくいきません
    プリンタドライバが原因かともおもいましたが、
    DELPHIで組んだプログラムからは
    トレイ選択が可能となっており、行き詰まっております。
    そこで幾つか確認したい点がございます。

    Q.1
    プロジェクトに加えることになっている定義ファイル\VB\Ssp1\WINGRPT.TXTの最終更新日は2001/12/12となっており、

    Declare Function wrGetReportPrinter Lib “WRENGN32.DLL” (ByVal hReport As Long, ByVal lpDeviceName As String, lpDevMode As Any, ByVal wOperation As Long) As Long

    Declare Function wrSetReportPrinter Lib “WRENGN32.DLL” (ByVal hReport As Long, ByVal lpDeviceName As String, lpDevMode As DEVMODE) As Long

    となっておりますが、印刷ビンの指定に関するサンプルコード
    http://www.swg.co.jp/cgi-bin/wb/read.cgi?file=009101
    では、wrSetReportPrinterのlpDevModeはAnyと定義されています。
    どちらが正しいのでしょうか?wrGetReportPrinterのlpDevModeに関してもAnyで良いのでしょうか?

    Q.2
    wrSetReportPrinterとwrGetReportPrinterを
    使用するにあたって、
    WRENGN32.DLLのバージョンは2.6.0.27で良いのでしょうか?

    #1939
    松嶋@ソフトウィング
    ゲスト

    お世話になっております。

    大変申し訳ございませんでした。ご指摘の通りDEVMODE情報は
    可変長の情報であるため、VBの構造体を使用する事は難しい
    ため、BYTE型の配列で処理を行います。BYTE型の配列を処理
    するため、wrSetReportPrinterの定義を “As DEVMODE”から
    “As Any”へ変更して頂きます。また、処理方法は参考にして
    頂いたサポート情報の要領で処理を行います。

    ○参考
     dmDefaultSourceは56,57バイト目を使用しますので、設定
     する値が0~255の範囲であれば、56バイト目に設定し
     て下さい。また255を超える値の場合は設定する値を16
     進数に変換して下位1バイトを56バイト目に設定し、上位
     1バイトを57バイト目に設定します。

    以上です。宜しくお願い致します。

    #1940
    hcc初心者
    ゲスト

    >dmDefaultSourceは56,57バイト目を使用しますので、
    >設定する値が0~255の範囲であれば、
    >56バイト目に設定して下さい。
    >また255を超える値の場合は
    >設定する値を16進数に変換して
    >下位1バイトを56バイト目に設定し、
    >上位1バイトを57バイト目に設定します。

    とのことですが、
    設定値が287であったと仮定すると
    16進数に変換→11Fになると思いますが
    この場合、
    上位1バイトとは「1」で良いのでしょうか?
    下位1バイトとは「F」でしょうか?
    Fではセット出来ないと思われますがどのようにセットするのでしょうか?

    bytDev(56)=CByte(?1)
    bytDev(57)=CByte(?2)

    ?1回答__
    ?2回答__
    ——————————————————-

    トレイ設定:287とは別に
    bytDev(56)=CByte(vbPRBNUpper) ‘上部トレイ
    も試してみたのですが、トレイ選択が変更されませんでした。

    “As Any”とした場合も、dmFieldsにあたる位置にビットを立てる必要はあるのでしょうか?
    その場合、bytDev(XX)は何バイト目になるのでしょうか?

    回答__
    ——————————————————–
    宜しくご教示下さい。

    #1941
    松嶋@ソフトウィング
    ゲスト

    お世話になります。

    データの設定方法は以下の様になります。
     bytDev(56)=CByte(&h1)
     bytDev(57)=CByte(&h1F)

    >トレイ設定:287とは別に
    >bytDev(56)=CByte(vbPRBNUpper) ‘上部トレイ
    >も試してみたのですが、トレイ選択が変更されませんでし
    >た。
    1バイトで表現できる値の場合は以下のように設定します。
     bytDev(56)=CByte(vbPRBNUpper)
     bytDev(57)=0
    ※vbPRBNUpperは1と定義されています。

    >”As Any”とした場合も、dmFieldsにあたる位置にビットを立>てる必要はあるのでしょうか?
    >その場合、bytDev(XX)は何バイト目になるのでしょうか?
    設定する事をお勧め致します。
    dmFieldは40バイト目から4バイトとなります。ただし、セッ
    トするビットは0x200ですので、41バイト目を以下の様に処理
    します。
    bytDev(41)=bytDev(41) and 2

    給紙方法はドライバー(プリンター)毎に異なる場合があり
    ます。また、給紙方法を表すコードも異なりますで、事前に
    設定する給紙コードをサポートしているか、確認してから使
    用する事をお勧め致します。

    以上です。宜しくお願い致します。

10件の投稿を表示中 - 1 - 10件目 (全10件中)
  • フォーラム「旧サポート掲示板」には新規投稿および返信を追加できません。