トピック検索
333 件のトピックが該当しました。
- 複数ドメイン環境でのセッションプリンタ印刷 - G ( 2015/04/17 01:04:17 更新)
- クライアントプリンタ名が従来のプリンタ名にならない - かわ ( 2014/04/16 19:04:54 更新)
- Xenappで印刷ができないんです - Mabuya ( 2013/11/18 23:32:21 更新)
- XenApp上だと印刷が出来ない - おーじ ( 2013/11/18 23:28:37 更新)
- XenApp6.5 ネットワークプリンタで印刷出力する際に縮小される - shom ( 2013/10/11 15:38:35 更新)
- HDXポリシーのフィルタ機能について - Kazu ( 2013/10/02 18:04:31 更新)
- XenApp6.5 マッピングプリンタが時々消える - momo ( 2013/08/21 16:53:17 更新)
- アプリケーション内で印刷設定を変更すると別のアプリケーションにも反映されてしまう項目がある - sinta ( 2013/04/02 10:03:38 更新)
- Xen5.0で8台あるサーバーの3台でプリンタの初期設定が異なっている。 - yasuyan ( 2013/02/20 14:24:39 更新)
- Auto Created Client Printerの用紙名取得がされない - たけやん ( 2013/01/16 19:27:22 更新)
複数ドメイン環境でのセッションプリンタ印刷
業務毎にドメインの異なる4つの環境にそれぞれXenAppを構築することを検討しています。
その際、プリントサーバーをそのうち1つのドメインに所属させた場合、
他の3つのドメインのXenAppからも、そのプリントサーバーをインポートして、
セッションプリンタを作成することができますでしょうか?
ドメインに信頼関係を持たせる、グローバルドメインにする、など前提条件も合わせてがご教授ください。
補足:
シンクライアントのため、セッションプリンターの利用が必須の環境です。
その際、プリントサーバーをそのうち1つのドメインに所属させた場合、
他の3つのドメインのXenAppからも、そのプリントサーバーをインポートして、
セッションプリンタを作成することができますでしょうか?
ドメインに信頼関係を持たせる、グローバルドメインにする、など前提条件も合わせてがご教授ください。
補足:
シンクライアントのため、セッションプリンターの利用が必須の環境です。
私も詳しくはわかりませんが、どうも信頼関係は必須ではないようです。
XenAppでプリンタを設定して、OSレベルでプリンタへのアクセス権が付与されていれば使えると思います。
前提条件は下記URLを参照ください。
/////////////////////////////
注: XenAppサーバーファームとの信頼関係が設定されていないドメインのプリンタを使用するには、
[自動作成]規則でリダイレクトされるクライアントプリンタを設定します。
/////////////////////////////
ネットワークプリンタの自動作成
http://support.citrix.com/proddocs/topic/xenapp5fp2-w2k3/nl/ja/ps-provision-autocreate-network-v2.html?locale=ja
ユーザーに提供するネットワークプリンタを設定する
http://support.citrix.com/proddocs/topic/xenapp5fp2-w2k3/nl/ja/ps-printing-network-configuring.html?locale=ja
XenAppでプリンタを設定して、OSレベルでプリンタへのアクセス権が付与されていれば使えると思います。
前提条件は下記URLを参照ください。
/////////////////////////////
注: XenAppサーバーファームとの信頼関係が設定されていないドメインのプリンタを使用するには、
[自動作成]規則でリダイレクトされるクライアントプリンタを設定します。
/////////////////////////////
ネットワークプリンタの自動作成
http://support.citrix.com/proddocs/topic/xenapp5fp2-w2k3/nl/ja/ps-provision-autocreate-network-v2.html?locale=ja
ユーザーに提供するネットワークプリンタを設定する
http://support.citrix.com/proddocs/topic/xenapp5fp2-w2k3/nl/ja/ps-printing-network-configuring.html?locale=ja
クライアントプリンタ名が従来のプリンタ名にならない
Citrix Studioでクライアント プリンター名ポリシーを「従来のプリンター名」に変更して接続しても、
セッションプリンタの名称が標準のプリンター名になってしまいます。
環境は以下の構成になります。
AD:WinSv2012Std
AP:WinSv2012Std(XenDesktop 7.1)
CL:WinVista(XenApp 11.0.0.5357:Neighborhood)
他のポリシーの設定変更も適用されないのかと試してみたところ問題なく適用されました。
(クライアント プリンターを自動作成するポリシーを「デフォルトのクライアント プリンターのみを自動作成する」で確認しました)
GPOを含め、設定されているポリシーを確認しましたが、
特に同ポリシーの妨げになっていると思えるポリシーは見当たりませんでした。
アプリケーション開発に利用しているツールの都合上、
従来のプリンター名にする必要があり、大変困っています。
わずかな情報でも教えてください。宜しくお願いします。
セッションプリンタの名称が標準のプリンター名になってしまいます。
環境は以下の構成になります。
AD:WinSv2012Std
AP:WinSv2012Std(XenDesktop 7.1)
CL:WinVista(XenApp 11.0.0.5357:Neighborhood)
他のポリシーの設定変更も適用されないのかと試してみたところ問題なく適用されました。
(クライアント プリンターを自動作成するポリシーを「デフォルトのクライアント プリンターのみを自動作成する」で確認しました)
GPOを含め、設定されているポリシーを確認しましたが、
特に同ポリシーの妨げになっていると思えるポリシーは見当たりませんでした。
アプリケーション開発に利用しているツールの都合上、
従来のプリンター名にする必要があり、大変困っています。
わずかな情報でも教えてください。宜しくお願いします。
とりあえずXenDesktopと互換性の無い古代の遺産のようなバージョンを使用せずに
13.0や4.0などの最新のバージョンでの動作確認が必要だと思います。
あと、Windows7や8でも発生するかなど。
13.0や4.0などの最新のバージョンでの動作確認が必要だと思います。
あと、Windows7や8でも発生するかなど。
Reppaさん
返信ありがとうございます。
新しいバージョンが使えればいいのですが、過去資産の保守(Presentation Server 4.5と4.0)もしています。
Receiverを利用するとそちらへの接続に問題が発生した経緯もあったので、
検証用にPCが用意できるかは確認していますがすぐには動作確認できそうにありません。。。
また、他の人のPC(Neighborhood+Win7 64bit)でも同じ現象を確認しています。
他のバージョンが異なるサーバー(Win2008R2(XenApp6.0))もあるので
ポリシー設定を試したところ、両方のPCで問題なくポリシーが適用されました。。。
返信ありがとうございます。
新しいバージョンが使えればいいのですが、過去資産の保守(Presentation Server 4.5と4.0)もしています。
Receiverを利用するとそちらへの接続に問題が発生した経緯もあったので、
検証用にPCが用意できるかは確認していますがすぐには動作確認できそうにありません。。。
また、他の人のPC(Neighborhood+Win7 64bit)でも同じ現象を確認しています。
他のバージョンが異なるサーバー(Win2008R2(XenApp6.0))もあるので
ポリシー設定を試したところ、両方のPCで問題なくポリシーが適用されました。。。
http://support.citrix.com/proddocs/topic/xenapp-xendesktop-75/nl/ja/cds-overview-deprecated-features.html?locale=ja
「このリリースに含まれていない機能」に以下の記述があります。
なので、「従来のプリンタ名にはならない」ようです。
この書き方だと復活するのかどうかも不明ですね。
---------------------------
以下の機能は、このリリースでは提供されません(廃止された機能など)。
(中略)
従来の印刷機能 — 以下の印刷機能は、このリリースでサポートされなくなりました。
従来のライアントプリンター名を使用する機能を含む、Dosクライアントと16ビットプリンターに対する後方互換性。
「このリリースに含まれていない機能」に以下の記述があります。
なので、「従来のプリンタ名にはならない」ようです。
この書き方だと復活するのかどうかも不明ですね。
---------------------------
以下の機能は、このリリースでは提供されません(廃止された機能など)。
(中略)
従来の印刷機能 — 以下の印刷機能は、このリリースでサポートされなくなりました。
従来のライアントプリンター名を使用する機能を含む、Dosクライアントと16ビットプリンターに対する後方互換性。
2015/5/4付で下記パッチがリリースされています。
http://support.citrix.com/article/CTX142346
このリリースに含まれる新しい修正
1.この修正により、これまでバージョン7.xでは利用できなかったポリシーの[従来のプリンター名]が有効になります。
[ICATS760WX64012より][#LC1002]
丁度社内のシステムをXenApp5.0FP3 -> XenDesktop7.6 への移行を検討しており、
このリリースにより大幅なプログラム改修から逃れられました。
http://support.citrix.com/article/CTX142346
このリリースに含まれる新しい修正
1.この修正により、これまでバージョン7.xでは利用できなかったポリシーの[従来のプリンター名]が有効になります。
[ICATS760WX64012より][#LC1002]
丁度社内のシステムをXenApp5.0FP3 -> XenDesktop7.6 への移行を検討しており、
このリリースにより大幅なプログラム改修から逃れられました。
Xenappで印刷ができないんです
はじめまして
XenApp初心者で、サーバー構築を実施している者です。
Windows2008SVにXenappサーバー、Win7にレシーバーを入れて運用しています。
プリンターはNEC Multi Writer5500にIPを付与してネットワークで利用しています。
Win7のローカル画面からは印刷が可能。
Win7からWindows2008SVにセッション接続(RDT)しても印刷は出るのですが、Xenappのアプリケーションから印刷をかけても印刷ができません。
googleで検索してみると、印刷ジョブの経路や設定ポリシーなど色々書かれてはいますが・・よくわかりません。。。
という状況です。
かなり悩んで設定をしてみても上手く行きません。
先輩方のお知恵をお貸し下さいm(__)m。。。
よろしくおねがいします。
XenApp初心者で、サーバー構築を実施している者です。
Windows2008SVにXenappサーバー、Win7にレシーバーを入れて運用しています。
プリンターはNEC Multi Writer5500にIPを付与してネットワークで利用しています。
Win7のローカル画面からは印刷が可能。
Win7からWindows2008SVにセッション接続(RDT)しても印刷は出るのですが、Xenappのアプリケーションから印刷をかけても印刷ができません。
googleで検索してみると、印刷ジョブの経路や設定ポリシーなど色々書かれてはいますが・・よくわかりません。。。
という状況です。
かなり悩んで設定をしてみても上手く行きません。
先輩方のお知恵をお貸し下さいm(__)m。。。
よろしくおねがいします。
Mabuyaさん
こんにちは。
XenAppからの印字では、どのプリンタを利用されていますか。
(物理的に意図されているプリンタではなくOSから認識されているプリンタです)
XenAppにより作られたプリンタでしょうか。それとも、別途作成されたプリンタでしょうか。
また、印刷ができない の状況についても、もう少し詳しく書かれた方が意見をいただけるのではないかと思います。
・白紙が出る、印字エラーのメッセージが出る、うんともすんとも言わない など?
ではでは。
こんにちは。
XenAppからの印字では、どのプリンタを利用されていますか。
(物理的に意図されているプリンタではなくOSから認識されているプリンタです)
XenAppにより作られたプリンタでしょうか。それとも、別途作成されたプリンタでしょうか。
また、印刷ができない の状況についても、もう少し詳しく書かれた方が意見をいただけるのではないかと思います。
・白紙が出る、印字エラーのメッセージが出る、うんともすんとも言わない など?
ではでは。
chigeさま
返答いただきましてありがとうございます
プリンターはうんともすんともいいません
XenAppで作成したプリンターではなく、ネットワーク上に存在する任意のプリンターです。
IP体系は合っていて、PINGで疎通もとれます。
よろしくご回答くださいませ
返答いただきましてありがとうございます
プリンターはうんともすんともいいません
XenAppで作成したプリンターではなく、ネットワーク上に存在する任意のプリンターです。
IP体系は合っていて、PINGで疎通もとれます。
よろしくご回答くださいませ
クライアント側に印刷できませんでしたみたいなメッセージが出ないということは
おそらくサーバー側にスプールが溜まってると思います。
とりあえずポリシーで[常にクライアントを介して間接的に送信する]を設定して
印刷経路を変えてみてください。
http://support.citrix.com/proddocs/topic/xenapp6-w2k8-admin/nl/ja/ps-overview-client-network-print-job-routing-v2.html?locale=ja
おそらくサーバー側にスプールが溜まってると思います。
とりあえずポリシーで[常にクライアントを介して間接的に送信する]を設定して
印刷経路を変えてみてください。
http://support.citrix.com/proddocs/topic/xenapp6-w2k8-admin/nl/ja/ps-overview-client-network-print-job-routing-v2.html?locale=ja
Reppaさま
ご回答いただきましてありがとうございます
URLを参考に設定してみます
ありがとうございました
ご回答いただきましてありがとうございます
URLを参考に設定してみます
ありがとうございました
XenApp上だと印刷が出来ない
ローカルでは印字可能、リモートデスクトップでサーバに接続、ネットワーク越しの印字可能、という状況なのですが、XenApp上では印字がされません。印字をしようとするとファイルの保存形式を聞かれ、印刷では無くファイルと認識されているのか、ローカル上のプリンタが見えていないのか。解決に向け、アドバイスをお願い致します。
XenApp6.5、receiver3.4、サーバOSは2008SeverR2でプリンタはレーザープリンタです。
XenApp6.5、receiver3.4、サーバOSは2008SeverR2でプリンタはレーザープリンタです。
とりあえずネイティブドライバとユニバーサルドライバどっちを使用しているか確認してみてください。
また、使ってない方に変更して印刷してみてください。
また、使ってない方に変更して印刷してみてください。
まず使ってるプリンタ確認。
ローカルのときはなにを選択してる?
リモートのときはなにを選択してる?
そしてxenappんときは?
ポートがFILEになってそうですね。
ローカルのときはなにを選択してる?
リモートのときはなにを選択してる?
そしてxenappんときは?
ポートがFILEになってそうですね。
XenApp6.5 ネットワークプリンタで印刷出力する際に縮小される
お世話になっております。
XenApp6.5で起動したExcelからクライアント側のネットワークプリンタへ
印刷出力したところ、一回り縮小されて印刷されてしまいます。
RDPでサーバに直接接続し、クライアントのプリンタで印刷した際には
問題なく印刷ができました。
解消方法をご存知の方、ご教示いただけないでしょうか。
環境:
Windows Server 2008 R2 SP1 (workgroup)
XenApp 6.0 Fundamentals (XA650W2K8R2X64R01 適用済)
XenApp6.5で起動したExcelからクライアント側のネットワークプリンタへ
印刷出力したところ、一回り縮小されて印刷されてしまいます。
RDPでサーバに直接接続し、クライアントのプリンタで印刷した際には
問題なく印刷ができました。
解消方法をご存知の方、ご教示いただけないでしょうか。
環境:
Windows Server 2008 R2 SP1 (workgroup)
XenApp 6.0 Fundamentals (XA650W2K8R2X64R01 適用済)
>XenApp6.5で起動したExcelからクライアント側のネットワークプリンタへ
>XenApp 6.0 Fundamentals (XA650W2K8R2X64R01 適用済)
今回の環境ってXenApp6.5ですよね。
XenApp 6.0 Fundamentalsというのは無視していいですか?
>XenApp 6.0 Fundamentals (XA650W2K8R2X64R01 適用済)
今回の環境ってXenApp6.5ですよね。
XenApp 6.0 Fundamentalsというのは無視していいですか?
>今回の環境ってXenApp6.5ですよね。
>XenApp 6.0 Fundamentalsというのは無視していいですか?
すみません。そのとおりです。
無視してください。
>XenApp 6.0 Fundamentalsというのは無視していいですか?
すみません。そのとおりです。
無視してください。
まずはXenApp側のポリシーを確認してください。
また、変更して現象が変わるか確認してください。
・使用しているプリンタドライバ(ユニバーサル or ネイティブ)
・プリンタ設定の保存に関するポリシー
・印刷ジョブの経路
また、変更して現象が変わるか確認してください。
・使用しているプリンタドライバ(ユニバーサル or ネイティブ)
・プリンタ設定の保存に関するポリシー
・印刷ジョブの経路
HDXポリシーのフィルタ機能について
社内でXenDesktop5の環境を使用しています。
以下の要件を実現する設定について検討しています。
・社内でオンラインのプリンタからの印刷を許可
・社外でオンラインのプリンタからの印刷を禁止(※社外での印刷を禁止するため)
社外からはVPNサービス経由で内部IPアドレスを取得し、VDAにICA接続する形となります。
HDXポリシーの[プリンタリダイレクト]と、フィルタ[クライアントのIPアドレス]を利用して実現できないか考えていますが実現は可能でしょうか。
社内のアドレスとVPN経由でのアドレスについてはサブネットが異なるため、そちらを条件にポリシーの許可(または禁止)の設定は可能でしょうか。
何方かご存知でしたらご教授頂ける様お願い致します。
以下の要件を実現する設定について検討しています。
・社内でオンラインのプリンタからの印刷を許可
・社外でオンラインのプリンタからの印刷を禁止(※社外での印刷を禁止するため)
社外からはVPNサービス経由で内部IPアドレスを取得し、VDAにICA接続する形となります。
HDXポリシーの[プリンタリダイレクト]と、フィルタ[クライアントのIPアドレス]を利用して実現できないか考えていますが実現は可能でしょうか。
社内のアドレスとVPN経由でのアドレスについてはサブネットが異なるため、そちらを条件にポリシーの許可(または禁止)の設定は可能でしょうか。
何方かご存知でしたらご教授頂ける様お願い致します。
社外用と社内用のポリシーを別けて作成して適用先をIPにすれば出来ると思います。
http://support.citrix.com/proddocs/topic/xendesktop-rho/nl/ja/cds-policies-applying-rho.html?locale=ja
http://support.citrix.com/proddocs/topic/xendesktop-rho/nl/ja/cds-policies-applying-rho.html?locale=ja
Reppaさん
ご回答頂きありがとうございます。
リンク先を確認したところ、サブネットでのポリシーの許可/禁止を制御できそうですので一度試したいと思います。
ご回答頂きありがとうございます。
リンク先を確認したところ、サブネットでのポリシーの許可/禁止を制御できそうですので一度試したいと思います。
XenApp6.5 マッピングプリンタが時々消える
毎回ではないのですが、時折マッピングプリンタが出てこなくなる現象が発生します。
何か設定とかあったりしますでしょうか。
[サーバ]
W2K8R2
XenApp6.5
Hotfix Rollup Pack 2
[クライアント]
W7SP1 x86
web Interface接続
よろしくお願いします。
何か設定とかあったりしますでしょうか。
[サーバ]
W2K8R2
XenApp6.5
Hotfix Rollup Pack 2
[クライアント]
W7SP1 x86
web Interface接続
よろしくお願いします。
XenApp6.5サーバの印刷関連サービスが停止していると思います。
特定のドライバに問題がある場合が考えられます。
問題のあるドライバをアップデートするか、
もしくは、印刷関連のサービスを自動再起動するのが良いと思います。
特定のドライバに問題がある場合が考えられます。
問題のあるドライバをアップデートするか、
もしくは、印刷関連のサービスを自動再起動するのが良いと思います。
試してみようと思います。
ありがとうございます。
ありがとうございます。
アプリケーション内で印刷設定を変更すると別のアプリケーションにも反映されてしまう項目がある
お世話になっております。
XenApp6.5でcitrix universal printerを利用しています。
通常プリンタの設定はコントロールパネル内で設定した部分が保存され、
アプリケーション内で変更した分に関してはそのプログラム内でのみ有効な一時設定と認識しています。
今回XenApp6.5でデスクトップを公開し、
Excel内で印刷設定を変更した後Wordを起動したところ、
変更した印刷設定の一部のみがWord側でも反映されてしまいました。
具体的には集約印刷の設定は別アプリケーションでも反映され、
両面印刷の設定は変更したとしても別アプリケーションでは反映されませんでした。
複数のメーカーのプリンタでも試してみたところ同様の現象が発生しました。
【動作環境】
・XenApp6.5
・サーバーOS:Windows Server 2008R2
・プリンタに関するポリシー設定:帯域制限のみ
・ローカルOS:Windows XP
ローカル環境では発生しない現象なのですが、
Citrixの仕様なのでしょうか?
ご存じの方いらっしゃいましたらご教授頂ければと存じます。
XenApp6.5でcitrix universal printerを利用しています。
通常プリンタの設定はコントロールパネル内で設定した部分が保存され、
アプリケーション内で変更した分に関してはそのプログラム内でのみ有効な一時設定と認識しています。
今回XenApp6.5でデスクトップを公開し、
Excel内で印刷設定を変更した後Wordを起動したところ、
変更した印刷設定の一部のみがWord側でも反映されてしまいました。
具体的には集約印刷の設定は別アプリケーションでも反映され、
両面印刷の設定は変更したとしても別アプリケーションでは反映されませんでした。
複数のメーカーのプリンタでも試してみたところ同様の現象が発生しました。
【動作環境】
・XenApp6.5
・サーバーOS:Windows Server 2008R2
・プリンタに関するポリシー設定:帯域制限のみ
・ローカルOS:Windows XP
ローカル環境では発生しない現象なのですが、
Citrixの仕様なのでしょうか?
ご存じの方いらっしゃいましたらご教授頂ければと存じます。
はい。仕様です。
プリンタの設定は公開アプリケーション単位ではなく、
クライアント単位で反映されます。
また、設定が反映されるされないはプリンタドライバにより異なる場合があります。
http://support.citrix.com/article/CTX120706
プリンタの設定は公開アプリケーション単位ではなく、
クライアント単位で反映されます。
また、設定が反映されるされないはプリンタドライバにより異なる場合があります。
http://support.citrix.com/article/CTX120706
ご回答頂きありがとうございます。
やはり仕様ですか、利用者側に注意喚起ということで対応するしかないですね。
ありがとうございました。
やはり仕様ですか、利用者側に注意喚起ということで対応するしかないですね。
ありがとうございました。
Xen5.0で8台あるサーバーの3台でプリンタの初期設定が異なっている。
こんにちは
【環境】
webinterface 2台
XenApp5.0 8台
ActiveDirectory 2台
すべてWindowsServer2008SP1x64
で運用しております。
この環境で8台中3台に接続するとプリンタの初期設定がA4 から角型2号に
変わってしまうという現象が発生しています。
プリンタはネットワークプリンタでプリントサーバー上に存在します。
ポリシーでセッションプリンタの設定をしておりポリシー内のIPアドレスのユーザ
にプリンタが作成される設定になっています。
公開デスクトップでプリンタの設定を確認した場合、公開アプリケーション
(Notepadの印刷も含む)で印刷を行った場合の両方で同現象を確認してお
ります。
必ず再現している事象なので原因を追えそうですが、
Xenに接続した時に作成されるプリンタの初期設定の情報はどこにもって
いるのかわかりません。
再現されるサーバーが限定されるところを見ると
移動ユーザプロファイルではなくサーバーのどこか
(レジストリ)などで持っているようなのですが、
調査で行き詰まっています。
Xenに関しては詳しくないため情報が不足しているかも
知れませんがよろしくお願いいたします。
【環境】
webinterface 2台
XenApp5.0 8台
ActiveDirectory 2台
すべてWindowsServer2008SP1x64
で運用しております。
この環境で8台中3台に接続するとプリンタの初期設定がA4 から角型2号に
変わってしまうという現象が発生しています。
プリンタはネットワークプリンタでプリントサーバー上に存在します。
ポリシーでセッションプリンタの設定をしておりポリシー内のIPアドレスのユーザ
にプリンタが作成される設定になっています。
公開デスクトップでプリンタの設定を確認した場合、公開アプリケーション
(Notepadの印刷も含む)で印刷を行った場合の両方で同現象を確認してお
ります。
必ず再現している事象なので原因を追えそうですが、
Xenに接続した時に作成されるプリンタの初期設定の情報はどこにもって
いるのかわかりません。
再現されるサーバーが限定されるところを見ると
移動ユーザプロファイルではなくサーバーのどこか
(レジストリ)などで持っているようなのですが、
調査で行き詰まっています。
Xenに関しては詳しくないため情報が不足しているかも
知れませんがよろしくお願いいたします。
CPS4.5を使っているということで、こちらの情報も参考にしてみてはいかがでしょうか。
キャノンのサイトで対象となりそうなものがありました。
http://cweb.canon.jp/e-support/faq/answer/colorir/22798-1.html#LIPSenvironment
Auto Created Client Printerの用紙名取得がされない
環境:
Metaサーバー
OS:Windows2008 R2 64Bit
クライアント
OS:WindowsXP
CitrixReceiver 3.1.0.64091
Citrix XenApp6.0を使用して、.NET 2010 VB で作成した公開アプリケーションで印刷を
行っています。Auto Created Client Printerでユニバーサルプリンタドライバが
使用されているプリンタをパラメータに以下のコードを実行させたところ
「①用紙名の数を取得」は問題なくできる。
「②用紙名(1メンバー64文字で用紙名数分)を取得」はすべて空白が取得されます。
「③用紙サイズ番号の数を取得」は問題なくできる。
「④用紙サイズ番号(配列)を取得」はすべてゼロが取得されます。
一方、サーバにインストールした別のプリンタ(ベンダー製の非ネイティブドライバ使用)を
指定した場合は問題なくすべての情報が取得されます。
その上、この状態でも該当のAuto Created Client Printerを「デバイスとプリンター」で
右クリックし印刷設定を選択→表示される印刷設定画面で用紙/品質タブを選択→
詳細ボタン押下→用紙サイズドロップダウンをクリックすると、目的の用紙サイズが一覧表示
されるので取得する方法はあると思いますが、その方法がわかりません。
Auto Created Client Printerでの上記情報の取得方法をご存知の方いらっしゃいましたら
御教授お願い致します。
<以下はVBコードの問題部分です>
'用紙名のリストを取得
Declare Function DeviceCapabilitiesNames Lib "winspool.drv" Alias "DeviceCapabilitiesA" ( _
ByVal pDevice As String, _
ByVal pPort As String, _
ByVal fwCapability As Short, _
ByVal pOutput As String, _
ByVal pDevMode As IntPtr) As Integer
'用紙番号のリストを取得
Declare Function DeviceCapabilitiesPapers Lib "winspool.drv" Alias "DeviceCapabilitiesA" ( _
ByVal pDevice As String, _
ByVal pPort As String, _
ByVal fwCapability As Short, _
ByVal pOutput() As Short, _
ByVal pDevMode As IntPtr) As Integer
Const DC_PAPERS As Integer = 2
Const DC_PAPERNAMES As Integer = 16
'以下のメソッドをDevMode構造体から取得した下記パラメータで実行したが・・・
'PrinterName : "セッション 3 の (NTTDSPC079 からの) EPSON VP-4300 ESC/P"
'PortName : "Client:3:EPSON VP-4300 ESC/P"
Private Function GetPaperNumber(ByVal PrinterName As String, ByVal PortName As String) As Short
Dim idx As Integer
Dim hEncoding As System.Text.Encoding = System.Text.Encoding.GetEncoding("Shift-JIS")
Dim PaperNamesCount As Integer
Dim svPrinterName As String = PrinterName
'①用紙名の数を取得
PaperNamesCount = DeviceCapabilitiesNames(PrinterName, PortName, DC_PAPERNAMES, Nothing, IntPtr.Zero)
Dim PaperNames As String = New String(" "c, PaperNamesCount * 64)
'②用紙名(1メンバー64文字で用紙名数分)を取得
Call DeviceCapabilitiesNames(PrinterName, PortName, DC_PAPERNAMES, PaperNames, IntPtr.Zero)
PrinterName = svPrinterName
Dim paperNumberCount As Integer
'③用紙サイズ番号の数を取得
paperNumberCount = DeviceCapabilitiesPapers(PrinterName, PortName, DC_PAPERS, Nothing, IntPtr.Zero)
Dim paperNumbers As Short()
ReDim paperNumbers(paperNumberCount - 1)
'④用紙サイズ番号(配列)を取得
Call DeviceCapabilitiesPapers(PrinterName, PortName, DC_PAPERS, paperNumbers, IntPtr.Zero)
For j As Integer = 0 To PaperNamesCount - 1
Dim paper As String = hEncoding.GetString(hEncoding.GetBytes(PaperNames), j * 64, 64)
PrinterInfo.Rows.Add()
idx = PrinterInfo.Rows.Count - 1
PrinterInfo.Rows(idx).Cells(0).Value = j.ToString("000")
PrinterInfo.Rows(idx).Cells(1).Value = paperNumbers(j).ToString("000")
PrinterInfo.Rows(idx).Cells(2).Value = paper.Trim()
Next
Return paperNumberCount
End Function
Metaサーバー
OS:Windows2008 R2 64Bit
クライアント
OS:WindowsXP
CitrixReceiver 3.1.0.64091
Citrix XenApp6.0を使用して、.NET 2010 VB で作成した公開アプリケーションで印刷を
行っています。Auto Created Client Printerでユニバーサルプリンタドライバが
使用されているプリンタをパラメータに以下のコードを実行させたところ
「①用紙名の数を取得」は問題なくできる。
「②用紙名(1メンバー64文字で用紙名数分)を取得」はすべて空白が取得されます。
「③用紙サイズ番号の数を取得」は問題なくできる。
「④用紙サイズ番号(配列)を取得」はすべてゼロが取得されます。
一方、サーバにインストールした別のプリンタ(ベンダー製の非ネイティブドライバ使用)を
指定した場合は問題なくすべての情報が取得されます。
その上、この状態でも該当のAuto Created Client Printerを「デバイスとプリンター」で
右クリックし印刷設定を選択→表示される印刷設定画面で用紙/品質タブを選択→
詳細ボタン押下→用紙サイズドロップダウンをクリックすると、目的の用紙サイズが一覧表示
されるので取得する方法はあると思いますが、その方法がわかりません。
Auto Created Client Printerでの上記情報の取得方法をご存知の方いらっしゃいましたら
御教授お願い致します。
<以下はVBコードの問題部分です>
'用紙名のリストを取得
Declare Function DeviceCapabilitiesNames Lib "winspool.drv" Alias "DeviceCapabilitiesA" ( _
ByVal pDevice As String, _
ByVal pPort As String, _
ByVal fwCapability As Short, _
ByVal pOutput As String, _
ByVal pDevMode As IntPtr) As Integer
'用紙番号のリストを取得
Declare Function DeviceCapabilitiesPapers Lib "winspool.drv" Alias "DeviceCapabilitiesA" ( _
ByVal pDevice As String, _
ByVal pPort As String, _
ByVal fwCapability As Short, _
ByVal pOutput() As Short, _
ByVal pDevMode As IntPtr) As Integer
Const DC_PAPERS As Integer = 2
Const DC_PAPERNAMES As Integer = 16
'以下のメソッドをDevMode構造体から取得した下記パラメータで実行したが・・・
'PrinterName : "セッション 3 の (NTTDSPC079 からの) EPSON VP-4300 ESC/P"
'PortName : "Client:3:EPSON VP-4300 ESC/P"
Private Function GetPaperNumber(ByVal PrinterName As String, ByVal PortName As String) As Short
Dim idx As Integer
Dim hEncoding As System.Text.Encoding = System.Text.Encoding.GetEncoding("Shift-JIS")
Dim PaperNamesCount As Integer
Dim svPrinterName As String = PrinterName
'①用紙名の数を取得
PaperNamesCount = DeviceCapabilitiesNames(PrinterName, PortName, DC_PAPERNAMES, Nothing, IntPtr.Zero)
Dim PaperNames As String = New String(" "c, PaperNamesCount * 64)
'②用紙名(1メンバー64文字で用紙名数分)を取得
Call DeviceCapabilitiesNames(PrinterName, PortName, DC_PAPERNAMES, PaperNames, IntPtr.Zero)
PrinterName = svPrinterName
Dim paperNumberCount As Integer
'③用紙サイズ番号の数を取得
paperNumberCount = DeviceCapabilitiesPapers(PrinterName, PortName, DC_PAPERS, Nothing, IntPtr.Zero)
Dim paperNumbers As Short()
ReDim paperNumbers(paperNumberCount - 1)
'④用紙サイズ番号(配列)を取得
Call DeviceCapabilitiesPapers(PrinterName, PortName, DC_PAPERS, paperNumbers, IntPtr.Zero)
For j As Integer = 0 To PaperNamesCount - 1
Dim paper As String = hEncoding.GetString(hEncoding.GetBytes(PaperNames), j * 64, 64)
PrinterInfo.Rows.Add()
idx = PrinterInfo.Rows.Count - 1
PrinterInfo.Rows(idx).Cells(0).Value = j.ToString("000")
PrinterInfo.Rows(idx).Cells(1).Value = paperNumbers(j).ToString("000")
PrinterInfo.Rows(idx).Cells(2).Value = paper.Trim()
Next
Return paperNumberCount
End Function
解決しました。自己レスです。
DeviceCapabilities呼び出しの際、PrinterNameとPortName をsjisに変換し、
null(0)で終了する(c/c++で使用する)文字列にしてから、実行すると期待していた
結果が返されました。
日本版のWindows系でプリンタ名に日本語が含まれる場合にだけ発生する
現象のようで、DeviceCapabilitiesの呼出しと実行結果の文字列はsjis文字で
null(0)にて終了する形式で行うようです。日本版citrixではAuto Created Client Printerの
プリンタ名に日本語が入るので要注意です。
(こんなことで3~4日も悩むなんて・・)
これでプリンタ用紙選択を実行時に行えるようになり、用紙サイズ別のプリンタを
あらかじめ作っておいてそれを選択といったことをせずに済むようになりました。
ご覧になったみなさんありがとうございました。
DeviceCapabilities呼び出しの際、PrinterNameとPortName をsjisに変換し、
null(0)で終了する(c/c++で使用する)文字列にしてから、実行すると期待していた
結果が返されました。
日本版のWindows系でプリンタ名に日本語が含まれる場合にだけ発生する
現象のようで、DeviceCapabilitiesの呼出しと実行結果の文字列はsjis文字で
null(0)にて終了する形式で行うようです。日本版citrixではAuto Created Client Printerの
プリンタ名に日本語が入るので要注意です。
(こんなことで3~4日も悩むなんて・・)
これでプリンタ用紙選択を実行時に行えるようになり、用紙サイズ別のプリンタを
あらかじめ作っておいてそれを選択といったことをせずに済むようになりました。
ご覧になったみなさんありがとうございました。
Powerful & Beautiful
力強く、美しいシステムを。