(57)【要約】【課題】プリンタードライバーを使用しない印刷システムにおいても画像形成装置の機種ごとに異なるユーティリティアプリケーションをユーザが利用できるようにすること。【解決手段】仮想プリンターサービス２１１は、仮想プリンター一覧から仮想プリンター（３１１、３１２など）が選択されたことに応じて（Ｓ１５０２）、該選択された仮想プリンターの接続先の画像形成装置の機種が対応するユーティリティの起動ボタンを表示することにより、ユーティリティの起動ボタン表示を切り換える（Ｓ１５０３〜Ｓ１５１０）。【選択図】図１６
2020201802.tif 000002
【特許請求の範囲】
【請求項１】
第１アプリケーションであって、
画像形成装置に印刷ジョブを送信する情報処理装置上の仮想デバイスを選択するための選択手段と、
前記選択に応じて、画像形成装置に対する付加機能を提供する１又は複数の第２アプリケーションのうち、前記選択された仮想デバイスが印刷ジョブを送信する画像形成装置の機種が対応する第２アプリケーションを起動するためのユーザインタフェースを表示する表示手段として前記情報処理装置を機能させるための第１アプリケーション。
【請求項２】
画像形成装置の機種ごとに対応する第２アプリケーションの情報を示す機種依存情報を保持し、
前記表示手段は、前記機種依存情報を用いて、前記ユーザインタフェースの表示を制御する、ことを特徴とする請求項１に記載の第１アプリケーション。
【請求項３】
前記機種依存情報は、画像形成装置の機種ごとにファイルとして保持されることを特徴とする請求項２に記載の第１アプリケーション。
【請求項４】
前記ユーザインタフェースが指示された場合、前記選択された仮想デバイスに関する情報を、該指示されたユーザインタフェースに対応する第２アプリケーションに受け渡す受け渡し手段を有することを特徴とする請求項１〜３のいずれか１項に記載の第１アプリケーション。
【請求項５】
前記複数の第２アプリケーションには、画像形成装置の状態を表示する第２アプリケーション、画像形成装置をシャットダウンする第２アプリケーション、画像形成装置のサーバー機能にアクセスする第２アプリケーションの少なくともいずれかが含まれる、ことを特徴とする請求項１〜４のいずれか１項に記載の第１アプリケーション。
【請求項６】
前記画像形成装置のサーバー機能にアクセスする第２アプリケーションは、Ｗｅｂブラウザであることを特徴とする請求項５に記載の第１アプリケーション。
【請求項７】
請求項１〜６のいずれか１項に記載の第１アプリケーションがインストールされた情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置に印刷ジョブを送信する仮想デバイスを管理するアプリケーション及び情報処理装置に関するものである。
【背景技術】
【０００２】
情報処理装置から画像形成装置等の周辺機器を利用するには、一般的にはその周辺機器に対応した特定のデバイスドライバーを、情報処理装置上で動作するオペレーティングシステム（以下「ＯＳ」と呼ぶ）にインストールする。すなわち、画像形成装置であればプリンタードライバーをインストールして利用する。
【０００３】
画像形成装置の利用においては、プリンタードライバーをアプリケーションから起動させ、印刷に必要な設定を行い、画像データおよび印刷設定（以下、これらをまとめて「印刷ジョブ」を呼ぶ）を生成し、印刷ジョブを画像形成装置に送信する。印刷ジョブを受信した画像形成装置は、印刷設定に応じた画像生成処理を行い、用紙への印刷を行う。
【０００４】
プリンタードライバーは、ユーザインタフェース（以下「ＵＩ」と呼ぶ）モジュール、印刷ジョブ生成モジュール、通信モジュールを主たる要素として構成される。ＵＩモジュールは、ユーザやアプリケーションからの入力を管理し、印刷ジョブ生成モジュールは印刷ジョブを生成し、通信モジュールは情報処理装置と画像形成装置間の通信処理を制御する。
これらのモジュール群から構成されるプリンタードライバーは、ＯＳから印刷データを受け取り、印刷ジョブ生成モジュールにより生成された印刷ジョブを、画像形成装置に送信する。
【０００５】
また、画像形成装置を使用する際にユーザに対して様々な付加機能を提供するユーティリティアプリケーション（以下「ユーティリティ」と呼ぶ）が存在する。ユーティリティは、プリンタードライバーのように画像形成装置のベンダーから提供される。ユーティリティには、例えば、画像形成装置の現在の状態を表示するもの（以下「ステータスモニタ」と呼ぶ）、画像形成装置を自動でシャットダウンするためもの（以下「オートシャットダウンツール」と呼ぶ）などが存在する。さらに、プリンターの情報を表示するためのツールや画像形成装置のＷｅｂサーバー機能にＨＴＴＰプロトコルによりアクセスする機能（以下「リモートＵＩ」と呼ぶ）などもユーティリティとして提供されている。
【０００６】
一方、近年ＯＳには、特定のプロトコルを使用することにより、プリンタードライバーを使用せずに印刷を可能とする印刷システムが導入されている。例えば、アップル社のＡｉｒＰｒｉｎｔ（登録商標）、グーグル社のＡｎｄｒｏｉｄ（登録商標）やマイクロソフト社のＷｉｎｄｏｗｓ（登録商標）のモプリア（登録商標）等に対応する印刷システムが導入されている。この場合には、画像形成装置に対応したプリンタードライバーをＯＳにインストールする必要がなく、印刷ジョブの生成と画像形成装置への印刷ジョブ送信は、全てＯＳが行う（特許文献１）。なお、ＡｉｒＰｒｉｎｔは、ＯＳの一部の機能となる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１６−１１０５２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、プリンタードライバーを使用せずに印刷を可能とする印刷システムに対応していない画像形成装置は、ＯＳから印刷ジョブを受信しても解釈することができない。そこで、我々は、ＯＳから印刷ジョブを受信できる仮想の画像形成装置（以下「仮想デバイス」と呼ぶ）を情報処理装置内に作成し、この仮想デバイスに、受信した印刷ジョブを画像形成装置へと送らせたいと考えている。
【０００９】
なお、プリンタードライバーを用いた印刷システムにおいては、ユーティリティの情報は、機種ごとにプリンタードライバーの構成ファイル（例えばＰＰＤファイル）に記載されている。そのため、ユーザはＯＳの印刷システムが持つ標準のＵＩから、機種に対応するユーティリティを起動することが可能であった。なお、ＰＰＤとは”PostScript Printer Description”の略である。ＰＰＤファイルは、プリンターの仕様が記述されているファイルである。ＰＰＤファイルには、例えば、プリンター名、用紙サイズ、・・・、その他特殊機能の情報（例えば上述したユーティリティの情報）等が記載されている。
【００１０】
しかし、プリンタードライバーを使用しない印刷システムにおいては、ＯＳの表示する標準のＵＩからユーティリティを起動することができない。ユーティリティは一般的に機種ごとに異なる。プリンタードライバーを使用しない印刷システムでは、機種ごとのプリンタードライバーの構成ファイルが存在しないため、機種ごとに異なるユーティリティを起動できない。すなわち、プリンタードライバーを使用しない印刷システムでは、ユーザは画像形成装置の機種ごとに異なるユーティリティを利用することができないといった課題があった。
【００１１】
本発明は、上記の課題を解決するためになされたものである。本発明は、プリンタードライバーを使用しない印刷システムにおいても画像形成装置の機種ごとに異なるユーティリティアプリケーションをユーザが利用できるようにする仕組みを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明は、第１アプリケーションであって、画像形成装置に印刷ジョブを送信する情報処理装置上の仮想デバイスを選択するための選択手段と、前記選択に応じて、画像形成装置に対する付加機能を提供する１又は複数の第２アプリケーションのうち、前記選択された仮想デバイスが印刷ジョブを送信する画像形成装置の機種が対応する第２アプリケーションを起動するためのユーザインタフェースを表示する表示手段として前記情報処理装置を機能させるための第１アプリケーション。
【発明の効果】
【００１３】
本発明によれば、プリンタードライバーを使用しない印刷システムにおいても画像形成装置の機種ごとに異なるユーティリティアプリケーションをユーザが利用できるようにすることができる。
【図面の簡単な説明】
【００１４】
【図１】本実施形態のプリントシステムの全体構成の一例を示す図。
【図２】ホストコンピューターを構成可能な情報処理装置のハードウェア構成図。
【図３】ホストコンピューターのソフトウェア構成図。
【図４】仮想プリンターのソフトウェア構成図。
【図５】仮想プリンターサービスのインストールパッケージのソフトウェア構成、及び、仮想プリンターサービスのインストール処理を示す図。
【図６】第１実施形態における仮想プリンターの生成処理の一例を示すフローチャート。
【図７】仮想プリンターサービスのＵＩの一例を示す図。
【図８】ＯＳにおけるプリンター登録処理の一例を示すフローチャート。
【図９】ＯＳに印刷先のプリンターを登録するためのＵＩの一例を示す図。
【図１０】ネットワーク上の機器探索処理のシーケンス図。
【図１１】ネットワーク上の機器探索処理のシーケンス図。
【図１２】ホストコンピューター内の仮想プリンター探索処理のシーケンス図。
【図１３】仮想プリンターの印刷実行時の処理、及び、ジョブ生成部の印刷実行時の処理の一例を示すフローチャート。
【図１４】仮想プリンターサービスのファイル構成の一例を示す図。
【図１５】第１実施形態における仮想プリンターサービスのＵＩ、ステータスモニタのＵＩの一例を示す図。
【図１６】仮想プリンターごとにＵＩにおけるユーティリティの起動ボタン表示を切り替える処理の一例を示すフローチャート。
【図１７】第１実施形態のＰＰＤファイルの一例を示す図。
【図１８】仮想プリンターサービスのメインＵＩのユーティリティの起動ボタンが押下された場合の仮想プリンターサービスの処理の一例を示すフローチャート。
【図１９】第２実施形態における仮想プリンターサービスのＵＩの一例を示す図。
【図２０】第２実施形態のＰＰＤファイルの一例を示す図。
【発明を実施するための形態】
【００１５】
〔第１実施形態〕
図１は、本発明の一実施形態を示すプリントシステムの全体構成の一例を示す図である。
【００１６】
本実施形態に係るシステムは、ホストコンピューター１０１ａ，１０１ｂと、プリンター１０３，１０４を備える。
ホストコンピューター１０１ａ，１０１ｂは、パーソナルコンピューター（ＰＣ）等の情報処理装置の一例である。プリンター１０３，１０４は、ページ記述言語（Page Description Language、以下「ＰＤＬ」と呼ぶ）形式やラスター形式の印刷データを受信し印刷を行う画像形成装置である。
【００１７】
これらの各装置は、ネットワーク１００を通じて相互に通信可能である。ネットワーク１００は例えばLAN（Local Area Network）やイントラネットであり、ＷＡＮ（Wide Area Network）を含むことが可能である。
【００１８】
なお、プリンター１０３，１０４は、印刷機能のみを備えるシングルファンクションプリンタであっても、印刷機能、スキャン機能、複写機能を備えるマルチファンクションプリンタであってもよい。
また、ホストコンピューターやプリンターは、ネットワーク１００に、１台でも３台以上接続されていていてもよい。
【００１９】
なお、以下の説明で、ホストコンピューター１０１ａ，１０１ｂについて共通の説明を行う場合には、ａ，ｂ等の添え字を省略して単にホストコンピューター１０１と記載する。また、その各構成要素についても添え字ａ，ｂを省略して記載する。
【００２０】
図２は、ホストコンピューター１０１を構成可能な情報処理装置のハードウェア構成の一例を示す図である。
ＣＰＵ２０１を含む制御部は、ホストコンピューター１０１全体の動作を制御する。ＣＰＵ２０１は、ＲＯＭ２０３又は外部メモリ２０９に記憶されたプログラムをＲＡＭ２０２に展開し、それを実行してユーザインタフェース（以下「ＵＩ」）画面の制御や印刷データの生成、印刷データの転送などの各種制御を行う。
【００２１】
ＲＡＭ２０２は、ＣＰＵ２０１の主記憶メモリであり、ワークエリア又は各種プログラムを展開するための一時記憶領域として用いられる。ＲＯＭ２０３は、ＣＰＵ２０１で実行可能な制御プログラムやブートプログラム等を格納する。外部メモリＩ／Ｆ２０８は、外部メモリ２０９を制御部に接続するインタフェースである。外部メモリ２０９は、オペレーティングシステム（ＯＳ）２１０、仮想プリンターサービス２１１、アプリケーション２１２などを記憶する。
【００２２】
本実施形態では、外部メモリ２０９としてＨＤＤ（Hard Disk Drive）等の補助記憶装置を想定しているが、ＨＤＤの代わりに又は併用してＳＳＤ（Solid State Drive）などの不揮発性メモリを用いるようにしてもよい。このように、ＣＰＵ２０１、ＲＡＭ２０２、ＲＯＭ２０３、外部メモリ２０９等のハードウェアは、いわゆるコンピューターを構成している。
【００２３】
操作入力装置Ｉ／Ｆ２０４は、キーボードやポインティングデバイス（マウス）、タッチ入力デバイスなどの操作入力装置２０５を制御するインタフェースである。操作入力装置２０５は、ユーザからの操作を受け付ける受付部として機能する。
ディスプレイＩ／Ｆ２０６は、ディスプレイ２０７への画面の表示を制御する。ディスプレイ２０７は、ユーザに対して情報を表示する表示部として機能する。
【００２４】
ホストコンピューター１０１は、ネットワークＩ／Ｆ２１３を介してネットワーク１００に接続される。ネットワークＩ／Ｆ２１３は、ネットワーク１００上のプリンター１０３，１０４に印刷データの送信、インターネットでの通信などを行う。なお、ネットワーク１００上の外部端末とのデータ通信は、例えばIEEE802.11シリーズに準拠する無線通信や、ＬＡＮケーブルなどの有線ケーブルを介した通信である。
【００２５】
なお、本実施形態のホストコンピューターの外部メモリ２０９には、ＯＳ２１０、後述する仮想プリンターサービス２１１、各種アプリケーション２１２等がインストールされている。これらのソフトウェアは、ＲＯＭ２０３又は外部メモリ２０９に記憶されたプログラムをＲＡＭ２０２にロードし、ＣＰＵ２０１により実行することで機能し、以下に示すソフトウェアの機能を実現する。
【００２６】
図３は、ホストコンピューター１０１ａ，１０１ｂのソフトウェア構成を示す図である。
ホストコンピューター１０１ａにインストールされているＯＳ２１０ａの一つの機能として印刷システム３０１ａがある。印刷システム３０１ａは、ホストコンピューター１０１ａからの印刷動作に関する制御を行う。印刷システム３０１ａは、特定のプロトコルを使用することにより、プリンタードライバーを使用せずに印刷を可能とする印刷システムである。印刷システム３０１ａは、例えば、アップル社のＡｉｒＰｒｉｎｔ（登録商標）や、グーグル社のＡｎｄｒｏｉｄ（登録商標）やマイクロソフト社のＷｉｎｄｏｗｓ（登録商標）のモプリア（登録商標）等に対応する印刷システムである。
【００２７】
仮想プリンターサービス２１１ａは、ジョブ生成部３０３ａとサーバー部３０２ａとを有する。
サーバー部３０２ａには、仮想プリンターＡ３１１や仮想プリンターＢ３１２が生成される。この例では、仮想プリンターＡ３１１は、実際のプリンターであるプリンターＡＹ１０３に紐づけて生成されている。同じく仮想プリンターＢ３１２は、実際のプリンターであるプリンターＢＺ１０４に紐づけて生成されている。
【００２８】
本実施形態では、ホストコンピューター１０１に仮想プリンターサービス２１１によって作成され、所定の探索プロトコルに対して実際のプリンターのように応答するものを仮想プリンターと呼ぶ（例えば仮想プリンターＡ３１１，仮想プリンターＢ３１２等）。仮想プリンターは、特定のプロトコルによって印刷データを受信し、印刷データを作成、または変換して実際のプリンターに送信する。なお、実際のプリンター本体（例えば、プリンターＡＹ１０３、プリンターＢＺ１０４等）のことを実プリンターと呼ぶ。
【００２９】
なお、仮想プリンターＡ３１１，仮想プリンターＢ３１２は、ＯＳ２１０ａから所定の探索プロトコルによるプリンターの探索要求（デバイス探索要求）を受信すると、上記探索プロトコルに則ってプリンター情報を返答する。また、仮想プリンターＡ３１１，Ｂ３１２は、紐付けされているプリンターＡＹ１０３，プリンターＢＺ１０４の状態を検知するなどの通信も上記探索プロトコルにて行う。なお、本実施形態では、ホストコンピューター１０１のＯＳ２１０がサポートする探索プロトコルとして一例としてアップル社のＢｏｎｊｏｕｒ（登録商標）プロトコルを用いて説明する。Ｂｏｎｊｏｕｒプロトコルでは、デバイス探索に、Ｍｕｌｔｉｃａｓｔ ＤＮＳの技術を用いる。なお、上記探索プロトコルはＢｏｎｊｏｕｒに限定されるものではなく、他の同様の機能のプロトコルでもよい。
【００３０】
仮想プリンターＡ３１１（仮想プリンターＢ３１２）は、上述の探索要求に対する返答に基づいて仮想プリンターＡ３１１（仮想プリンターＢ３１２）を印刷ジョブの送信先として登録したＯＳ２１０の印刷システム３０１ａから、印刷ジョブを受信する。仮想プリンターＡ３１１（仮想プリンターＢ３１２）は、受信した印刷ジョブを、ジョブ生成部３０３ａで解釈できる所定の形式に変換し、ジョブ生成部３０３ａに送信する。ジョブ生成部３０３ａは、各仮想プリンターが印刷システム３０１ａから受けた印刷ジョブに対し、実プリンター（プリンターＡＹ１０３やプリンターＢＺ１０４）が処理できる形式の印刷ジョブを生成して該実プリンターに送信する役割を持つ。なお、仮想プリンターに、ジョブ生成部３０３の機能を含めてもよい。すなわち、仮想プリンターが、受信した印刷ジョブから、実プリンターが処理できる印刷ジョブを生成して該実プリンターに送信するようにしてもよい。
【００３１】
ホストコンピューター１０１ｂもホストコンピューター１０１ａと同様の構成を有する。すなわち、ホストコンピューター１０１ｂにインストールされているＯＳ２１０ｂの一つの機能として印刷システム３０１ｂがある。印刷システム３０１ｂは、ホストコンピューター１０１ｂからの印刷動作に関する制御を行う。仮想プリンターサービス２１１ｂは、ジョブ生成部３０３ｂとサーバー部３０２ｂとを有する。サーバー部３０２ｂには、仮想プリンターＹ３６１や仮想プリンターＺ３６２が生成されている。この例では、仮想プリンターＹ３６１は、実プリンターであるプリンターＡＹ１０３に紐づけて生成されている。同じく仮想プリンターＺ３６２は、実プリンターであるプリンターＢＺ１０４に紐づけて生成されている。
なお、仮想プリンターを仮想デバイス、仮想プリンターサービスを仮想デバイスサービスともいう。
【００３２】
図４は、仮想プリンターのソフトウェア構成の一例を示す図である。なお、図４では一例として仮想プリンターＡ３１１について記載しているが、他の仮想プリンターも同様である。
【００３３】
本実施形態の仮想プリンターは、探索要求受信部２１０１、探索要求返答部２１０２、印刷ジョブ受信部２１０４、印刷ジョブ変換部２１０５、印刷ジョブ送信部２１０６を有する。
【００３４】
探索要求受信部２１０１は、Ｂｏｎｊｏｕｒプロトコルによるプリンターの探索要求を受信する。
探索要求返答部２１０２は、プリンターの探索要求に対して、Ｂｏｎｊｏｕｒプロトコルに則ってプリンター情報を返答（応答）する。
なお、探索要求受信部２１０１と探索要求返答部２１０２は、Ｂｏｎｊｏｕｒプロトコルによる探索要求のみ応答する。
【００３５】
印刷ジョブ受信部２１０４は、印刷システム３０１ａから、印刷ジョブを特定のプロトコルで受信する。印刷ジョブ受信部２１０４は、例えば、印刷ジョブの元となったファイルが、ホストコンピューター１０１ａ内のアプリケーション２１２ａによって開かれており、該アプリケーション上でユーザが印刷指示を行ったことにより生成される印刷ジョブを受信する。このアプリケーション２１２ａには、例えばワードプロセッサーアプリケーション、表計算アプリケーション、Ｗｅｂブラウザーアプリケーション、画像編集アプリケーション等のＯＳ２１０ａ上で動作可能な各種アプリケーションが含まれる。
【００３６】
印刷ジョブ変換部２１０５は、印刷ジョブ受信部２１０４で受信した印刷ジョブを、ジョブ生成部３０３ａが認識できる形式に変換する。なお、ジョブ生成部３０３ａが認識できる形式とは、例えばＰＤＦ形式であるが、これに限定されるものではない。
印刷ジョブ送信部２１０６は、印刷ジョブ変換部２１０５が変換した印刷ジョブを、ジョブ生成部３０３ａに送信する。
【００３７】
図５（Ａ）は、仮想プリンターサービスのインストールを行うインストールパッケージのソフトウェア構成の一例を示す図である。
【００３８】
インストールパッケージ４０１は、インストーラ４０２と仮想プリンターサービス２１１を含む。インストールパッケージ４０１がホストコンピューター１０１上で実行された場合、インストーラ４０２が動作し、ホストコンピューター１０１に仮想プリンターサービス２１１のインストール処理を行う。このインストール処理により、仮想プリンターサービス２１１は、ホストコンピューター１０１の外部メモリ２０９に記憶され、プログラム実行時にはＲＡＭ２０２にロードされ、ＣＰＵ２０１により実行される。なお、仮想プリンターサービス２１１は、アプリケーションプログラムであり、複数の仮想プリンターを生成することが可能である。
【００３９】
図５（Ｂ）は、仮想プリンターサービス２１１のインストール処理の一例を示すフローチャートである。このインストール処理は、例えば既定のウェブサイトからダウンロードした（又はＣＤ−ＲＯＭ等の記録メディアに記録された）仮想プリンターサービスのインストールパッケージ４０１を、ホストコンピューターのＯＳ２１０で実行することで開始される。
【００４０】
Ｓ５０１において、インストールパッケージ４０１に含まれるインストーラ４０２は、仮想プリンターサービスのインストール先の選択処理を行う。インストーラ４０２は、ホストコンピューター１０１のディスプレイ２０７に、図示しないインストール先選択画面を表示し、インストール先選択画面にユーザにより入力されるインストール先の情報を取得する。インストール先選択画面では、例えば「仮想プリンターサービスをインストールするディスクを選択してください」等のメッセージを表示し、仮想プリンターサービスをインストールする外部メモリの選択を促す。
【００４１】
次にＳ５０２において、インストーラ４０２は、ホストコンピューター１０１へ仮想プリンターサービス２１１のインストールを行う。インストール先は、上記Ｓ５０１にて取得したインストール先の情報に沿った場所となる。インストールされた仮想プリンターサービス２１１は、ＯＳ２１０から実行され起動される。仮想プリンターサービス２１１は、起動された際、仮想プリンターが１つも生成されていない場合には、仮想プリンターサービス２１１のメインＵＩ（後述する図７（Ａ））を表示する。なお、このメインＵＩは、ユーザ操作によっても表示可能である。仮想プリンターサービス２１１のメインＵＩ（後述する図７（Ａ））が表示されると、仮想プリンターサービス２１１は、図６に示す仮想プリンターの生成処理を開始する。
【００４２】
図６は、第１実施形態における仮想プリンターの生成処理の一例を示すフローチャートである。このフローチャートの処理は、仮想プリンターサービス２１１により実行される。
【００４３】
Ｓ６０１において、仮想プリンターサービス２１１は、メインＵＩにおいて追加ボタンがユーザによって押下されると、これを検知する。追加ボタンとは、後述する図７（Ａ）における「＋」（プラス）ボタン１００４のことである。「＋」ボタン１００４が押下されたことを検知した仮想プリンターサービス２１１は、後述する図７（Ｂ）に示す仮想プリンターの追加画面を表示し、Ｓ６０２に処理を進める。ここで、図７を用いて仮想プリンターサービス２１１のＵＩについて説明する。
【００４４】
図７は、仮想プリンターサービス２１１のＵＩの一例を示す図である。仮想プリンターサービス２１１のＵＩは、該仮想プリンターサービス２１１が起動しているホストコンピューター１０１のディスプレイ２０７に表示される。
【００４５】
図７（Ａ）は、仮想プリンターサービスのメインＵＩの一例を示す。
図７（Ａ）において、プリンター一覧領域１００１には、サーバー部３０２が作成した仮想プリンターの一覧がリストされている。図７（Ａ）の例は、すでに２つの仮想プリンター（プリンターＡ、プリンターＢ）が登録済みの状態におけるＵＩを示している。
【００４６】
領域１００２には、仮想プリンターＡ３１１のアイコン、名前、そして状況が表示されている。領域１００３には、同様に仮想プリンターＢ３１２のアイコン、名前、そして状況が表示されている。なお、インストール直後の仮想プリンターサービス２１１は、仮想プリンターが１つも生成されていない状態であるため、領域１００１の仮想プリンター一覧には１つもリストされていない状態となる。
【００４７】
ユーザは「＋」（プラス）ボタン１００４を押下することで、仮想プリンターを追加することができる。「＋」ボタン１００４を押下した場合のＵＩについては、図７（Ｂ）を用いて後述する。また、「−」（マイナス）ボタン１００５を押下することで、プリンター一覧領域１００１で選択されている仮想プリンターを削除することができる。
【００４８】
また、領域１００６には、プリンター一覧領域１００１で選択されている仮想プリンターのより詳細な情報が表示される。具体的には、プリンターを表すアイコン１００８、プリンターの名称、場所、状況などが表示されている。さらに、「ステータスモニタの起動」ボタン１００７を押下することで、プリンターＡＹ１０３の状態をさらに詳細に表示することも可能である。
【００４９】
図７（Ｂ）は、図７（Ａ）の「＋」ボタン１００４を押下した時に表示されるＵＩ（仮想プリンター追加画面）の一例を示す。図７（Ｂ）の領域１０１１には、ホストコンピューター１０１が接続されたネットワークに存在するプリンターやＵＳＢ接続されたプリンターのうち、仮想プリンターサービス２１１がサポートするものの一覧がリストされている。この例では、ネットワーク１００に接続されたプリンターＡＹ１０３とプリンターＢＺ１０４がそれぞれ領域１０１２と領域１０１３に表示されている。ユーザは、仮想プリンターを作成したいプリンターをこのリストから選択し、名前１０１４と場所１０１５を入力し、追加ボタン１０１６を押下する。これにより、ＵＩは図７（Ａ）に戻り、追加した仮想プリンターの仮想プリンター名（名前１０１４で入力された名前）がプリンター一覧領域１００１に追加されて表示される。
【００５０】
以下、図６のフローチャートの説明に戻る。
仮想プリンターの追加画面（図７（Ｂ））の表示を行った仮想プリンターサービス２１１は、Ｓ６０２において、プリンターの探索の処理を実行する。プリンターの探索処理とは、後述する図１１で示すような処理を行うことで実現される。例えば、仮想プリンターサービス２１１が、ＯＳ２１０の機能を利用して、ネットワーク１００にＢｏｎｊｏｕｒプロトコルによる探索要求を送信し、ネットワーク１００上の機器から該探索要求に対する応答を受け取ることで、デバイス探索を行う。
【００５１】
次にＳ６０３において、仮想プリンターサービス２１１は、上記Ｓ６０２にて探索されたプリンターに仮想プリンターサービス２１１の対象プリンターが含まれているか否かを判断する。対象プリンターか否かの判断には、仮想プリンターサービス２１１の内部に保持される仮想プリンターサービスの対象プリンターの一覧を利用する。この一覧に、上記Ｓ６０２にて探索されたプリンターが含まれている場合、仮想プリンターサービス２１１は、このプリンターを対象プリンターと判断する。
【００５２】
表１に、仮想プリンターサービスの対象プリンターの一覧の情報を例示する。
【表１】
2020201802.tif 000003
【００５３】
対象プリンターの一覧には、プリンタードライバーを使用することなく印刷を可能とする印刷システムに対応しない（すなわち特定のプロトコルに対応しない）プリンターのうち、仮想プリンターサービス２１１が対応するプリンターのみがリストされる。本リストは、仮想プリンターサービス２１１のインストール前から仮想プリンターサービス２１１の内部に保持されている。
表１において、プリンター名は、該当プリンターの名称を示す。
【００５４】
また、表２に、上記Ｓ６０２で探索されたプリンターの一覧の情報を例示する。
【表２】
2020201802.tif 000004
【００５５】
表２において、プリンター名は、該当プリンターの名称を示す。プリンター名は、該当プリンターに予め保持されているプリンターの名称であり、上記Ｓ６０２で探索された際に該当プリンターからＢｏｎｊｏｕｒプロトコルに則って通知（応答）されたプリンター名に対応する。なお、プリンター名は、一般的にはプリンター機種に関連する名称となっており、表１においても、このプリンター名が用いられる。なお、プリンターからのＢｏｎｊｏｕｒプロトコルに則った通知（応答）に、プリンターの機種名など、プリンターの機種を特定可能な識別子を含めてもよい。
【００５６】
また、ＩＰアドレスは、該当プリンターのネットワーク上のアドレスを示す。
また、サービスタイプは、該当プリンターが対応しているサービスを示す。例えば、「_printer._tcp」のサービスタイプを有する機器は、それがＬＰＤ（Line Printer Daemon）のプロトコルに対応したプリンターであることを示している。
なお、表２のリストには、上記Ｓ６０２で探索された全てのプリンターがリストアップされる。
【００５７】
仮想プリンターサービス２１１は、表１及び表２で示されるプリンターを比較することで、探索されたプリンターが仮想プリンターサービスの対象プリンターか否かの判断を行う。表１及び表２で示す例では、プリンターＡＹとプリンターＢＺが対象プリンターであると判断される。この判断では、特定のプロトコルに対応していないプリンターで、且つ、仮想プリンターサービス２１１が対応するプリンターのリスト（所謂ホワイトリスト）を用いる例を示した。すなわち、このリストに探索されたプリンターが含まれている場合に、そのプリンターを対象プリンターと判断する構成を示した。しかし、この判断を、特定のプロトコルに対応しているプリンター、又は、仮想プリンターサービス２１１が対応しないプリンターのリスト（所謂ブラックリスト）を用いて行ってもよい。この場合、このリストに探索されたプリンターが含まれていない場合に、そのプリンターを対象プリンターと判断する構成とする。すなわち、特定のプロトコルに対応していないプリンターや、仮想プリンターサービス２１１が対応するプリンターを特定可能なリスト等の情報に基づき、仮想プリンターサービス２１１で仮想プリンターの生成対象となるプリンターを選抜する構成であればよい。
【００５８】
上記Ｓ６０３において、上記Ｓ６０２にて探索されたプリンターに仮想プリンターサービスの対象プリンターが１つも含まれていない場合（Ｓ６０３でＮＯの場合）、仮想プリンターサービス２１１は、本フローチャートの処理を終了する。
【００５９】
一方、上記Ｓ６０３において、上記Ｓ６０２にて探索されたプリンターに仮想プリンターサービスの対象プリンターが含まれている場合（Ｓ６０３でＹＥＳの場合）、仮想プリンターサービス２１１は、Ｓ６０４に処理を進める。
【００６０】
Ｓ６０４において、仮想プリンターサービス２１１は、上記Ｓ６０３で対象プリンターであると判断したプリンターのプリンター名を、仮想プリンター追加画面（図７（Ｂ））の領域１０１１に表示する。上述した例では、ネットワーク１００に接続されたプリンターＡＹ１０３とプリンターＢＺ１０４のプリンター名がそれぞれ領域１０１２と領域１０１３に表示される。すなわち、仮想プリンターサービス２１１は、上記Ｓ６０２で探索されたプリンターのうち、上述のようなリスト（例えば表１のようなリスト）に基づき選抜されたプリンターの一覧をユーザに提示する。
【００６１】
次にＳ６０５において、仮想プリンターサービス２１１は、仮想プリンターの接続先となるプリンターの選択処理を行う。仮想プリンターサービス２１１は、図７（Ｂ）の領域１０１１でいずれかのプリンターが選択された状態で追加ボタン１０１６が、ユーザによりマウスなどの操作入力装置２０５によって押下されると、これを検知する。そして、仮想プリンターサービス２１１は、領域１０１１で選択されているプリンターのプリンター名、名前１０１４及び場所１０１５の情報を、仮想プリンター追加画面（図７（Ｂ））から取得する。図７（Ｂ）の例では、「プリンターＡＹ」を選択されたプリンターのプリンター名、「プリンターＡ」を名前、「本館３階」を場所の情報として取得する。
【００６２】
次にＳ６０６において、仮想プリンターサービス２１１は、仮想プリンターの生成処理を行う。この処理では、上記Ｓ６０５にて選択されたプリンターを接続先として紐付けし、上記Ｓ６０５で取得した名前、場所に基づき仮想プリンターを生成する。なお、この処理により生成された仮想プリンターは、Ｂｏｎｊｏｕｒプロトコルで定められたプリンターが通知する情報を有する。この情報には、例えば、仮想プリンターの接続先、仮想プリンターの名前、仮想プリンターの機能、仮想プリンターであることを示す仮想プリンターフラグＯＮの情報などが含まれる。仮想プリンターの接続先は、例えば上記Ｓ６０５で選択されたプリンターのＩＰアドレスが対応する。具体的には上記Ｓ６０３の探索時に取得されたＩＰアドレス（表２にて例示）となる。また、仮想プリンターの機能は、例えばサポートＰＤＬ（Page Description Language）、サポート機能などが対応する。この仮想プリンターの機能は、上記Ｓ６０５で選択されたプリンターごとに異なり、仮想プリンターサービスのインストール前から仮想プリンターサービス２１１の内部に保持されている。
【００６３】
なお、生成された仮想プリンターを用いて印刷を行うには、該仮想プリンターをＯＳ２１０にサービスプログラムとして登録する必要がある。サービスプログラムとしてＯＳ２１０に登録された仮想プリンターは、ＯＳ２１０の実行中に常時動作し、他プログラムや情報機器からの問い合わせに対する応答を行う。後述する図１２に示す機器探索処理を示すシーケンスは、その一例である。これによって、仮想プリンターは、他プログラムや情報機器からは実際のプリンターとして存在しているかのように見える。このため、上述したＳ６０２において実プリンターと同様に探索されてしまう。本実施形態では、探索された仮想プリンターを対象プリンターから除外しているため、該探索された仮想プリンターを接続先とする仮想プリンターが生成されないようになっている。
【００６４】
以下、仮想プリンターのＯＳへの登録処理について説明する。
図８は、ＯＳ２１０におけるプリンター登録処理の一例を示すフローチャートである。このフローチャートの処理は、ユーザ操作により、ＯＳ２１０に印刷先のプリンターを登録するためのメインＵＩ（図９（Ａ））が表示された際に開始される。
【００６５】
Ｓ７０１において、ＯＳ２１０の印刷システム３０１は、追加ボタンがユーザによって押下されると、これを検知する。この追加ボタンとは、後述する図９（Ａ）における「＋」（プラス）ボタン１１０４のことである。「＋」ボタン１００４が押下されたことを検知すると、ＯＳ２１０の印刷システム３０１は、図９（Ｂ）に示すプリンターの登録画面を表示し、Ｓ７０２に処理を進める。ここで、図９を用いて、ＯＳ２１０に印刷先のプリンターを登録するためのＵＩについて説明する。
【００６６】
図９は、ＯＳ２１０に印刷先のプリンターを登録するためのＵＩの一例を示す図である。ＯＳ２１０に印刷先のプリンターを登録するためのＵＩは、該ＯＳ２１０が起動しているホストコンピューター１０１のディスプレイ２０７に表示される。
【００６７】
図９（Ａ）は、ＯＳ２１０における印刷先のプリンターを登録するためのメインＵＩを示す。
図９（Ａ）のプリンター一覧領域１１０１には、印刷先としてＯＳ２１０に既に登録されているプリンターの一覧がリストされている。図９（Ａ）の例は、すでに２つのプリンター（プリンターＡＹ、プリンターＢＺ）が登録済みの状態におけるＵＩを示している。
領域１１０２には、プリンターＡＹのアイコン、名前、そして状況が表示されている。領域１１０３には、同様に、プリンターＢＺのアイコン、名前、そして状況が表示されている。
【００６８】
ユーザは「＋」（プラス）ボタン１１０４を押下することで、プリンターを追加登録することができる。「＋」ボタン１１０４を押下した場合のＵＩについては、図９（Ｂ）を用いて後述する。また、「−」（マイナス）ボタン１１０５を押下することで、プリンター一覧領域１１０１で選択されているプリンターを削除することができる。
【００６９】
また、領域１１０６には、プリンター一覧領域１１０１で選択されているプリンターのより詳細な情報が表示されている。具体的には、プリンターを表すアイコン、プリンターの名称、場所、状況などが表示されている。さらに、「プリントキューを開く」ボタン１１０７を押すことで、領域１１０１で選択されているプリンターの状態をさらに詳細に表示することも可能である。さらに、「オプション」ボタン１１０８を押すことで、領域１１０１で選択されているプリンターのオプション類（不図示）の構成を変更したり、トナーやインクなどの印刷剤の残量を表示する画面などを表示することができる。
【００７０】
図９（Ｂ）は、図９（Ａ）の「＋」ボタン１１０４を押下した時に表示されるＵＩ（プリンター追加画面）の一例を示す。図９（Ｂ）の領域１１１１には、接続されたネットワークに存在する実プリンターやＵＳＢ接続された実プリンターや仮想プリンターの一覧がリストされ、ユーザに提示される。ユーザは登録したいプリンターを、領域１１１１のリストから選択し、名前１１１６と場所１１１７を入力できる。そして最後に追加ボタン１１１８を押下することで、ＵＩは図９（Ａ）に戻り、登録したプリンターがプリンター一覧領域１１０１に追加されて表示される。
【００７１】
以下、図８の説明に戻る。
図９（Ｂ）のプリンターの登録画面の表示を行ったＯＳ２１０の印刷システム３０１は、Ｓ７０２において、プリンターの探索の処理を実行する。探索処理とは、後述する図１１、図１２で示されるような処理を行うことで実現される。例えば、ＯＳ２１０からネットワーク１００にＢｏｎｊｏｕｒプロトコルによる探索要求を送信し、ネットワーク１００上の機器から該探索要求に対する応答を受け取ることで、デバイス探索を行う。
次にＳ７０３において、ＯＳの印刷システムは、上記Ｓ７０２にてプリンターが探索されたか否かの判断を行う。
【００７２】
表３には、上記Ｓ７０３で探索されたプリンターの一覧の情報を例示する。
【表３】
2020201802.tif 000005
【００７３】
表３において、プリンター名は、該当プリンターの名称を示すものであり、該当プリンターからＢｏｎｊｏｕｒプロトコルに則って通知（応答）されたプリンター名に対応する。
ＩＰアドレスは、該当プリンターのネットワーク上のアドレスを示す。
サービスタイプは該当プリンターが対応しているサービスを示す。例えば、「_printer._tcp」のサービスタイプを有する機器は、それがＬＰＤのプロトコルに対応したプリンターであることを示している。また、「_ipp._tcp」のサービスタイプを有する機器は、それがＩＰＰ（Internet Printing Protocol）のプロトコルに対応したプリンターであることを示している。
【００７４】
ここでは、サービスタイプに「_printer._tcp」もしくは「_ipp._tcp」を有する機器をプリンターであると判断を行う、ものとする。表３で示されるプリンターの中で、前記条件に合致するのは「プリンターＹ」、「プリンターＺ」、「プリンターＡＹ」及び「プリンターＢＺ」である。
【００７５】
上記Ｓ７０３において、上記Ｓ７０２にてプリンターが一台も探索されなかった場合（Ｓ７０３でＮＯの場合）、ＯＳ２１０の印刷システム３０１は、本フローチャートの処理を終了する。
一方、上記Ｓ７０３において、上記Ｓ７０２にてプリンターが探索された場合（Ｓ７０３でＹＥＳの場合）、ＯＳ２１０の印刷システム３０１は、Ｓ７０４に処理を進める。
【００７６】
Ｓ７０４において、ＯＳ２１０の印刷システム３０１は、上記Ｓ７０３でプリンターであると判断した機器をプリンターとして、図９（Ｂ）の領域１１１１にリスト表示する。よって、領域１１１１には、接続されたネットワークに存在する実プリンターやＵＳＢ接続された実プリンター、さらに仮想プリンターの一覧がリストされる。リストされた仮想プリンターには、そのＯＳ２１０が実行されているホストコンピューターに作成された仮想プリンターのみならず、該ホストコンピューターが接続されたネットワークに存在する他のホストコンピューターで作成された仮想プリンターも含まれる。図９（Ｂ）の例では、ネットワークに接続された実プリンターＡＹ，ＢＺのプリンター名が、領域１１１４，領域１１１５に表示されている。また、ネットワーク１００上の他のホストコンピューター（１０１ｂとする）に作成されている仮想プリンターＹ，Ｚのプリンター名も、領域１１１２，領域１１１３に表示されている。なお、ＯＳ２１０の印刷システムがサポートするもの（特定のプロトコルに対応するもの）のみを、図９（Ｂ）の領域１１１１に表示するようにしてもよい。
【００７７】
次にＳ７０５において、ＯＳ２１０の印刷システム３０１は、ＯＳ２１０に登録するプリンターの選択処理を行う。図９（Ｂ）の領域１１１１でプリンターが選択された状態で追加ボタン１１１８がユーザに押下されると、これをＯＳ２１０の印刷システム３０１が検知する。そして、印刷システム３０１は、選択されたプリンターのプリンター名および名前１１１６と場所１１１７の情報をプリンターの登録画面（図９（Ｂ））から取得する。図９（Ｂ）の例では、「プリンターＹ」を選択されたプリンターのプリンター名、「プリンターＡ」をプリンターの名前、「本館３階」を場所の情報として取得する。
【００７８】
次にＳ７０６において、ＯＳ２１０の印刷システム３０１は、ＯＳ２１０へのプリンターの登録を行う。この処理は、上記Ｓ７０５で選択されたプリンターをＯＳ２１０へ登録する。接続先情報は上記Ｓ７０３の探索時に取得さしたＩＰアドレス（表３にて例示）とし、同じく上記Ｓ７０５で取得したプリンターの名前、場所の情報を基にＯＳ２１０への登録を行う。
【００７９】
登録されたプリンターは、接続先のＩＰアドレス、名前、場所がホストコンピューター１０１の外部メモリ２０９に記憶される。そして、ＵＩは図９（Ａ）に戻り、登録されたプリンターがプリンター一覧領域１１０１に追加されて表示される。この後、登録されたプリンターは、アプリケーション２１２から開くＯＳ２１０の印刷設定画面（不図示）から、印刷ジョブの送信先として選択ができ、特定のプロトコルを用いた印刷が可能となる。
【００８０】
以下、ネットワーク上の機器探索処理のシーケンスについて説明する。
図１０は、ネットワーク上の機器探索処理における、プリンターＡＹ１０３から自身の存在を通知する場合のシーケンス図である。
【００８１】
プリンターＡＹ１０３は、ネットワークに参加すると、Ｍｕｌｔｉｃａｓｔ ＤＮＳの技術を用いて、同一ネットワーク上の機器に対し、プリンターＡＹ１０３のＩＰアドレス８３１、機器名８３２、サービスタイプ８３３を通知する（８０１）。すなわち、Ｂｏｎｊｏｕｒプロトコルに則ってプリンター情報を通知する。前記サービスタイプとは、Ｂｏｎｊｏｕｒプロトコルにおける、機器がサポートしているサービスを示す値である。プリンターを示すサービスタイプの例を表４に示す。
【００８２】
【表４】
2020201802.tif 000006
【００８３】
プリンターＡＹ１０３からの通知を受けたホストコンピューター１０１ａは、プリンターＡＹ１０３のＩＰアドレス８３１、機器名８３２、サービスタイプ８３３をキャッシュ情報８２１に追加する（８０２）。キャッシュ情報とは、Ｂｏｎｊｏｕｒプロトコルにおける、ネットワークにかかる負荷を減らすための仕組みで使用する情報である。このキャッシュ情報に含まれる情報の例を表５に示す。
【００８４】
【表５】
2020201802.tif 000007
【００８５】
その後、ホストコンピューター１０１ａは、ネットワーク上の機器を探索する際、まずキャッシュ情報８２２から、サービスタイプに表４に記載するサービスタイプを持つ機器を検索する（８０３）。キャッシュ情報にプリンターＡＹ１０３の情報が含まれる場合、キャッシュ情報に含まれるプリンターＡＹ１０３の情報を以降の処理に使用する（８０４）。
【００８６】
さらに、ホストコンピューター１０１ａは、Ｍｕｌｔｉｃａｓｔ ＤＮＳの技術を用いて、一定間隔で同一ネットワーク上に存在する機器に対し、対応しているサービスの問い合わせを行う（８０５）。すなわち、Ｂｏｎｊｏｕｒプロトコルによるデバイス探索要求を送信する。なお、ホストコンピューター１０１ａは、この問い合わせと一緒にホストコンピューター１０１ａが既に知っている機器の一覧（キャッシュ情報８２２に基づく一覧）を同一ネットワーク上に存在する機器に対し通知する。
【００８７】
ホストコンピューター１０１ａからの問い合わせを受けたプリンターＡＹ１０３は、ホストコンピューター１０１ａが既に知っている機器の一覧８２２に、プリンターＡＹ１０３が含まれているか確認する（８０６）。この例では、プリンターＡＹ１０３は、ホストコンピューター１０１ａが既に知っている機器の一覧８２２に、プリンターＡＹ１０３が含まれていると判断し、ホストコンピューター１０１ａの問い合わせに対して応答しない（８０７）。
【００８８】
図１１は、ネットワーク上の機器探索処理における、ホストコンピューター１０１ａからの探索に対して、プリンターＡＹ１０３からＩＰアドレス８３１、機器名８３２、サービスタイプ８３３を通知する場合のシーケンス図である。
【００８９】
ホストコンピューター１０１ａは、キャッシュ情報９７１からサービスタイプに表４に記載したサービスタイプを持つ機器を検索する（９５１）。ホストコンピューター１０１ａは、キャッシュ情報９７１に該当する機器が存在しない場合、Ｍｕｌｔｉｃａｓｔ ＤＮＳの技術を用いて、同一ネットワーク上に存在する機器に対し、対応しているサービスの問い合わせを行う（９５２）。すなわち、Ｂｏｎｊｏｕｒプロトコルによるデバイス探索要求を送信する。なお、該当する機器が存在した場合においても、ホストコンピューター１０１ａは、上記図１０の８０５に示す、一定間隔で同一ネットワーク上に存在する機器に対し、対応しているサービスの問い合わせを行う。なお、ホストコンピューター１０１ａは、この問い合わせと一緒にホストコンピューター１０１ａが既に知っている機器の一覧９７１を同一ネットワーク上に存在する機器に対し通知する。
【００９０】
プリンターＡＹ１０３は、ホストコンピューター１０１ａが既に知っている機器の一覧（キャッシュ情報９７１に基づく一覧）に、プリンターＡＹ１０３が含まれているか確認する（９５３）。この例では、プリンターＡＹ１０３は、ホストコンピューター１０１ａが既に知っている機器の一覧９７１に、プリンターＡＹ１０３が含まれていないと判断する。そして、プリンターＡＹ１０３は、Ｍｕｌｔｉｃａｓｔ ＤＮＳの技術を用いて、同一ネットワーク上に存在する機器に対し、プリンターＡＹ１０３のＩＰアドレス８３１、機器名８３２、サービスタイプ８３３を通知する（９５４）。すなわち、Ｂｏｎｊｏｕｒプロトコルに則ってプリンター情報を応答する。
【００９１】
そして、ホストコンピューター１０１ａは、プリンターＡＹ１０３のＩＰアドレス８３１、機器名８３２、サービスタイプ８３３をキャッシュ情報９７１に追加する（９５６）。
ホストコンピューター１０１ａは、プリンターＡＹ１０３から受け取った情報を以降の処理に使用する（９５７）。
【００９２】
図１２は、ホストコンピューターの内部に作成された仮想プリンターに対する探索処理のシーケンス図である。
仮想プリンターＡ３１１と仮想プリンターＢ３１２は、ホストコンピューター１０１ａの内部に作成されている。ここでは、仮想プリンターＡ３１１は、仮想プリンターＡ３１１から自身の存在を通知する。また、仮想プリンターＢ３１２は、ホストコンピューター１０１ａからの探索に対して自身の存在を通知する例について説明する。
【００９３】
仮想プリンターＡ３１１は、Ｍｕｌｔｉｃａｓｔ ＤＮＳの技術を用いて、ホストコンピューター１０１ａ対し、仮想プリンターＡ３１１のＩＰアドレス２０３１、機器名２０３２、サービスタイプ２０３３を通知する（２００１）。すなわち、Ｂｏｎｊｏｕｒプロトコルに則ってプリンター情報を通知する。
【００９４】
仮想プリンターＡ３１１からの通知を受けたホストコンピューター１０１ａは、仮想プリンターＡ３１１のＩＰアドレス２０３１、機器名２０３２、サービスタイプ２０３３をキャッシュ情報（２０２１）に追加する（２００２）。
【００９５】
その後、ホストコンピューター１０１ａは、ホストコンピューター１０１ａ内の仮想プリンターを探索する際、まずキャッシュ情報２０２２から、サービスタイプに表４に記載したサービスタイプを持つ機器を検索する（２００３）。キャッシュ情報に仮想プリンターＡ３１１の情報が含まれる場合、キャッシュ情報に含まれる仮想プリンターＡ３１１の情報を以降の処理に使用する（２００４）。
【００９６】
さらに、ホストコンピューター１０１ａは、Ｍｕｌｔｉｃａｓｔ ＤＮＳの技術を用いて、一定間隔でホストコンピューター１０１ａ内の仮想プリンターに対し、対応しているサービスの問い合わせを行う（２００５）。すなわち、Ｂｏｎｊｏｕｒプロトコルによるデバイス探索要求を送信する。ホストコンピューター１０１ａは、問い合わせと一緒にホストコンピューター１０１ａが既に知っている機器の一覧（キャッシュ情報２０２２に基づく一覧）をホストコンピューター１０１ａ内の仮想プリンターに対し通知する。
【００９７】
ホストコンピューター１０１ａからの問い合わせを受けた仮想プリンターＡ３１１は、ホストコンピューター１０１ａが既に知っている機器の一覧２０２２に、仮想プリンターＡ３１１が含まれているか確認する（２００６）。仮想プリンターＡ３１１は、ホストコンピューター１０１ａが既に知っている機器の一覧２０２２に、仮想プリンターＡ３１１が含まれていると判断し、ホストコンピューター１０１ａの問い合わせに対して応答しない（２００７）。
【００９８】
ホストコンピューター１０１ａからの問い合わせを受けた仮想プリンターＢ３１２は、ホストコンピューター１０１ａが既に知っている機器の一覧２０２２に、仮想プリンターＢ３１２が含まれているか確認する（２００８）。仮想プリンターＢ３１２は、ホストコンピューター１０１ａが既に知っている機器の一覧２０２２に、仮想プリンターＢ３１２が含まれていないと判断する。そして、仮想プリンターＢ３１２は、Ｍｕｌｔｉｃａｓｔ ＤＮＳの技術を用いて、ホストコンピューター１０１ａ対し、仮想プリンターＢ３１２のＩＰアドレス２０４１、機器名２０４２、サービスタイプ２０４３を通知する（２００９）。すなわち、Ｂｏｎｊｏｕｒプロトコルに則ってプリンター情報を応答する。
【００９９】
ホストコンピューター１０１ａは、仮想プリンターＢ３１２のＩＰアドレス２０４１、機器名２０４２、サービスタイプ２０４３をキャッシュ情報２０２２に追加する（２０１０）。
【０１００】
図１３（Ａ）は、仮想プリンターの印刷実行時の処理の一例を示すフローチャートである。
Ｓ１８０１において、仮想プリンター（例えば仮想プリンターＡ３１１）は、ＯＳ２１０における印刷システム３０１から印刷ジョブを受信すると、Ｓ１８０２に処理を進める。
【０１０１】
Ｓ１８０２において、仮想プリンターは、上記Ｓ１８０１で受信した印刷ジョブを、ジョブ生成部３０３が認識できる形式に変換する。ここで、ジョブ生成部３０３が認識できる形式とは、例えばＰＤＦ形式である。
次にＳ１８０３において、仮想プリンターは、上記Ｓ１８０２で変換後の印刷ジョブを、ジョブ生成部３０３に送信し、本フローチャートの処理を終了する。
【０１０２】
図１３（Ｂ）は、ジョブ生成部３０３の印刷実行時の処理の一例を示すフローチャートである。
Ｓ２２０１において、仮想プリンターサービス２１１におけるジョブ生成部３０３は、仮想プリンター（例えば仮想プリンターＡ３１１）から印刷ジョブを受信すると、Ｓ２２０２に処理を進める。
【０１０３】
Ｓ２２０２において、ジョブ生成部３０３は、上記Ｓ２２０１で受信した印刷ジョブを、上記印刷ジョブの送信元の仮想プリンターが紐付けされている実プリンター（例えばプリンターＡＹ１０３）が認識（解釈）できる形式に変換を行う。ここで、実プリンターが認識できる形式とは、例えばラスター形式である。
【０１０４】
次にＳ２２０３において、ジョブ生成部３０３は、上記Ｓ２２０２で変換後の印刷ジョブを、上記印刷ジョブの送信元の仮想プリンターが紐付けされている実プリンターに送信し、本フローチャートの処理を終了する。
【０１０５】
次に、仮想プリンターサービス２１１のファイル構成の概要について示す。
図１４は、仮想プリンターサービス２１１のファイル構成の一例を示す図である。ホストコンピューター１０１に仮想プリンターサービス２１１がインストールされると、図１４に示すような構成で、仮想プリンターサービス２１１の関連ファイルが、ホストコンピューター１０１の外部メモリ２０９に保存される。
【０１０６】
仮想プリンターサービス２１１の関連ファイルは、すべてVirtualPrinterService.appフォルダ１２０１のContentsフォルダ１２０２の中に格納されている。その直下に、実行モジュールの格納場所であるApplicationフォルダ１２０３と、リソース類の格納場所であるResourcesフォルダ１２１０が存在する。
【０１０７】
Applicationフォルダ１２０３の中には、仮想プリンターサービス２１１の本体プログラムが格納されたVirtual Printer Serviceフォルダ１２０４が存在する。仮想プリンターサービス２１１の処理は、このVirtual Print Serviceフォルダ１２０４の下のプログラムがＲＡＭ２０２にロードされてＣＰＵ２０１によって実行されることで実現される。
【０１０８】
さらに、Applicationフォルダ１２０３には、Driverフォルダ１２０５が存在する。
Driverフォルダ１２０５の下には、各種ユーティリティアプリケーション（以下「ユーティリティ」）が格納されたUtilitiesフォルダ１２０６が存在する。本実施形態では、ユーティリティとして、PrinterUtility.app１２０７、StatusMonitor.app１２０８、AutoShutdownTool.app１２０９が、Utilitiesフォルダ１２０６に格納されている。これらユーティリティは、プリンターに対する付加機能を提供するアプリケーションプログラムであり、プリンタードライバーを使用した印刷システムで使用されているものと同様のものである。
【０１０９】
例えばPrinterUtility.app（プリンターユーティリティ）１２０７は、主にオフィス用プリンター（実プリンターにＵＩパネルを供えている）のためのユーティリティであり、プリンター情報の表示機能とリモートＵＩの表示機能を有する。
また、StatusMonitor.app（ステータスモニタ）１２０８は、主に実プリンターにＵＩパネルがない機種のためのユーティリティであり、用紙やトナーがなくなった時の状態表示や、現在出力中の印刷ジョブの情報などを表示する機能を有する。
また、AutoShutdownTool.app（オートシャットダウンツール）１２０９は、実プリンターを自動でシャットダウンさせるためのユーティリティである。
【０１１０】
また、Resourcesフォルダ１２１０の下には、Driverフォルダ１２１１と、PPDsフォルダ１２１３が存在する。
Driverフォルダ１２１１には、機種ごとに外観をアイコン化したファイルを格納したIconsフォルダ１２１２が存在する。
【０１１１】
また、PPDsフォルダ１２１３には、機種ごとの機種依存情報を記述したＰＰＤファイルと呼ばれるテキストファイルが対応する機種数分格納されている（１２１４〜１２１６）。図１４の例では、プリンターＡＹ１０３用の機種依存情報を記述したＰＰＤファイルが、PrinterAY.ppdファイル１２１４である。また、プリンターＢＺ１０４用の機種依存情報を記述したＰＰＤファイルが、PrinterBZ.ppdファイル１２１５である。また、プリンターＣＸ用の機種依存情報を記述したＰＰＤファイルが、PrinterCX.ppdファイル１２１６である。ＰＰＤファイルは、プリンタードライバーの構成ファイルとしても使われているものであり、プリンタードライバー用の構成ファイルを流用して作成可能である。
【０１１２】
仮想プリンターサービス２１１の構成ファイルの中には、二つのDriverフォルダ（１２０５、１２１１）が存在する。実際には、仮想プリンターサービス２１１は、プリンタードライバーとは直接関係のないアプリケーションであるが、プリンタードライバーで使用しているファイルを極力流用することにより開発コストを下げることができる。プリンタードライバーが機種ごとに存在するのに対して、仮想プリンターサービス２１１は複数機種に対応している。このため、仮想プリンターサービス２１１は、複数機種分のアイコン、ＰＰＤファイル及びユーティリティを全て、構成ファイルの中に保持している。
【０１１３】
なお、図１４に示したフォルダやファイルの内容は、あくまで本発明を説明するためのものであり、実際の仮想プリンターサービス２１１の構成ファイルは、これ以外にも多数存在する。本実施形態では、その他の構成ファイルについての説明は割愛する。
【０１１４】
図１５（Ａ）は、第１実施形態における仮想プリンターサービス２１１のＵＩの一例を示す図である。
上述した図７（Ａ）ではユーザによって「プリンターＡ」の仮想プリンターが選択された時の領域１００６について説明を行った。図７（Ａ）のように、「プリンターＡ」が選択された場合には、領域１００６に「ステータスモニタの起動」ボタン１００７が表示されていた。一方、「プリンターＢ」の仮想プリンターが選択された時の右側の領域に表示されるＵＩを示したのが図１５（Ａ）の領域１００６である。
【０１１５】
プリンターＢでは、「プリンター情報」ボタン１３１１、及び、「リモートＵＩの表示」ボタン１３１２が表示される。この「プリンター情報」ボタン１３１１、「リモートＵＩの表示」ボタン１３１２、及び、図７（Ａ）の「ステータスモニタの起動」ボタン１００７は、それぞれ異なるユーティリティを起動するためのユーザインタフェースに対応する。ここで、「プリンターＡ」の接続先はプリンターＡＹ１０３、「プリンターＢ」の接続先はプリンターＢＺ１０４であるとする。プリンターＡＹ１０３とプリンターＢＺ１０４では、機種が異なるため、必要となるユーティリティも異なる。よって、仮想プリンターである「プリンターＡ」と「プリンターＢ」に関するＵＩでも、それぞれの機種に応じたユーティリティの起動ボタンが表示されている。なお、仮想プリンターの接続先の実プリンターの機種に応じて異なるユーティリティの起動ボタンを切り換え表示する処理については、図１６を用いて後述する。
【０１１６】
図１５（Ｂ）、図７のステータスモニタの起動ボタン１００７をユーザが押下した際に表示されるステータスモニタのＵＩの一例を示す図である。
上述したように、ステータスモニタは、主に実プリンターにＵＩパネルがない機種のためのユーティリティである。
【０１１７】
領域１４０１には、例えば、用紙やトナーがなくなった時などの状態表示が行われる。
領域１４０２には、現在出力中の印刷ジョブの情報のうち、ドキュメント名とユーザ名が表示される。
ユーザは、印刷中止ボタン１４０３を押下することで、印刷中の印刷ジョブを中止することもできる。これらの動作は、既存のプリンタードライバーと連携して動作するユーティリティと同様である。
【０１１８】
次に、仮想プリンターサービス２１１が仮想プリンターごとに、ＵＩにおけるユーティリティアプリケーション（以下「ユーティリティ」）の起動ボタン表示を切り替える処理について説明する。
図１６は、仮想プリンターサービス２１１が仮想プリンターごとにＵＩにおけるユーティリティの起動ボタン表示を切り替える処理の一例を示すフローチャートである。このフローチャートの処理は、仮想プリンターサービス２１１の本体プログラムがＲＡＭ２０２にロードされてＣＰＵ２０１によって実行されることで実現される。
【０１１９】
仮想プリンターサービス２１１は、仮想プリンターサービスのメインＵＩ（図７（Ａ））が開かれると、Ｓ１５０１に処理を進める。なお、仮想プリンターサービスのメインＵＩは、仮想プリンターサービス２１１が起動した場合やユーザ操作に応じて開かれる。
Ｓ１５０１において、仮想プリンターサービス２１１は、仮想プリンターサービスのメインＵＩに、現在登録されている（仮想プリンターサービス２１１が管理している）仮想プリンター一覧を表示する。
【０１２０】
次にＳ１５０２において、仮想プリンターサービス２１１は、ユーザによる仮想プリンターの選択を受け付ける。なお、起動直後においては仮想プリンター一覧の一番先頭の仮想プリンターを予め自動で選択状態にしてもよい。
【０１２１】
次にＳ１５０３において、仮想プリンターサービス２１１は、上記Ｓ１５０２で選択された仮想プリンターの機種（仮想プリンターの接続先の実プリンターの機種）を特定する。機種の特定の方法については、図７、図８で示した仮想プリンターの追加（生成）時にＵＳＢもしくはネットワーク接続された実プリンターの機種名などの識別子を保存しておき、その識別子を使用することで機種の特定が可能である。
【０１２２】
次にＳ１５０４において、仮想プリンターサービス２１１は、上記Ｓ１５０３で特定した機種に応じたＰＰＤファイルを選択する。図１４に示したように、ＰＰＤファイルは仮想プリンターサービス２１１の構成ファイルの中に機種ごとに存在するため、その中から該当する機種のＰＰＤを選択し、該選択したＰＰＤファイルを読み込む。
【０１２３】
次にＳ１５０５において、仮想プリンターサービス２１１は、上記Ｓ１５０４で選択したＰＰＤファイルの記述から、上記Ｓ１５０３で選択した仮想プリンターの接続先の実プリンターがステータスモニタの対応機種かどうかを判定する。なお、ＰＰＤファイルの内容については、図１７を用いて後述する。
【０１２４】
そして、ステータスモニタの対応機種である場合（Ｓ１５０５でＹＥＳの場合）、仮想プリンターサービス２１１は、Ｓ１５０６に処理を進める。
Ｓ１５０６において、仮想プリンターサービス２１１は、「ステータスモニタの起動」ボタンを、メインＵＩの領域１００６に表示し、Ｓ１５０７に処理を進める。
一方、ステータスモニタの対応機種でない場合（Ｓ１５０５でＮＯの場合）、仮想プリンターサービス２１１は、「ステータスモニタの起動」ボタンを表示することなくＳ１５０７に処理を進める。
【０１２５】
Ｓ１５０７において、仮想プリンターサービス２１１は、上記Ｓ１５０４で選択したＰＰＤファイルの記述から、上記Ｓ１５０３で選択した仮想プリンターの接続先の実プリンターがオートシャットダウンツールの対応機種かどうかを判定する。
【０１２６】
そして、オートシャットダウンツールの対応機種である場合（Ｓ１５０７でＹＥＳの場合）、仮想プリンターサービス２１１は、Ｓ１５０８に処理を進める。
Ｓ１５０８において、仮想プリンターサービス２１１は、「オートシャットダウンツールの起動」ボタンを、メインＵＩの領域１００６に表示し、Ｓ１５０９に処理を進める。
一方、オートシャットダウンツールの対応機種でない場合（Ｓ１５０７でＮＯの場合）、仮想プリンターサービス２１１は、「オートシャットダウンツールの起動」ボタンを表示することなくＳ１５０９に処理を進める。
【０１２７】
次にＳ１５０９において、仮想プリンターサービス２１１は、上記Ｓ１５０４で選択したＰＰＤファイルの記述から、上記Ｓ１５０３で選択した仮想プリンターの接続先の実プリンターがプリンターユーティリティ対応機種かどうかを判定する。
【０１２８】
そして、プリンターユーティリティ対応機種でない場合（Ｓ１５０９でＮＯの場合）、仮想プリンターサービス２１１は、そのまま本フローチャートの処理を終了する。
【０１２９】
一方、プリンターユーティリティ対応機種である場合（Ｓ１５０９でＹＥＳの場合）、仮想プリンターサービス２１１は、Ｓ１５１０に処理を進める。
Ｓ１５１０において、仮想プリンターサービス２１１は、「プリンター情報」ボタンを、メインＵＩの領域１００６に表示する。
さらにＳ１５１１において、仮想プリンターサービス２１１は、上記Ｓ１５０３で選択した仮想プリンターの接続先の実プリンターとの接続形態がリモートＵＩを表示可能なネットワーク接続であるかどうかを判定する。
【０１３０】
そして、実プリンターとの接続形態がリモートＵＩを表示可能なネットワーク接続であるである場合（Ｓ１５１１でＹＥＳの場合）、仮想プリンターサービス２１１は、Ｓ１５１２に処理を進める。
Ｓ１５１２において、仮想プリンターサービス２１１は、「リモートＵＩの表示」ボタンを、メインＵＩの領域１００６に表示し、本フローチャートの処理を終了する。
【０１３１】
一方、実プリンターとの接続形態がリモートＵＩを表示可能なネットワーク接続でない場合（Ｓ１５１１でＮＯの場合）、仮想プリンターサービス２１１は、「リモートＵＩの表示」ボタンを表示することなく本フローチャートの処理を終了する。
プリンターユーティリティは、プリンター情報の表示とリモートＵＩの表示の２つの機能を有している。そのため、プリンターユーティリティ対応機種である場合には、Ｓ１５１０〜Ｓ１５１２の処理を行うが、その他にも対象のユーティリティの持つ機能によって最適なボタン配置と処理フローを取ることができる。
【０１３２】
仮想プリンターサービス２１１は、複数のプリンター機種に対応する仮想プリンターを生成し管理する。このような仮想プリンターサービス２１１でも、仮想プリンターの接続先の実プリンターの機種に応じたＰＰＤファイルを参照することで、仮想プリンターごとに適切なユーティリティの起動ボタンをＵＩ表示することが可能となる。
【０１３３】
次に図１７を用いてＰＰＤファイルの内容について説明する。
図１７（Ａ）は、プリンターＡＹ１０３のＰＰＤファイルの一例を示す図である。
図１７（Ｂ）は、プリンターＢＺ１０４のＰＰＤファイルの一例を示す図である。
【０１３４】
図１７（Ａ）において、FormatVersion１６０１は、ＰＰＤファイルのフォーマットのバージョンを示す。
FileVersion１６０２は、本ＰＰＤファイルのバージョンを示す。
LanguageVersion１６０３は、本ＰＰＤファイルで使用されている言語を示す。
LanguageEncoding１６０４は、本ＰＰＤファイルで使用されているエンコードを示す。
【０１３５】
PCFileName１６０５は、本ＰＰＤファイルのファイル名を示す。
Manufacture１６０６は、本ＰＰＤファイルの開発元を示す。
Product１６０７は、プリンターの製品名を示す。
【０１３６】
APPrinterUtilityPath１６０８は、本ＰＰＤファイルのサポートする機種が対応するユーティリティのアプリケーションへのパスを示している。ユーティリティのアプリケーションへのパスは、図１４で説明したアプリケーションに対するパスである。図１７（Ａ）の例では、プリンターＡＹ１０３がステータスモニタに対応する機種であるので、APPrinterUtilityPath１６０８に対してStatusMonitor.appに対するパスが記述されている。上述した図１５のＳ１５０５において、仮想プリンターサービス２１１がステータスモニタの対応機種かどうかを判別する際に確認するのが、このAPPrinterUtilityPath１６０８である。
【０１３７】
APPrinterIconPath１６０９は、プリンターＡＹ１０３を識別しやすくするためのアイコンファイルへのパスである。ここで指定されたアイコンは、例えば図７（Ａ）の領域１００６に１００８のように表示される。
【０１３８】
図１７（Ｂ）におけるプリンターＢＺ１０４のＰＰＤファイルについても図１７（Ａ）と同様であるので説明は省略する。
なお、図１７（Ｂ）のAPPrinterUtilityPath１６１８は、図１７（Ａ）のAPPrinterUtilityPath１６０８と異なり、プリンターＢＺ１０４が対応するプリンターユーティリティのパスが記載されている。これはプリンターＢＺ１０４がステータスモニタではなくプリンターユーティリティに対応する機種であることを示している。
【０１３９】
このようなＰＰＤファイルに基づき、仮想プリンターサービス２１１は、複数のユーティリティのうち、仮想プリター覧で選択された仮想プリンターの接続先の画像形成装置の機種が対応するユーティリティの起動ボタンをＵＩに表示する。
【０１４０】
次に、図７（Ａ）や図１５（Ａ）で示したユーティリティの表示ボタン（例えば１００７、１３１１、１３１２等）が押下された時の仮想プリンターサービス２１１の処理について説明する。
図１８は、仮想プリンターサービスのメインＵＩのユーティリティの起動ボタンが押下された場合の仮想プリンターサービス２１１の処理の一例を示すフローチャートである。このフローチャートの処理は、仮想プリンターサービス２１１の本体プログラムがＲＡＭ２０２にロードされてＣＰＵ２０１によって実行されることで実現される。
【０１４１】
まずＳ１７０１において、仮想プリンターサービス２１１は、メインＵＩの領域１００６に表示される起動ボタン（例えば１００７、１３１１、１３１２等）のユーザによる押下を受け付け、Ｓ１７０２に処理を進める。
【０１４２】
Ｓ１７０２において、仮想プリンターサービス２１１は、上記Ｓ１７０１で押下された起動ボタンが「ステータスモニタの起動」ボタンかどうかを確認する。そして、「ステータスモニタの起動」ボタンの場合（Ｓ１７０２でＹＥＳの場合）、仮想プリンターサービス２１１は、Ｓ１７０３に処理を進める。
【０１４３】
Ｓ１７０３において、仮想プリンターサービス２１１は、メインＵＩのプリンター一覧領域１００１で選択されている仮想プリンターの接続先の実プリンターのキュー情報を取得する。なお、キュー情報とはキューの名称や、例えばネットワーク接続であればプリンターのＩＰアドレスなどを指す。
次にＳ１７０４において、仮想プリンターサービス２１１は、上記Ｓ１７０３で取得したキュー情報を指定してステータスモニタにＵＩ表示を指示する。すでにステータスモニタが起動中の場合、ステータスモニタは、このタイミングで与えられたキュー情報を基に実デバイスの状態を表示する画面をＵＩ表示する。ステータスモニタが起動されていない場合には、ステータスモニタが起動される。起動したステータスモニタは、指定さられたキュー情報を基に実デバイスの状態を表示する画面をＵＩ表示する。
【０１４４】
また、上記Ｓ１７０２において、上記Ｓ１７０１で押下された起動ボタンが「ステータスモニタの起動」ボタンでない場合（Ｓ１７０２でＮＯの場合）、仮想プリンターサービス２１１は、Ｓ１７０５に処理を進める。
【０１４５】
Ｓ１７０５において、仮想プリンターサービス２１１は、上記Ｓ１７０１で押下された起動ボタンが「プリンター情報」ボタンかどうかを確認する。そして、「プリンター情報」ボタンの場合（Ｓ１７０５でＹＥＳの場合）、仮想プリンターサービス２１１は、Ｓ１７０６に処理を進める。
【０１４６】
Ｓ１７０６において、仮想プリンターサービス２１１は、メインＵＩのプリンター一覧領域１００１で選択されている仮想プリンターの接続先の実プリンターのキュー情報を取得する。
次にＳ１７０７において、仮想プリンターサービス２１１は、上記Ｓ１７０６で取得したキュー情報を指定してプリンターユーティリティ（PrinterUtillity.app）を起動する。起動したプリンターユーティリティは、指定されたキュー情報を基に実プリンターのプリンター情報をＵＩ表示する。
【０１４７】
また、上記Ｓ１７０５において、上記Ｓ１７０１で押下された起動ボタンが「プリンター情報」ボタンでない場合（Ｓ１７０５でＮＯの場合）、仮想プリンターサービス２１１は、Ｓ１７０８に処理を進める。
【０１４８】
Ｓ１７０８において、仮想プリンターサービス２１１は、上記Ｓ１７０１で押下された起動ボタンが「リモートＵＩの表示」ボタンかどうかを確認する。そして、「リモートＵＩの表示」ボタンの場合（Ｓ１７０８でＹＥＳの場合）、仮想プリンターサービス２１１は、Ｓ１７０９に処理を進める。
【０１４９】
Ｓ１７０９において、仮想プリンターサービス２１１は、メインＵＩのプリンター一覧領域１００１で選択されている仮想プリンターの接続先の実プリンターのＵＲＬ情報を取得する。
次にＳ１７１０において、仮想プリンターサービス２１１は、上記Ｓ１７０９で取得したＵＲＬ情報を指定してＷｅｂブラウザを起動する。起動したＷｅｂブラウザは、指定されたＵＲＬ情報を基に実プリンターのサーバー機能にアクセスする。これにより、Ｗｅｂブラウザ上にリモートＵＩが表示される。
【０１５０】
また上記Ｓ１７０８において、上記Ｓ１７０１で押下された起動ボタンが「リモートＵＩの表示」ボタンでない場合（Ｓ１７０８でＮＯの場合）、仮想プリンターサービス２１１は、上記Ｓ１７０１で押下された起動ボタンに対応する処理を行う（Ｓ１７１１）。例えば、上記Ｓ１７０１で押下された起動ボタンが「オートシャットダウンツールの起動」の場合、仮想プリンターサービス２１１は、メインＵＩのプリンター一覧領域１００１で選択されている仮想プリンターの接続先の実プリンターのＩＰアドレスを取得する。さらに、仮想プリンターサービス２１１は、上記ＩＰアドレスを指定してオートシャットダウンツール（AutoShutdownTool.app）を起動する。
【０１５１】
以上のようにして、仮想プリンターサービス２１１は、仮想プリンターの接続先の実プリンターの機種によって異なるユーティリティのボタンをＵＩ表示することができる。さらに、ユーティリティのボタンが押下された場合、押下されたボタンに対応するユーティリティを起動したりＵＩ表示の指示をしたりしながら、適切な機能をユーザに提供することができる。
【０１５２】
以上のように、選択された仮想プリンターの接続先の実プリンターの機種に応じて異なるユーティリティの起動ボタンを切り換えて表示することができる。これにより、プリンタードライバーを使用しない印刷システムにおいても、仮想プリンターの接続先の画像形成装置の機種ごとに異なるユーティリティをユーザに提供することができる。
【０１５３】
〔第２実施形態〕
上記第１実施形態では１つの仮想プリンターにつき１つのユーティリティが関連づいている例について説明した。第２実施形態では１つの仮想プリンターにつき複数のユーティリティが関連づいている例について説明する。
【０１５４】
図１９は、第２実施形態における仮想プリンターサービス２１１のＵＩの一例を示す図である。
上記第１実施例１では、図７（Ａ）を用いて、ユーザによって仮想プリンター「プリンターＡ」が選択された場合の領域１００６について説明した。また、図１５（Ａ）を用いて、ユーザによって仮想プリンター「プリンターＢ」が選択された場合の領域１００６について説明した。第２実施形態では、仮想プリンター「プリンターＣ」が選択された場合の領域１００６に表示されるＵＩの例を図１９に示す。なお、「実プリンターＣＸ」に対して仮想プリンター「プリンターＣ」を作成する手順は第１実施形態と同等であるため説明を割愛する。
【０１５５】
図１９のように、領域１００６には、ステータスモニタの起動ボタン１００７と、オートシャットダウンツールの起動ボタン１８１１の２つのボタンが表示されている。これらのボタンは、それぞれ別のユーティリティアプリケーションの起動ボタンである。
【０１５６】
この例では、実プリンター「プリンターＣＸ」の機種に対応するＰＰＤファイルに、２つのユーティリティアプリケーション（StatusMonitor.app、AutoShutdownTool.app）が記載されているものとする。この場合、仮想プリンターサービス２１１は、図１６の処理により、図１９のように２つのユーティリティアプリケーションの起動ボタン（ステータスモニタの起動ボタン１００７、オートシャットダウンツールの起動ボタン１８１１）を表示する。
【０１５７】
図２０は、第２実施形態におけるプリンターＣＸのＰＰＤファイルの一例を示す図である。
図２０において、１９０１〜１９０７までは、図１７の１６０１〜１６０７と同様のため説明を割愛する。
なお、図２０のＰＰＤファイルでは、APPrinterUtilityPath（１９０８）にステータスモニタのパスが記載されている。また、同時にAPPrinterUtilityPath2（１９０９）にオートシャットダウンツールのパスが記載されている。
【０１５８】
仮想プリンターの接続先のプリンターが２つ以上のユーティリティに対応している場合、図２０のような２つ以上のユーティリティのパスの指定を含むＰＰＤファイルを用意する。これにより、メインＵＩの領域１０６に２つ以上の起動ボタンを表示することができ、いずれのユーティリティもユーザによる起動可能にすることができる。
【０１５９】
以上のように、各実施形態では、仮想プリンター一覧等から仮想プリンターが選択されると、選択された仮想プリンターの接続先の画像形成装置の機種が対応するユーティリティを特定し、該ユーティリティの起動ボタンを仮想プリンターのＵＩ画面に表示する。すなわち、選択された仮想プリンターの接続先の画像形成装置の機種に応じて異なるユーティリティの起動ボタンを表示するように、仮想プリンターのＵＩ画面の表示を切り換える。これにより、プリンタードライバーを使用しない印刷システムにおいても画像形成装置の機種ごとに異なるユーティリティアプリケーションをユーザが利用できるようにすることができる。
【０１６０】
なお、上述した例では、各種ユーティリティが、例えば、図１４のように、仮想プリンターサービス２１１の関連ファイルとして、ホストコンピューター１０１に保存されている場合について説明した。しかし、ユーティリティは、ホストコンピューター１０１が通信可能なサーバー（クラウドでもよい）上にあってもよい。この場合、APPrinterUtilityPath（１６０８，１６１８）やAPPrinterUtilityPath2（１９０９）等には、上述したサーバー上に配置されたユーティリティのＵＲＬ等が記載されるものとする。
【０１６１】
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
また、上記各実施例を組み合わせた構成も全て本発明に含まれるものである。
【０１６２】
（その他の実施例）
本発明は、上述の実施例の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピューターにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
また、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器からなる装置に適用してもよい。
本発明は上記実施例に限定されるものではなく、本発明の趣旨に基づき種々の変形（各実施例の有機的な組合せを含む）が可能であり、それらを本発明の範囲から除外するものではない。即ち、上述した各実施例及びその変形例を組み合わせた構成も全て本発明に含まれるものである。
【符号の説明】
【０１６３】
１００    ネットワーク
１０１ａ、１０１ｂ    ホストコンピューター
１０３、１０４    プリンター
２１０ａ、２１０ｂ    ＯＳ
２１１ａ、２１１ｂ    仮想プリンターサービス
３０１ａ、３０１ｂ    印刷システム
３０２ａ、３０２ｂ    サーバー成部
３０３ａ、３０３ｂ    ジョブ生成部
３１１、３１２、３６１、３６２    仮想プリンター
【図１】
2020201802.tif 000008
【図２】
2020201802.tif 000009
【図３】
2020201802.tif 000010
【図４】
2020201802.tif 000011
【図５】
2020201802.tif 000012
【図６】
2020201802.tif 000013
【図７】
2020201802.tif 000014
【図８】
2020201802.tif 000015
【図９】
2020201802.tif 000016
【図１０】
2020201802.tif 000017
【図１１】
2020201802.tif 000018
【図１２】
2020201802.tif 000019
【図１３】
2020201802.tif 000020
【図１４】
2020201802.tif 000021
【図１５】
2020201802.tif 000022
【図１６】
2020201802.tif 000023
【図１７】
2020201802.tif 000024
【図１８】
2020201802.tif 000025
【図１９】
2020201802.tif 000026
【図２０】
2020201802.tif 000027