以下、本発明の実施形態の詳細について図面を参照して説明する。
<実施形態1>
図1は本発明の実施形態1のプリンタ制御システムの機能構成を示すブロック図である。
このプリンタ制御システムは、ホストコンピュータ100とプリンタA200から構成されている。また、プリンタB400は、プリンタA200と同機種のプリンタである。両者の間はUSBケーブル300により接続され、プリンタA200とプリンタB400は交互に切り替えて接続される。
尚、実施形態1では、プリンタA200とプリンタB400を交互に切り替えて接続する場合を例に挙げて説明するが、3台以上の同機種のプリンタを適宜切り替えて接続する場合についても、本発明は適用できる。
ホストコンピュータ100は、ホストコンピュータ100全体の動作を制御する中央演算処理部101と、記憶部102と、プリンタ制御部103と、インターフェース制御部104と、入力部105と、ディスプレイ表示部106とを備えている。
プリンタ制御部103は、OSやユーティリティツール(ソフトウェア)で実現され、ハードディスク、CD−ROM等の記憶媒体である記憶部102に格納されている。
尚、ホストコンピュータ100は、パーソナルコンピュータに代表される汎用コンピュータに搭載される標準的な構成要素を有しており、これらの構成要素によって、ホストコンピュータ100が実現される。この構成要素には、例えば、CPU、RAM、ROM、ハードディスク、外部記憶装置、ネットワークインターフェース、ディスプレイ、キーボード、マウス等がある。
ここで、ホストコンピュータ100の構成要素の一例について、図2を用いて説明する。
図2は本発明の実施形態1のホストコンピュータの構成要素を示す図である。
図2において、ホストコンピュータ100は、ハードウェア構成要素として、例えば、中央演算処理装置(CPU)1101、RAM1102、ROM1103、LANアダプタ1104、ビデオアダプタ1105を有している。また、ホストコンピュータ100は、マウス1106、キーボード1107、ハードディスク1108、CD−ROMドライブ1109、USBインターフェース1110を有している。そして、これらの各種構成要素は、システムバス1100を介して相互に接続されている。
ここで、システムバス1100は、例えば、PCIバス、AGPバス、メモリバス等を意味する。また、図2では、各バス間の接続用チップやキーボードインターフェースや、いわゆるSCSIやATAPIのような入出力用インターフェースを省略している。
尚、中央演算処理装置1101は、図1の中央演算処理部101を実現する。また、RAM1102、ROM1103、ハードディスク1108及びCD−ROMドライブ1109は、図1の記憶部102を実現する。また、LANアダプタ1104、ビデオアダプタ1105及びUSBインターフェース1110は、図1のインターフェース制御部104を実現する。また、マウス1106及びキーボード1107は、図1の入力部105を実現する。
中央演算処理装置1101は、オペレーティングシステムのプログラムやアプリケーションプログラムに基づいて、四則演算や比較演算等の各種演算、ハードウェアの制御等を行う。RAM1102には、ハードディスク1108やCD−ROMドライブ1109に装着されたCD−ROMやCD−R等の記憶媒体から読み出されたオペレーティングシステムのプログラムやアプリケーションプログラム等が一時的に記憶される。そして、これらは中央演算処理装置1101の制御の元に実行される。
ROM1103には、オペレーティングシステムと協働してハードディスク1108等への入出力を司るいわゆるBIOS等が記憶される。LANアダプタ1104は、中央演算処理装置1101によって制御されるオペレーティングシステムの通信プログラムと協働してネットワークを介した外部との通信を行う。
ビデオアダプタ1105は、ディスプレイ装置に出力する画像信号を生成する。キーボード1107やマウス1106は情報処理装置への指示を入力するために用いられる。ハードディスク1108は、オペレーティングシステムやアプリケーションプログラム、図1のプリンタ制御部103を実現するユーティリティツール等の各種プログラムを記憶している。
CD−ROMドライブ1109は、例えば、CD−ROMやCD−RやCD−R/W等の記憶媒体を装着してアプリケーションプログラムをハードディスク1108にインストールするのに用いる。尚、CD−ROMドライブ1109の代わりに、CD−RドライブやCD−R/WドライブやMOドライブ等の各種ディスクドライブを用いても良いことは言うまでもない。
図1の説明に戻る。
プリンタA200は、ファームウェア部201を備えており、ハードウェアID202とUSB ID203の2つの識別子を管理している。ハードウェアID202は、プリンタA200の機種を識別する識別子であり、USB ID203はプリンタA200が備えるUSBインターフェース204を識別する固有の値である。
また、プリンタB400は、プリンタA200と同機種のプリンタで、ファームウェア部401を備え、ハードウェアID402とUSB ID403の2つの識別子を管理している。また、USBインターフェース404を備える。プリンタB400はプリンタA200と同機種のプリンタであるため、プリンタA200のハードウェアID202とプリンタB400のハードウェアID402は同一である。これに対し、それぞれのプリンタのUSBインターフェースを識別するUSB ID203とUSB ID403は異なるものである。
尚、プリンタA200やプリンタB400の印刷方式は、例えば、インクジェット方式、レーザビーム方式、熱転写方式等の各種印刷方式を利用することができる。そして、プリンタA200やプリンタB400は、利用する印刷方式によって、その印刷方式を実現するためのプリンタエンジンやコントローラ、記録部を有している。
ここで、プリンタA200やプリンタB400のハードウェア構成について、図3を用いて説明する。
図3は本発明の実施形態1のプリンタのハードウェア構成を示す図である。
図3において、1900はプリンタの電源部であり、1901は電源のON/OFF操作を実現する電源スイッチである。1902は電源スイッチ1901の操作内容を示す操作信号をMPU1906へ伝達する信号線である。この操作信号は、信号1903への割込信号としてMPU1906へ伝達されるため、MPU1906において、優先的に処理される。1904はプリンタコントローラ1905、MPU1906、ROM1907を接続するデータバスである。
ROM1907には、MPU1906の動作、処理を記述したプログラムが記憶されている。このプログラムは、一般的にはファームウェアと呼ばれ、図1のプリンタA200のファームウェア部201、プリンタB400のファームウェア部401に相当する。また、ROM1907には、プリンタA200ではそのハードウェアID203、プリンタB400ではそのハードウェアID403が記憶されている。
1905はプリンタコントローラであり、プリンタ内の各種メモリ(例えば、ROM1907、DRAM1908等)、プリンタ駆動部、インターフェース部等の動作を制御する機能を有する。DRAM1908は、MPU1906が処理を行う場合にデータ等を一時的に記憶する記憶領域を提供するRAMである。
1909はプリンタ駆動部内のヘッドモータ1911やフィードモータ1912の制御を行う信号を伝達する信号線である。ヘッドモータ1911は、例えば、インクを吐出することで記録媒体に記録を行うプリントヘッド1913を動作させるモータである。フィードモータ1912は、プリンタにセットされた記録媒体の給紙排紙や、プリントヘッド1913による記録に伴う記録媒体の搬送を行うためのモータである。1910はプリントヘッド1913の動作を制御する制御線である。
1914はデータバスであり、インターフェース部内のインターフェースコントローラ1915とプリンタコントローラ1905間のデータの送受信に用いられる。例えば、このデータバス1914によって、ホストコンピュータ100から受信したデータがインターフェースコントローラ1915からプリンタコントローラへ転送される。
1918はUSBインターフェース1918であり、プリンタA200ではUSBインターフェース204、プリンタB400ではUSBインターフェース404に相当する。
1916はフラッシュメモリであり、USB MPU1919がUSBインターフェース1918を制御するためのプログラムが記憶されている。また、フラッシュメモリ1916には、プリンタA200ではUSB ID203、プリンタB400ではUSB ID403が記憶されている。
1917はインターフェースコントローラ1915とフラッシュメモリ1916、USB MPU1919を相互に接続する信号線である。
次に、プリンタ制御部103の詳細構成について、図4を用いて説明する。
図4は本発明の実施形態1のプリンタ制御部の詳細構成を示す図である。
プリンタ制御部103は、オペレーティングシステム1000と、その上で動作するアプリケーション1005、プリンタドライバ1006、ユーティリティツール1007によって構成される。
オペレーティングシステム1000は、プラグアンドプレイを実現させるプラグアンドプレイマネージャ1001と印刷要求を管理するスプーラ1002、ユーザインターフェース(UI)1003を備える。また、オペレーティングシステム1000は、デバイスドライバの設定や、アプリケーションの設定等の各種情報を管理しているデータベースであるレジストリ1004を備える。
インターフェース制御部1009は、図1のインターフェース制御部104に相当する。また、USBプリンタ1010は、図1のプリンタA200やプリンタB400に対応する。
USBプリンタ1010が接続されると、インターフェース制御部1009の一部であるUSBインターフェースは、接続したプリンタに関するプリンタ情報を取得して、プラグアンドプレイマネージャ1001に渡す。ここで、プリンタ情報には、ハードウェアIDやUSB IDが含まれる。
このプリンタ情報を取得した時に、そのプリンタ情報中から得られる一時的な情報は、図2のRAM1102等の記憶部内に保存され、オペレーティングシステム1000等の各種プログラムが使用する。また、ここで取得する一時的な情報は、ここであげた2つの情報以外も存在し、これについては、図5を用いて後述する。
このように、プラグアンドプレイマネージャ1001は、接続されたハードウェアの認識を行う。
スプーラ1002は、USBプリンタ1010からのプリントジョブを一時的に記憶し、順次印刷処理を行うための機構である。このスプーラ1002のプロセスは、プリンタのポートごとに行われるものであり、オペレーティングシステム1000が提供する機構である。このスプーラ1002に関係するポート情報は、USBプリンタ1010接続時にプラグアンドプレイマネージャ1001が取得するプリンタ情報の中に含まれ、プラグアンドプレイマネージャ1001はプリンタのポート名とスプーラを関連付ける処理を行う。
UI1003は、オペレーティングシステム1000がディスプレイに表示するユーザインターフェースである。プラグアンドプレイマネージャ1001は、接続されたUSBプリンタ1010を認識した後、UI1003に対してプリンタオブジェクトの追加処理を行う。この処理の詳細については後述する。
ここで、レジストリ1004へ登録されるプリンタ情報の一例について、図5を用いて説明する。
図5は本発明の実施形態1のプリンタ情報の一例を示す図である。
プリンタ情報1201は、複数種類の情報から構成されており、以下、各情報の内容について説明する。
まず、1202はプリンタサーバ名である。1203はプリンタ名である。このプリンタ名が、プリンタオブジェクト名となる。1204はネットワーク共有名であり、プリンタがネットワークで共有されているときのプリンタ名を表すものである。1204はポート情報であり、これには、ポート名や番号等が含まれる。
1205はプリンタドライバ名であり、このプリンタ情報1201に対応するプリンタが使用するプリンタドライバの名称を表すものである。1207はプリンタに対するコメントを表すものである。1208はプリンタ設定情報であり、この詳細については後述する。1209は区切りページファイル名であり、プリンタから印刷する際に印刷ジョブと印刷ジョブの間に注入する区切りのページファイル名を指定するものである。
1210はプリントプロセッサ名であり、プリンタが印刷処理を行うときに使用するプリントプロセッサの名称を表すものである。1211はスプールデータ名である。ここで、スプールデータの形式には、例えば、RAWデータやEMFデータ形式等があるが、この名称はどのスプールデータ形式を使用するかを表すものである。
1212はプリンタパラメータであり、プリンタに与える各種パラメータを表すものである。1213はプリンタのセキュリティ情報であり、プリンタにアクセスが許可されているユーザの情報等を表すものである。1214は印刷ジョブの優先順位情報である。1215は標準ジョブの優先順位情報であり、デフォルトのジョブの優先順位情報を表すものである。1216は印刷可能開始設定時刻、1217は印刷可能終了設定時刻である。1218はプリンタの状態を示す状態情報である。1219はプリンタの保持するジョブ数を表すものである。1220はプリンタの平均印刷時間を表すものである。
尚、プリンタ設定情報(DEVMODE)1208とは、Windows(登録商標)オペレーティングシステムで定義されるプリンタ設定情報の構造体である。その定義の一例について、図6を用いて説明する。
図6は本発明の実施形態1のプリンタ設定情報の構造体の定義例を示す図である。
1221はハードウェアID、1222は使用されるオペレーティングシステムのバージョン番号、1223はプリンタドライバのバージョン番号、1224はDEVMODE構造体のサイズである。また、1225は拡張DEVMODE構造体に使用する領域のサイズ、1226はプリンタドライバがサポートする機能を示すフラグである。
また、1227は印刷方向を示す値、1228は用紙のサイズを示す値、1229は用紙の長さを示す値、1230は用紙の幅を示す値、1231は倍率を示す値、1232は部数を示す値である。また、1233はデフォルトの用紙の種類を示す値、1234は印刷品位を示す値、1235は色を示す値、1236は両面印刷かどうかを示す値である。
また、1237はイメージの縦の解像度を示す値、1238はTrueTypeフォントを使用する際の値、1239は部単位印刷に関する値、1240は用紙フォームの名称を示す値、1241は論理解像度を示す値、1242は色解像度に関する値である。
また、1243〜1246はディスプレイドライバが使用する値、1247はカラープロファイルを指定する方法に関する値、1248はカラーマッチング方法に関する値である。1249は用紙の種類を示す値、1250はディザリング方法を示す値1251、1252は予備の値である。
図4の説明に戻る。
プラグアンドプレイマネージャ1001は、接続されたUSBプリンタ1010を認識すると、その旨をオペレーティングシステム1000上で実行されるアプリケーション1005に対して通知を行う。
例えば、Windows(登録商標)オペレーティングシステム上では、ウィンドウメッセージと呼ばれる特定のメッセージを起動されているアプリケーション1005や、ユーティリティツール1007に対して発行する。そのメッセージを受けたアプリケーション1005やユーティリティツール1007は個々にプリンタの追加を認識することができる。
また、プラグアンドプレイマネージャ1001は、接続されたUSBプリンタ1010の適切なプリンタドライバ1006の読み込みも行う。
ホストコンピュータ100にインストールされているユーティリティツール1007では、プラグアンドプレイマネージャ1001によって登録されたUI1003の情報や、レジストリ1004の情報を操作する仕組みを備えている。そして、ユーティリティツール1007は、例えば、Win32APIと呼ばれるオペレーティングシステムが備えているAPI(アプリケーションプログラムインターフェース)関数1008を用いて、上述した情報を操作することが可能である。
次に、プリンタA200をホストコンピュータ100に接続した場合に、ホストコンピュータ100が実行するプラグアンドプレイインストールについて説明する。
図1において、ホストコンピュータ100にプリンタA200をUSBケーブル300で接続すると、ホストコンピュータ100のインターフェース制御部104は、プリンタA200のプリンタ情報を取得する。このプリンタ情報は、プリンタA200のハードウェアID202とUSB ID203を含む。
上述したとおり、このプリンタ情報はインターフェース制御部104を介して、記憶部102(例えば、レジストリ1004やRAM1102等)の一時記憶領域を使用して、プリンタ制御部103に渡される。
プリンタ制御部103の一部であるオペレーティングシステム1000が備えるプラグアンドプレイマネージャ1001は、記憶部102よりプリンタ情報を取得する。また、プラグアンドプレイマネージャ1001は、ファームウェア部401(例えば、フラッシュメモリ1916やROM1907等)よりUSB IDやハードウェアIDを取得する。そして、プラグアンドプレイマネージャ1001は、取得したプリンタ情報とUSB IDやハードウェアIDを元に、接続されたプリンタA200が新規に接続されたプリンタであるか否かを判定する。
そして、その判定結果に基づいて、ディスプレイ表示部106で表示するプリンタ管理画面(図7)内にプリンタオブジェクトを作成する。また、このプリンタオブジェクトに対応するプリンタのプリンタドライバを記憶部102にインストールする。
尚、実施形態1及び実施形態1以降の実施形態で説明するプリンタオブジェクトとは、少なくとも一台のプリンタ毎に対応する、本発明の制御プログラムの好適な一例であるプリンタドライバによって用いられる管理情報である。また、このプリンタオブジェクトは、後述するような仕組みでプリンタアイコンとしても表示可能である。また、この管理情報には、プリンタの種類等を特定することが可能な上記のプリンタ情報が含まれる。
例えば、プリンタオブジェクトは、例えば、Windows(登録商標)においては、レジストリ情報と呼ばれるデータベース(レジストリ1004)の形式で管理されている。そして、記憶部102に記憶されている表示制御手段の一例であるオペレーティングシステム1000が、該レジストリ情報を読み出す。これにより、プリンタ管理画面内で生成するプリンタアイコン画像として、プリンタオブジェクトを表示する処理を制御することができる。
次に、プリンタA200を切り離しプリンタB400を接続する。すると、ホストコンピュータ100のインターフェース制御部104は、ファームウェア部401よりプリンタB400のハードウェアID402とUSB ID403を含むプリンタ情報を取得する。
プリンタ制御部103の一部であるオペレーティングシステム1000が備えるプラグアンドプレイマネージャ1001は、記憶部102よりプリンタ情報を取得し、ファームウェア部401よりUSB IDやハードウェアIDを取得する。そして、取得したプリンタとUSB IDやハードウェアIDを元に、接続されたプリンタB400が新規に接続されたプリンタであるか否かを判定する。この場合、プリンタB400のハードウェアID402は、既にインストールされているプリンタA200のハードウェアID202と同一である。そこで、プリンタA200のプリンタオブジェクトに基づいて新規にプリンタオブジェクトを作成して、プリンタ管理画面内に表示する。
実際には、これらのインターフェース制御部104やプリンタ制御部103の処理は、中央演算処理部101でのソフトウェア実行により実現される。そのプログラムは、OSやユーティリティソフトウェアとして実装するのが一般的であるが、専用ハードウェアで実現されても良い。
実施形態1では、Windows(登録商標)環境で実施する例を挙げて説明するが、本発明は、このような構成に限定されるものではない。
また、下記のように処理してもよい。ユーティリティツール1007は、デバイスの好適な一例であるプリンタ毎に対応付けられて管理されるデバイス標識情報の一例であるプリンタアイコン(プリンタオブジェクトという場合もある。)を表示部の一例であるディスプレイ表示部106に表示する処理を制御する。
つまり、ユーティリティツール1007は、プリンタがUSBインターフェース300を介してホストコンピュータ100に接続されるのに応答して、プリンタ情報を、USBインターフェース300とオペレーティングシステム1000を介して取得する。ここで、USBインターフェース300は、通信媒体の一例である。また、プリンタ情報は、デバイスのデバイス識別情報の一例である。
そして、ユーティリティツール1007は、取得したプリンタ情報をレジストリ1004に登録する処理をオペレーティングシステム1000を介して制御する。そして、オペレーティングシステム1000は、レジストリ1004に登録されたプリンタアイコンをディスプレイ表示部106に表示する。つまり、ユーティリティツール1007は、プリンタアイコンをディスプレイ表示部106に表示する処理を制御する。
さらに、ユーティリティツール1007は、既にレジストリ1004に登録済みのプリンタ情報と、新たに接続されたプリンタから取得されたプリンタ情報とが一致する場合には、レジストリ1004には新たにプリンタオブジェクトを登録しない。
このようにすることで、ユーティリティツール1007は、既存のプリンタ情報と、新たに取得されたプリンタとが一致する場合、前存デバイスオブジェクトを新たに表示しないよう表示処理を制御することになる。この場合、既存のプリンタオブジェクトとこれに関連付けられた設定が引き継がれ、新たに接続されたプリンタに用いられるようになる。これについては、実施形態1の他の部分の記載から明らかになるであろう。
また、プリンタ情報はプリンタから取得したハードウェアIDやUSB ID等のプリンタを識別する識別情報や、取得した識別情報に基づき、オペレーティングシステム1000により生成(登録)された情報により構成されている。
さらに、識別情報はオペレーティングシステム1000或いはユーティリティツール1007からの問い合わせに対してプリンタが識別情報を返すことによって取得しても良い。あるいは、プリンタが定期的に送るメッセージに基づきオペレーティングシステム1000が識別情報を取得するようにしても良い。
次に、ディスプレイ表示部106で表示するグラフィックユーザインターフェース(プリンタ管理画面)の構成例について、図7を用いて説明する。
図7は本発明の実施形態1のプリンタ管理画面の一例を示す図である。
図7では、プリンタA200のプリンタオブジェクトが存在する状態で、新規にプリンタBのプリンタオブジェクトが生成された直後の状態を示している。
図7において、特に、500はインストールされたプリンタA200のプリンタオブジェクトであり、501はプリンタA200のプリンタオブジェクトに基づいて作成されたプリンタB400のプリンタオブジェクトである。
次に、プリンタのプリンタ情報の構成例について、図8を用いて説明する。
図8は本発明の実施形態1のプリンタ情報の構成例を示す図である。
尚、図8は、ホストコンピュータ100が、図7に示される2つのプリンタオブジェクトに対するプリンタ情報の例を示しており、このプリンタ情報を含むプリンタオブジェクトは、例えば、記憶部102に管理されている。
また、実際には、プリンタ情報としては、上述の図5に示したような複数種類の情報があるが、図8では、本発明で、接特に関係する情報のみを示している。
図8において、プリンタオブジェクト名称600は、プラグアンドプレイマネージャ1001が、ROM1907からプラグアンドプレイにより取得したハードウェアIDをユーザにわかりやすい名称に割り当てた名称である。プリンタドライバ名称601は、この機種のプリンタの印刷を制御するプリンタドライバの名称である。
プリンタ設定情報602は、プリンタの印刷設定や印刷条件等を含むプリンタ設定情報である。プリンタ設定情報はそれぞれのプリンタオブジェクトで別々の情報を持つことができる。ポート情報603は、USB IDと関連付けられている印刷ポートに関する情報である。
尚、プリンタ情報の構成は一例であり、プリンタに関する情報であれば、プリンタ情報として構成することは可能である。
実施形態1では、以上のようなプラグアンドプレイインストールが終了したことを検知する。そして、記憶部102に記憶されるプリンタ制御部103に含まれるユーティリティツール1007でプリンタを制御するために、以下のプリンタオブジェクト制御処理を実行する。
また、実施形態1のオブジェクト制御処理は、上述のプリンタ制御部103に備わるユーティリティツール1007によって実行されるが、オペレーティングシステム1000の一機能として制御することも可能である。
図9は本発明の実施形態1のプリンタオブジェクト制御処理の概略フローを示すフローチャートである。
尚、図9では、プリンタA200がインストール済みの状態で、プリンタB400のプラグアンドプレイインストールの終了を検知するタイミングで処理を実行する例にして説明するが、この処理の実行タイミングはこれに限定されるものではない。例えば、入力部105を介するユーザの指示によって処理を実行するようにしても良い。
まず、ステップS1で、プラグアンドプレイインストールの有無の検知を行う。これは、オペレーティングシステム1000がプラグアンドプレイインストール終了時に発行するメッセージを受け取ることにより判断する。
このメッセージは、例えば、API関数1008により受け取ることのできるメッセージである。ここで、API関数1008の一例であるWin32APIもこのメッセージに属するものである。例えば、Windows(登録商標)オペレーティングシステムによると、WM_DEVMODECHANGE、WM_DEVICECHANGE、WM_WININICHANGE等がこれに該当する。
プラグアンドプレイインストールが検知されない場合(ステップS1でNO)、処理を終了する。一方、プラグアンドプレイインストールが検知された場合(ステップS1でYES)、処理対象のデバイス(プリンタB400)に対するプラグアンドプレイインストールを実行し、その後、ステップS2に進む。
尚、本実施形態1では、ステップS1でNOの場合に、処理を終了するように構成したが、定期的にメッセージを受け取るように待機する構成にしても良い。
ステップS2で、新規にインストールされたプリンタB400のプリンタ情報を取得する。実施形態1では、このプリンタ情報をAPI関数1008により取得する。
尚、ここで取得するプリンタ情報は、API関数1008を介して、図5で示したレジストリに保存される情報から取得しても良いし、記憶部102に保存されている図5に示す情報に等しいプリンタ情報を取得しても構わない。
つまり、図5で説明した情報から必要な情報が取得できる構成であれば、その取得先や取得手順は限定されるものではない。例えば、Windows(登録商標)オペレーティングシステムの場合、プリンタ情報を取得する関数は、DocumentProperties()、GetPrinter()、SHGetValue()等がある。
ステップS3で、プリンタB400以外の既にシステムにインストールされているプリンタ数を取得する。実施形態1では、既にインストールされているプリンタはプリンタA200であり、このプリンタ情報はAPI関数1008により取得する。例えば、Windows(登録商標)オペレーティングシステムの場合、プリンタ数を取得する関数は、EnumPrinters()等がある。
ステップS4で、ステップS5とステップS6の処理を、ステップS3で取得したプリンタの数分繰り返す。
ステップS5で、プリンタB400以外の既にシステムにインストールされているプリンタ情報を順に取得して行く。ここで、プリンタ情報は、記憶部102(例えば、レジストリ1004やRAM1102等)より取得する。
ステップS6で、ステップS5で取得したプリンタ(プリンタA200)のプリンタ情報と、プリンタB400のプリンタ情報を比較する。実施形態1では、新規インストールされたプリンタと同一機種のプリンタが既にインストール済みであるか否かを判定するために、プリンタドライバ名称601を比較する。
特に、Windows(登録商標)では、既にインストール済みのプリンタオブジェクトに基づいて、新規にプリンタオブジェクトを作成する場合、作成されたプリンタオブジェクトは、既にインストール済みのプリンタオブジェクトと同一のプリンタドライバを割り当てる。そのため、プリンタドライバ名称601は同一機種であれば同じ名称を持つことになる。
そこで、新規インストールされたプリンタと一致するプリンタがない場合は、そのまま処理を終了する。一方、新規インストールされたプリンタと一致するプリンタがある場合は、ステップS7のプリンタオブジェクト制御処理を実行する。
尚、実施形態1では、ステップS6の条件を満足するプリンタは、プリンタA200となる。
次に、ステップS7のプリンタオブジェクト制御処理の詳細について、図10を用いて説明する。
図10は本発明の実施形態1のプリンタオブジェクト制御処理の詳細を示すフローチャートである。
まず、ステップS8で、既にインストール済みのプリンタA200のプリンタ設定情報を、API関数1008を介してプリンタB400のプリンタ設定情報と入れ替えて設定する。
例えば、Windows(登録商標)オペレーティングシステムによると、プリンタ情報を設定する関数は、SetPrinter等がある。
実施形態1の場合、ステップS8で、入れ替えるプリンタ設定情報は、図8のプリンタオブジェクト名称600とプリンタ設定情報602である。プリンタA200とプリンタB400は同機種のプリンタであるため、オペレーティングシステムが同機種のプリンタオブジェクトが使用するプリンタドライバを共通のものとして管理している場合が一般的である。
その場合、プリンタドライバ名称601は同一であるために引継ぐ必要はない。また、別々にプリンタドライバが管理されている場合はその設定を引き継いでも良い。
また、ポート情報603はそれぞれのプリンタ固有の値であるUSB IDと関連付けてオペレーティングシステムで管理されていることが一般的である。その場合、ポート情報603については、他のプリンタのそれから引き継いでもプリンタから印刷できなくなる。そのため、プリンタB400接続時に、図4のプラグアンドプレイマネージャ1001によって関連付けられたポート情報をそのまま使用する。
この処理により、記憶部102に記憶されているプリンタA200に設定されていたプリンタ設定情報をプリンタB400のプリンタ設定情報とすることができる。
次に、ステップS9で、プリンタA200のプリンタオブジェクトを削除する。この削除により、プリンタ管理画面内に表示されるプリンタオブジェクトはプリンタB400だけとなる。
また、レジストリ1004等で削除したいプリンタ情報が管理されている場合は、レジストリ1004上で削除しても良い。この削除の意味するところは、ホストコンピュータに接続されたプリンタのプリンタ設定情報をインストールされる前の状態に戻す行為を意味する。
ステップS10で、プリンタA200のプリンタオブジェクト名称を、プリンタB400のプリンタオブジェクト名称と入れ替える。プリンタオブジェクト名称500は、各プリンタオブジェクトに対して単一のものでなければならない、そのためステップS9の処理が必要となる。
尚、ステップS9及び10の処理は、具体的には、API関数1008を介し、プリンタオブジェクトの削除をオペレーティングシステム1000に通知し、オペレーティングシステム1000はこの通知を受けて該当するプリンタオブジェクトを削除する。
同様に、プリンタオブジェクトのプリンタオブジェクト名称をオペレーティングシステム1000に通知し、オペレーティングシステム1000はこの通知を受けて該当するプリンタオブジェクト名称を入れ替える。例えば、Windows(登録商標)オペレーティングシステムによると、プリンタ情報を削除する関数は、DeletePrinter等がある。
また、実施形態1で説明するプリンタオブジェクトの削除とは、API関数1008によるプリンタオブジェクトの削除のオペレーティングシステム1000への指示までの処理であるものとして説明する。あるいは、プリンタオブジェクトの削除とは、その指示と、その指示を受けて、最終的に、オペレーティングシステム1000がプリンタオブジェクトを削除するまでの処理であるものとして説明する。
更に、実施形態1では、ステップS8〜ステップS10の順番で処理を行う構成としているが、プリンタ設定情報及びプリンタオブジェクト名称等を適宜取得可能な状態であれば、その処理順序は限定されるものではない。
次に、実施形態1の図10のフローチャートにおけるプリンタ情報の状態と、ディスプレイ表示部106に表示されるプリンタ管理画面内のプリンタオブジェクトの表示状態の遷移について、図11を用いて説明する。
図11は本発明の実施形態1のプリンタ情報の状態とプリンタ管理画面内のプリンタオブジェクトの表示状態の遷移を示す図である。
処理前のプリンタA200のプリンタ情報は、プリンタオブジェクト名称700、プリンタドライバ名称A701、プリンタ設定情報702、ポート情報703から構成される。
一方、処理前のプリンタB400のプリンタ情報は、プリンタオブジェクト名称704、プリンタドライバ名称A705、プリンタ設定情報706、ポート情報707から構成される。
その後、上述の図10の処理によって、プリンタA200のプリンタ情報は削除され、プリンタB400のプリンタ情報が変更される。処理後のプリンタB400のプリンタ情報は、ステップS10で入れ替えられた、プリンタA200のプリンタオブジェクト名称708と、処理前と同じプリンタドライバ名称A709を含む。また、処理後のプリンタB400のプリンタ情報じゃ、ステップS8で入れ替えられたプリンタA200のプリンタ設定情報710と、処理前と同じプリンタB400のポート情報711を含む。
プリンタオブジェクトにおいては、プリンタA200のプリンタオブジェクト712は、ステップS9の処理により、記憶部102から削除される。一方、プリンタB400のプリンタオブジェクト713は、ステップS8、ステップ10の処理により、プリンタA200のプリンタ情報を引き継ぎ、結果、処理後のプリンタB400のプリンタオブジェクト714となる。
以上説明したように、実施形態1によれば、ホストコンピュータ100にインストール済みのプリンタと同機種の別のプリンタを接続したときに、OSが作成するプリンタオブジェクトを制御する。そして、既にインストール済みのプリンタのプリンタオブジェクトから新規インストールされたプリンタのプリンタオブジェクトへのプリンタ情報の引継(更新)と、既にインストール済みのプリンタのプリンタオブジェクトの削除を可能とする。これにより、プリンタオブジェクトを切り替えることなく、既に接続されていたプリンタと同じ設定のプリンタオブジェクトを使用することができる。
これは、ユーザが同一機種のプリンタを複数台切り替えて使用する場合に、プリンタオブジェクトの選択や、プリンタ設定情報の変更を行うことなく使用することが可能となることを意味する。
つまり、ユーザはプリンタオブジェクトの切り替えを行うことなく、複数の同機種のプリンタを同じプリンタ設定情報で使用することが可能となる。
また、本発明は、特に、企業のグループ内で複数の同機種のプリンタを管理し、使用するユーザは管理されているプリンタから無作為に一つ使用するといった環境に適用した場合により有効となる。
<実施形態2>
実施形態1では、インストール済みのプリンタと同機種の別のプリンタを接続したときには、新規に作成される別のプリンタの新規プリンタオブジェクト713に、既存プリンタオブジェクト712のプリンタ情報の一部を引き継がせて(取得して)いる。そして、既存プリンタオブジェクト712を削除して、プリンタオブジェクト714を生成するようにしている。しかしながら、この処理が逆の構成であっても良い。ここで、プリンタ情報の一部とは、プリンタオブジェクト名称及びプリンタ設定情報である。
これは、ポート情報がUSB IDとなっている場合に、特に有効である。
つまり、新規プリンタオブジェクト713が作成された後に、新規プリンタオブジェクト713のプリンタ情報の一部(ポート情報)を既存プリンタオブジェクト712に引き継がせる(取得させる)。その後、新規プリンタオブジェクト713を削除して、プリンタオブジェクト714を生成する構成であっても良い。
この処理を実現する場合には、実施形態1の図4のステップS7の処理内容を置き換えることで実現される。以下、実施形態2のステップS7のプリンタオブジェクト制御処理の詳細について、図12を用いて説明する。
図12は本発明の実施形態2のプリンタオブジェクト制御処理の詳細を示すフローチャートである。
まず、ステップS8−2で、記憶部102に記憶されているプリンタB400のポート情報を、記憶部102に記憶されているプリンタA200のポート情報と入れ替える。この処理により、プリンタB400に設定されていたポート情報をプリンタA200のポート情報とすることができる。
次に、ステップ9−2で、記憶部102に記憶されているプリンタB400のプリンタオブジェクトを削除する。この削除により、プリンタ管理画面内に表示されるプリンタオブジェクトは、プリンタA200だけとなる。
尚、実施形態2では、ステップS8−2、ステップS9−2の順番で処理を行う構成としているが、ポート情報を適宜取得可能な状態であれば、その処理順序は逆であっても良い。
次に、実施形態2の図12のフローチャートにおけるディスプレイ表示部106に表示されるプリンタ管理画面内のプリンタオブジェクトの表示状態の遷移について、図13を用いて説明する。
図13は本発明の実施形態2のプリンタ管理画面内のプリンタオブジェクトの表示状態の遷移を示す図である。
図13において、800はプリンタA200のプリンタオブジェクトであり、801はプリンタB400のプリンタオブジェクトである。そして、プリンタB400のプリンタオブジェクト801は、ステップS9−2の処理により削除される。一方、プリンタA200のプリンタオブジェクト800は、ステップS8−2の処理により、プリンタB400のポート情報を引き継ぎ、結果、処理後のプリンタA200のプリンタオブジェクト802となる。
以上説明したように、実施形態2によれば、ホストコンピュータ100にインストール済みのプリンタと同機種の別のプリンタを接続したときに、OSが作成するプリンタオブジェクトを制御する。そして、既にインストール済みのプリンタのプリンタオブジェクトから新規インストールされたプリンタのプリンタオブジェクトへのポート情報の引継(更新)と、既にインストール済みのプリンタのプリンタオブジェクトの削除を可能とする。これにより、プリンタオブジェクトを切り替えることなく、既に接続されていたプリンタと同じ設定のプリンタオブジェクトを使用することができる。
また、実施形態1で説明される効果に加えて、プリンタオブジェクト間での情報の引継量をより軽減することができる。
<実施形態3>
実施形態3は、実施形態2とは別のプリンタオブジェクト制御処理の一例について説明する。
実施形態1や2では、新規プリンタオブジェクトのプリンタ情報の一部と一致するプリンタ情報を有する既存プリンタオブジェクトが既に記憶部102に存在する場合、次の処理を実行する。つまり、そのプリンタオブジェクトと新規プリンタオブジェクトのどちらか一方のプリンタ情報の少なくとも一部を他方のプリンタ情報に引き継ぎ、引継元のプリンタオブジェクトを削除する。
これに対し、実施形態3では、新規プリンタオブジェクトと既存プリンタオブジェクトの双方のプリンタ情報をマージする。そして、そのマージされたプリンタ情報に基づいて、別途新たな新規プリンタオブジェクトを作成して、それ以前の新規プリンタオブジェクトと既存プリンタオブジェクトを削除する。
この処理を実現する場合には、実施形態1の図9のステップS7の処理内容を置き換えることで実現される。以下、実施形態3のステップS7のプリンタオブジェクト制御処理の詳細について、図14を用いて説明する。
図14は本発明の実施形態3のプリンタオブジェクト制御処理の詳細を示すフローチャートである。
まず、ステップS8−3で、記憶部102に記憶されているプリンタ情報から、プリンタA200のプリンタオブジェクト名称を取得する。次に、ステップS9−3で、プリンタA200のプリンタ設定情報を取得する。ステップS10−3で、プリンタA200(プリンタB400)のプリンタドライバ名称を取得する。ステップS11−3で、プリンタB400のポート情報を取得する。
これらのステップS8−3〜ステップS11−3で取得した情報は、一旦記憶部102に記憶する。
ステップS12−3で、プリンタA200のプリンタオブジェクトを記憶部102から削除する。次に、ステップS13−3で、プリンタB400のプリンタオブジェクトを削除する。
そして、ステップS14−3で、ステップS8−3〜ステップS11−3で取得した情報に基づいて、新しいプリンタオブジェクトを作成し、記憶部102に記憶する。
尚、ステップS8−3〜ステップS11−3、及びステップS12−3〜ステップS13−3の処理順序はこれに限定されるものではなく、任意の処理順序で実現することが可能である。
次に、実施形態3の図14のフローチャートにおけるディスプレイ表示部106に表示されるプリンタ管理画面内のプリンタオブジェクトの表示状態の遷移について、図15を用いて説明する。
図15は本発明の実施形態3のプリンタ管理画面内のプリンタオブジェクトの表示状態の遷移を示す図である。
図15において、900はプリンタA200のプリンタオブジェクトであり、901はプリンタB400のプリンタオブジェクトである。そして、プリンタA200のプリンタオブジェクト900は、ステップS12−3の処理により削除される。一方、プリンタB400のプリンタオブジェクト901は、ステップS13−3の処理により削除される。
そして、ステップS8−3〜ステップS11−3で取得した情報に基づいて、プリンタオブジェクト902が、ステップS14−3の処理により生成される。
尚、ステップS14−3の処理は新しいプリンタオブジェクトを作成した後に、ステップS8−3〜ステップS11−3で取得した情報を更新するように構成することが可能である。
以上説明したように、実施形態3によれば、ホストコンピュータ100にインストール済みのプリンタと同機種の別のプリンタを接続したときに、OSが作成するプリンタオブジェクトを制御する。そして、既存プリンタオブジェクトと新規プリンタオブジェクトから必要な情報の取得と、その取得した情報に基づいて新たなプリンタオブジェクトの作成を可能とする。これにより、プリンタオブジェクトを切り替えることなく、既に接続されていたプリンタと同じ設定のプリンタオブジェクトを使用することができる。
<実施形態4>
上記実施形態1〜3では、ホストコンピュータ100に新規に接続したプリンタと同機種のプリンタオブジェクトが存在する場合には、関係する各プリンタのプリンタオブジェクトの内容に基づいて、適宜、プリンタオブジェクトの作成や削除を制御していた。
しかしながら、用途や目的によっては、既存のプリンタオブジェクトの存在を維持したい場合がある。そこで、実施形態4では、実施形態1の図9のプリンタオブジェクト制御処理において、制御対象のプリンタの機種の指定を許容することで、プリンタオブジェクト制御処理の制御対象のプリンタオブジェクトを指定できるようにする。
ここで、実施形態1のプリンタオブジェクト制御処理(図9)では、ステップS6で、ステップS5で取得したプリンタ(プリンタA200)のプリンタ情報と、プリンタB400のプリンタ情報を比較する。そして、比較の結果、このプリンタ情報が一致した場合にステップS7の処理を行っていた。
これに対し、実施形態4では、ステップS6で、プリンタ情報を比較する前に、制御対象のプリンタオブジェクトに対応するプリンタの機種の指定を許容する。
具体的には、制御対象のプリンタオブジェクトに対応するプリンタの機種の指定は、ステップS6での比較対象のプリンタ情報を、記憶部102内で情報ファイルとして保存しておく。そして、ユーティリティツール1007の実行の際に、例えば、API関数を使用して、記憶部102に記憶されている情報ファイルをRAM1102に読込み、これを参照することで実現する。
あるいは、情報ファイルという形態ではなく、レジストリ1004に情報ファイルに相当する情報を記憶しておく。そして、ユーティリティツール1007の実行の際に、例えば、API関数を使用して、レジストリ1004の内容をRAM1102に読込み、これを参照することで実現する。
この処理は、図9のステップS2とステップS3の間に、ステップS2−1−4及びステップS2−2−4を追加した図16に示すプリンタオブジェクト制御処理によって実現する。
以下、実施形態4のプリンタオブジェクト制御処理について、図16を用いて説明する。
図16は本発明の実施形態4のプリンタオブジェクト制御処理を示すフローチャートである。
尚、図16のフローチャートにおいて、図9のフローチャートと同一のステップは、同一のステップ番号を付加し、その詳細については省略する。
ここで、ステップS2で取得するプリンタB400のプリンタ情報は、例えば記憶部102に記憶されるプリンタドライバ名称等のプリンタの機種を判別することのできる情報である。
そして、ステップS2−1−4で、記憶部102に記憶されているプリンタ情報を、API関数1008を使用して、RAM1102に読み込む。ここで、RAM1102に読み込むプリンタ情報は、ステップS2と取得したプリンタ情報の内容を比較可能なプリンタの機種を判別することのできる情報である。
次に、ステップS2−2−4で、ステップS2−1−4で読み込んだプリンタ情報と、ステップS2で取得したプリンタB400のプリンタ情報を、API関数1008を使用して比較する。
例えば、プリンタ情報がプリンタドライバ名称のような文字列であれば、2つの文字列が一致するか否かを、API関数1008の1つであるstrcmp関数等を用いて比較判断する。
そして、プリンタ情報が一致しない場合、プリンタオブジェクトの制御対象ではないプリンタという判断を下し、処理を終了する。一方、プリンタ情報が一致する場合、ステップS4以下の処理を実行する。
以上説明したように、実施形態4によれば、ホストコンピュータ100にインストール済みのプリンタと同機種の別のプリンタを接続したときに、任意に指定したプリンタの機種に対応するプリンタオブジェクトを制御する。そして、既にインストール済みのプリンタから新規インストールされたプリンタへのポート情報の引継(更新)と、既にインストール済みのプリンタのプリンタオブジェクトの削除を可能とする。これにより、プリンタオブジェクトを切り替えることなく、既に接続されていたプリンタと同じ設定のプリンタオブジェクトを使用することができる。
特に、新しく接続されたプリンタがホストコンピュータ100にインストール済みのプリンタと同機種で別のプリンタであっても、次の処理を可能とする。指定した種類のプリンタである場合にのみ既にインストール済みのプリンタのプリンタオブジェクトから新規インストールされたプリンタのプリンタオブジェクトへのポート情報の引継(更新)を可能とする。これに加えて、既にインストール済みのプリンタのプリンタオブジェクトの削除を可能とする。これにより、不用意にプリンタオブジェクト制御処理が実行されることを防止することができる。
<実施形態5>
実施形態1では、図10のステップ8において、プリンタA200のプリンタ設定情報の入れ替えを行った。この入れ替えるプリンタ情報の内容は、例えば、図16のDEVMODE構造体である。
ここで、プリンタ設定情報(DEVMODE)1208は、ホストコンピュータ100から印刷処理を行う際にプリンタドライバが使用する設定情報をあらわす構造体である。そして、実施形態1の場合では、プリンタB400がプリンタA200のプリンタ設定情報1208を引き継いでいるので、引き継いだプリンタ設定情報(DEVMODE)1208は、プリンタA200が使用していたものを引き継ぐことになる。
しかし、このプリンタ設定情報(DEVMODE)1208をプリンタA200のものから引き継がずに、あらかじめ記憶部102で、プリンタ設定情報1208の設定内容を設定情報ファイルとして保存しておく。そして、図10のステップS8を実行する際に、設定情報ファイルの内容を、API関数1008を使用して、RAM1102に読み込み、これを引き継ぐプリンタ設定情報(DEVMODE)1208として使用しても良い。
あるいは、設定情報ファイルという形態ではなく、レジストリ1004に設定情報ファイルに相当する情報を記憶しておく。そして、ユーティリティツール1007の実行の際に、例えば、API関数1008を使用して、レジストリ1004の内容をRAM1102に読み込み、これを引き継ぐプリンタ設定情報(DEVMODE)1208として使用しても良い。
この処理は、図5のステップS8の前に、ステップS8−1−5及びステップS8−2−5を追加した図17に示すプリンタオブジェクト制御処理によって実現する。
以下、実施形態5のプリンタオブジェクト制御処理の詳細について、図17を用いて説明する。
図17は本発明の実施形態5のプリンタオブジェクト制御処理の詳細を示すフローチャートである。
尚、図17のフローチャートにおいて、図10のフローチャートと同一のステップは、同一のステップ番号を付加し、その詳細については省略する。
ステップS8の処理を実行する前に、ステップS8−1−5で、記憶部102に記憶されているプリンタ設定情報(DEVMODE)1208を、API関数1008を使用して、RAM1102に読み込む。
次に、ステップS8−2−5で、図9における処理の過程で取得したプリンタ設定情報(DEVMODE)1208と、ステップS8−1−5で取得したプリンタ設定情報(DEVMODE)を入れ替える設定として採用する。これは、例えば、RAM1102で記憶している値との入れ替えを行う。
そして、ステップS8で、ステップS8−2−5で一時記憶している値を利用して、API関数1008の引数として与え、目的のプリンタオブジェクトに対してプリンタ情報をセットする。例えば、Windows(登録商標)オペレーティングシステムの場合、プリンタ設定情報をセットする関数は、SetPrinter等がある。
以上説明したように、実施形態5によれば、ホストコンピュータ100にインストール済みのプリンタと同機種の別のプリンタを接続したときに、OSが作成するプリンタオブジェクトを制御する。そして、既にインストール済みのプリンタのプリンタオブジェクトから新規インストールされたプリンタのプリンタオブジェクトへのポート情報の引継(更新)を可能とする。加えて、新規インストールされたプリンタのプリンタオブジェクトへの任意のプリンタ設定情報へのセット、既にインストール済みのプリンタのプリンタオブジェクトの削除を可能とする。これにより、プリンタオブジェクトを切り替えることなく、既に接続されていたプリンタと同じ設定のプリンタオブジェクトを使用することができる。
特に、あらかじめ設定してあるプリンタ設定情報をプリンタオブジェクトへセットすることで、常に一定の設定の印刷が可能になり、印刷に不慣れなユーザにも使いやすくすることができる。
また、管理者がいる場合では管理者の希望する設定で常に印刷が行うことができるので、印刷結果等の管理が容易に行うことができる。
<実施形態6>
実施形態1〜5では、新規プリンタオブジェクトのプリンタ情報の一部と一致するプリンタ情報を有する既存プリンタオブジェクトが既に記憶部102に存在する場合、次の処理を実行した。つまり、そのプリンタオブジェクトと新規プリンタオブジェクトのどちらか一方のプリンタ情報の少なくとも一部を他方のプリンタ情報に引き継ぎ、引継元のプリンタオブジェクトを削除する。あるいは、新規プリンタオブジェクトと既存プリンタオブジェクトの双方のプリンタ情報をマージする。そして、そのマージされたプリンタ情報に基づいて、別途新たな新規プリンタオブジェクトを作成して、それ以前の新規プリンタオブジェクトと既存プリンタオブジェクトを削除する。
実施形態6では、これらの処理に加えて、プリンタオブジェクト制御処理によって処理されたプリンタオブジェクトをホストコンピュータ100のデフォルトプリンタとして設定するデフォルトプリンタ設定処理を実行する。
ここで、デフォルトプリンタとは、そのホストコンピュータ100において通常使用するプリンタとして、オペレーティングシステム1000が記憶部102に登録するプリンタのことである。また、デフォルトプリンタは、アプリケーションが最初に起動されたときに、印刷先プリンタとして予め設定されているプリンタであるのが一般的である。
以下、実施形態6のデフォルトプリンタ設定処理の詳細について、図18を用いて説明する。
図18は本発明の実施形態6のデフォルトプリンタ設定処理の詳細を示すフローチャートである。
尚、図18のフローチャートは、図10のフローチャートのステップS10の後、あるいは図14のフローチャートのステップS14−3の後に実行するものである。また、図12のフローチャートのステップS9−2の後に実行することも可能であるが、既存のプリンタオブジェクトがデフォルトプリンタである場合は不要としても良い。
まず、ステップS11−6で、このステップより前で制御を終了したプリンタオブジェクトの名称を取得する。例えば、この名称は、これより前の処理の過程で記憶部102に記憶されているプリンタ情報や、既にオペレーティングシステム1000のレジストリ1004に登録されている値を、API関数1008を使用して取得する。
ステップS12−6で、ステップS11−6で取得したプリンタオブジェクトの名称を使用して、ホストコンピュータ100に登録されるデフォルトプリンタを変更する。
例えば、Windows(登録商標)オペレーティングシステムの場合、プリンタ設定情報をセットする関数は、SetDefaultPrinter等がある。この場合、プリンタオブジェクト名称を関数の引数として使用する。また、オペレーティングシステム1000がデフォルトプリンタをレジストリ1004で管理している場合などは、現在取得しているプリンタオブジェクトの名称に変更してもよい。
尚、実施形態6の図18のフローチャートは、図10のフローチャートのステップS10の後に実行する処理としている。あるいは、実施形態6の図18のフローチャートは、図14のフローチャートのステップS14−3の後に実行する処理としている。これは、プリンタオブジェクトの名称を使用してデフォルトプリンタを変更するからである。
つまり、図10のステップS10の前、あるいは図14のステップS14−3の前に、図5のステップS10の後、図9のステップS14−3の前に、実施形態6の図18のフローチャートで、デフォルトプリンタの変更を行うと、次のようになる。つまり、オブジェクト名称が指定できなかったり、プリンタオブジェクトの名称が図18の処理のあとに変更されたりしてしまうので、デフォルトプリンタの変更が正確に行われない。
このような理由から、実施形態6の図18のフローチャートは、図10のフローチャートのステップS10の後、あるいは図14のフローチャートのステップS14−3の後に実行することが好ましい。
また、実施形態6では、プリンタオブジェクト名称によってデフォルトプリンタの変更を実現しているが、これ以外の、プリンタオブジェクトを特定する情報に基づいて、デフォルトプリンタ設定処理を実現するようにしても良い。
以上説明したように、実施形態6によれば、プリンタオブジェクト制御処理によって処理されたプリンタオブジェクトをデフォルトプリンタに変更することができる。これにより、プリンタがデフォルトプリンタとしてアプリケーション等に認識され、設定の変更なく使用することができる。
<実施形態7>
実施形態1〜6では、ホストコンピュータ100に接続するプリンタA200やプリンタB400のプリンタを交互に接続するような環境を例に挙げて説明した。しかしながら、ホストコンピュータ100が複数のUSBインターフェースを備えている場合には、複数のプリンタが同時に接続されるような環境も想定される。
そして、例えば、プリンタA200とプリンタB400を同時に使用した場合に、図10のフローチャートのステップ9、図12のフローチャートのステップS9−2、図14のフローチャートのステップS12−3とステップS13−3の処理を実行する。この場合、プリンタA200とプリンタB400のどちらか一方または両方のプリンタオブジェクトが削除されることになる。そのため、プリンタA200またはプリンタB400のどちらかが使用不可能になる。
そこで、実施形態7では、ホストコンピュータ100に同機種のプリンタが複数接続されているか否かを判定する判定処理を行い、その判定結果に基づいて、プリンタオブジェクト制御処理を実行する。
この処理は、図9のステップS7の前に、ステップS6−1−7〜ステップS6−3−7を追加した図19に示す判定処理(図9のステップS7の置換)で実現される。
以下、実施形態7の判定処理の詳細について、図19を用いて説明する。
図19は本発明の実施形態7の判定処理の詳細を示すフローチャートである。
ステップS6−1−7で、プリンタB400のプリンタ情報と一致したプリンタ情報を参照する。このプリンタ情報は、図9のステップS5で取得済みのプリンタ情報であるため、記憶部102に記憶されているプリンタ情報を読み込み、それに含まれるポート情報を参照する。
ステップS6−2−7で、ステップS6−1−7で参照したポート情報をキーワードとして、オペレーティングシステム1000で管理しているポートの管理情報を検索する。この検索先である管理情報は、例えば、レジストリ1004で管理されている。
ここで、ホストコンピュータ100のインターフェースにデバイスが接続された場合に、オペレーティングシステム1000は接続されたデバイスの情報や、ポートの状態を管理するための管理情報、例えば、レジストリ1004に記憶するのが一般的である。そこで、実施形態7では、この管理情報を利用して、プリンタが接続されているか(有効)どうかの判定を行う。
ステップS6−3−7で、ステップS6−2−7で検索したポートの管理情報から、そのポートにプリンタが接続されている(有効)かどうかを判定する。接続済である場合、ステップS7のプリンタオブジェクト制御処理は行わずに、処理を終了する。一方、未接続である場合、ステップS7に進み、プリンタオブジェクト制御処理を実行する。
尚、ステップS6−3−7で、プリンタが接続済である場合でも、ユーザにステップS7のプリンタオブジェクト制御処理を実行する機会を与えるようにしても良い。この場合は、プリンタオブジェクト制御処理の実行の有無を確認する確認画面1800(図20)を、ホストコンピュータ100上に提示する。そして、この確認画面1800を介する操作(OKボタン1801あるいはキャンセル1802)に応じて、プリンタオブジェクト制御処理を実行するようにしても良い。
以上説明したように、実施形態7によれば、ホストコンピュータ100にインストール済みのプリンタと同機種の別のプリンタを接続したときに、次の処理を実行する。特に、ホストコンピュータ100に他の同機種のプリンタが既に接続されていなければ、OSが作成するプリンタオブジェクトを制御する。これによって、既にインストール済みのプリンタのプリンタオブジェクトから新規インストールされたプリンタのプリンタオブジェクトへのポート情報の引継(更新)を可能とする。これに加えて、既にインストール済みのプリンタのプリンタオブジェクトの削除を可能とする。これにより、プリンタオブジェクトを切り替えることなく、既に接続されていたプリンタと同じ設定のプリンタオブジェクトを使用することができる。
また、同機種のプリンタをホストコンピュータ100に複数同時に接続する場合でも、既に接続されているプリンタが使用不可能にならずにそれぞれのプリンタを使用することもできる。
<実施形態8>
実施形態7では、図19のステップS6−3−7で、プリンタB400のプリンタ情報と一致するプリンタ情報を有する既存プリンタオブジェクトが既に記憶部102に存在する場合、次の処理を実行した。つまり、既存のプリンタオブジェクトのポート情報から、ポートにプリンタが接続されているか否かを判定し、その判定結果に基づいて、プリンタオブジェクト制御処理を実行する。
これに対し、実施形態8では、実施形態7の構成に加え、プリンタが接続済である場合、そのプリンタオブジェクトのポートがネットワークポートであるか否かを判定し、その判定結果に基づいて、プリンタオブジェクト制御処理を行う構成としている。
これにより、よりユーザの用途や目的に応じたプリンタオブジェクト制御処理を実現することができる。
この処理は、実施形態7の図19のステップS6−3−7で、プリンタが接続済である場合に、ステップS6−1−8及びステップS6−2−8を追加した図21に示す判定処理(図9のステップS7の置換)で実現される。
以下、実施形態8の判定処理の詳細について、図21を用いて説明する。
図21は本発明の実施形態8の判定処理の詳細を示すフローチャートである。
尚、図21のフローチャートにおいて、図19のフローチャートと同一のステップは、同一のステップ番号を付加し、その詳細については省略する。
ここで、プリンタオブジェクトのプリンタ情報の一部であるポート情報には、USBポートの他にネットワークアドレスを指定できるのが一般的である。例えば、Windows(登録商標)オペレーティングシステムの場合、ネットワークアドレスとして、ネットワークパス名「¥¥Network¥PrinterA」が指定されているのが一般的である。
そこで、実施形態8では、ステップS6−3−7で、プリンタが接続済である場合、ステップS6−1−8で、そのプリンタのプリンタオブジェクトのポート情報がネットワークポートであるか否かを判定する。
この判定は、既存プリンタオブジェクトのポート情報に、ネットワークポートであることを示す「¥¥」が含まれているか否かを判定することにより行う。また、情報の比較については、API関数1008を利用する。
ステップS6−1−8において、ネットワークポートでない場合(ステップS6−1−8でNO)、ステップS7のプリンタオブジェクト制御処理を行わずに、処理を終了する。一方、ネットワークポートである場合(ステップS6−1−8でYES)、ステップS6−2−8に進む。
ステップS6−2−8で、確認画面1800(図20)を表示し、プリンタオブジェクト制御処理の実行の有無を判定する。そして、確認画面1800において、OKボタン1801が操作された場合(ステップS6−2−8でYES)、プリンタオブジェクト制御処理の実行として、ステップS7に進む。一方、確認画面1800において、キャンセルボタンが操作された場合(ステップS6−2−8でNO)、ステップS7のプリンタオブジェクト制御処理は行わずに、処理を終了する。
尚、実施形態8では、ステップS6−3−7の後に、ステップS6−1−8の処理を行ったが、ステップS6−1−7〜ステップS6−3−7を実行せずに、ステップS6−1−8及びステップS6−2−8の処理だけを実行することも可能である。
また、ステップS6−1−8では、ポートがネットワークポートであるか否かを判定する構成としている。これ以外に、ポートが、例えば、IEEE1394ポート、ブルートゥースポート、無線LANポート、パラレルポート等の各種ポートであるか否かを判定し、その判定結果に基づいて、プリンタオブジェクト制御処理を実行するようにしても良い。
以上説明したように、実施形態8によれば、ホストコンピュータ100にインストール済みのプリンタと同機種の別のプリンタを接続したときに、インストール済みのプリンタが接続されていない場合は、OSが作成するプリンタオブジェクトを制御する。あるいは、ネットワークポートが接続されていた場合は、OSが作成するプリンタオブジェクトを制御する。これにより、既にインストール済みのプリンタのプリンタオブジェクトから新規インストールされたプリンタのプリンタオブジェクトへのポート情報の引継(更新)と、既にインストール済みのプリンタのプリンタオブジェクトの削除を可能とする。これにより、プリンタオブジェクトを切り替えることなく、既に接続されていたプリンタと同じ設定のプリンタオブジェクトを使用することができる。
特に、ネットワークプリンタは、複数のユーザが共有しているプリンタであり、ホストコンピュータに直接接続して単独で使用するプリンタとは区別して管理されることが一般的である。そして、実施形態8のように、接続されたプリンタと既存のプリンタのプリンタオブジェクトを区別するかどうかの判定の機会を、ユーザに与えることは、よりユーザの意図に即したプリンタオブジェクト制御環境を提供できる。
<実施形態9>
実施形態1では、図11に示したように、インストール済みのプリンタと同機種の別のプリンタを接続したときには、次の処理を実行した。まず、新規に作成される別のプリンタの新規プリンタオブジェクト713に、既存プリンタオブジェクト712のプリンタ情報の一部(プリンタオブジェクト名称及びプリンタ設定情報)を引き継がせる(取得させる)。そして、既存プリンタオブジェクト712を削除して、プリンタオブジェクト714を生成するようにしている。しかしながら、これらの処理を条件によって処理を組み合わせられるようにしても良い。
例えば、Windows(登録商標)オペレーティングシステムでは、あるプリンタオブジェクトを操作する場合に、これを参照するユーザやプログラムに与えられるアクセス権を設定することができる。そして、プリンタオブジェクトの制御においても、このアクセス権が設定されていることが一般的である。
そこで、実施形態9では、このプリンタオブジェクトに対するアクセス権(プリンタ管理権限)に基づいて、プリンタオブジェクト制御処理の処理内容を制限する。
このような処理を実行することで、用途や目的に応じて、プリンタオブジェクト制御処理の処理内容を設定することが可能となる。
この処理は、実施形態1の図9のステップS7を、ステップS7−9〜ステップS15−9に置換した図22に示すプリンタオブジェクト制御処理で実現される。
以下、実施形態9のプリンタオブジェクト制御処理の詳細について、図22を用いて説明する。
図22は本発明の実施形態9のプリンタオブジェクト制御処理の詳細を示すフローチャートである。
まず、ステップS7−9で、オペレーティングシステムにログインしているユーザのプリンタ管理権限の有無を判定する。
この判定には、様々な方法が存在するが、例えば、Windows(登録商標)オペレーティングシステムにおけるプリンタ管理権限の有無は、OpenPrinterのようなAPI関数を用いて判定する。このAPI関数は、制御対象のプリンタのハンドルを取得するものである。ハンドルとは、Windows(登録商標)オペレーティングシステムにおいて、システム内で単一な数値であることが保証されているプリンタオブジェクトにアクセスするのに必要な値である。
そして、このAPI関数を使用して、プリンタ管理権限でハンドルを取得できるか否かで、ユーザのプリンタ管理権限の有無を判定することができる。
また、実施形態9では、プリンタ管理権限があるユーザは、プリンタ設定情報の入替、プリンタオブジェクトの削除、プリンタオブジェクト名称の変更を行うことが可能であるとする。また、プリンタ管理権限がないユーザは、プリンタ設定情報の入替は可能であるが、プリンタオブジェクトの削除やプリンタオブジェクトの名称の変更は行えないものとする。
尚、このプリンタ管理権限に基づくプリンタオブジェクト制御処理で制限する処理内容の種類は、これに限定されるものではなく、用途や目的に応じて、様々な組み合わせを設定可能であることは言うまでもない。また、処理内容の実行の有無の設定は、例えば、フラグを用いて実現する。
ステップS7−9において、プリンタ管理権限がない場合(ステップS7−9でNO)、ステップS8−9に進む。そして、プリンタオブジェクト制御処理の処理内容の実行の有無を示すフラグとして、設定情報入替フラグをTRUE、名称変更フラグ及びプリンタ削除フラグをFALSEに設定する。この設定内容は、例えば、記憶部102に記憶される。
一方、ステップS7−9において、プリンタ管理権限がある場合(ステップS7−9でYES)、ステップS9−9に進む。そして、プリンタオブジェクト制御処理の処理内容の実行の有無を示すフラグとして、設定情報入替フラグ、名称変更フラグ及びプリンタ削除フラグをTRUEに設定する。この設定内容は、例えば、記憶部102に記憶される。
ステップS10−9で、記憶部102を参照して、設定入替フラグの内容を判定する。設定入替フラグがTRUEである場合、ステップS11−9に進み、プリンタ設定情報の入替を行う。これは、図10のステップS8に相当する。その後、ステップS12−9に進む。一方、設定入替フラグがFALSEである場合、プリンタ設定情報の入替は行わずに、ステップS12−9に進む。
ステップS12−9で、記憶部102を参照して、名称変更フラグの内容を判定する。名称変更フラグがTRUEである場合、ステップS13−9に進み、プリンタA200のプリンタオブジェクトを削除する。これは、図10のステップS9に相当する。その後、ステップS14−9に進む。一方、名称変更フラグがFALSEである場合、プリンタオブジェクトの削除は行わずに、ステップS14−9に進む。
ステップS14−9で、記憶部102を参照して、名称変更フラグの内容を判定する。名称変更フラグがTRUEである場合、ステップS15−9に進み、プリンタオブジェクト名称の入替を行う。これは、図10のステップS10に相当する。その後、処理を終了する。一方、名称変更フラグがFALSEである場合、プリンタオブジェクト名称の入替を行わずに、処理を終了する。
以上説明したように、実施形態9によれば、ホストコンピュータ100にインストール済みのプリンタと同機種の別のプリンタを接続したときに、次の処理を実行する。つまり、ユーザの持つプリンタ管理権限の有無により、OSが作成するプリンタオブジェクトを制御する制御内容を制限(指定)する。これにより、用途や目的に応じてプリンタ設定情報の引継ぎ(更新)や、既にインストール済みのプリンタのプリンタオブジェクトから新規インストールされたプリンタのプリンタオブジェクトへのポート情報の引継(更新)を可能とする。これに加えて、既にインストール済みのプリンタのプリンタオブジェクトの削除を可能とする。
尚、上記各実施形態では、ホストコンピュータに接続可能なデバイスとして、例えば、プリンタを例に挙げて説明したが、プリンタ以外のデバイス、例えば、スキャナ、デジタルカメラ等の各種デバイスに対しても、本発明を適用することができる。この場合、上述のプリンタオブジェクトやプリンタ情報は、適用するデバイスに対応するデバイスオブジェクトやデバイス情報を用いて、各実施形態を実行することになる。
また、用途や目的に応じて、上記実施形態1乃至9を任意に組み合わせた実施形態を実現するようにしても良い。
尚、本実施形態が実現される環境においては、印刷の設定も個々に設定しなおさなければいけないと言う手間が生じる。つまり、発明が解決しようとする課題で説明する状況の例では、各営業マンは最大5個までのプリンタオブジェクトが自己のノートパソコンに存在してしまい、印刷時に実際に接続されているモバイルプリンタを確認して切り替える手間が生じる。
また、プリンタの故障時にそのプリンタの代替機を使用する場合は、代替機を接続することによって、その故障したプリンタに対するプリンタオブジェクトに加えて、代替機に対応する新しいプリンタオブジェクトが作成されることになる。しかしながら、作成されるプリンタオブジェクトは、故障機と代替機とで区別して表示されるわけではないので、どのプリンタオブジェクトが代替機のものであるかを容易に判別することができない。加えて、同一機種にも関わらず、プリンタ設定等の初期設定を再度行わなければならず手間が生じる。
ここで、上記実施形態によれば、このような課題についても解決することが可能となる。
以上、実施形態例を詳述したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
尚、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラム(実施形態では図に示すフローチャートに対応したプログラム)を、システムあるいは装置に直接あるいは遠隔から供給する。そして、そのシステムあるいは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であっても良い。
プログラムを供給するための記録媒体としては、例えば、フロッピー(登録商標)ディスク、ハードディスク、光ディスクがある。また、更に、記録媒体としては、光磁気ディスク、MO、CD−ROM、CD−R、CD−RW、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などがある。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、その接続先のホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。また、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現される。