以下、本発明の実施の形態を、図面を参照して説明する。以下で引用されるWindows 7 Operating Systemの情報の内、特に詳しい説明を付加していないものに関しては、2010年4月20日現在、Microsoft Developer Network (MSDN)のサイト(http://msdn.microsoft.com/en-us/library/default.aspx)でインターネット上で公開されている情報であるので、必要以上の説明を省略する。
以下において、USBとは、Universal Serial Busを表し、2010年4月20日現在、Universal Serial Busのサイト(http://www.usb.org/home)上で公開されている情報であるので、必要以上の説明を省略する。
以下において、WSDとは、Web Services on Devicesを表し、2010年4月20日現在、Windows Hardware Developer Centralのサイト(http://www.microsoft.com/whdc/connect/rally/rallywsd.mspx)上で公開されている情報であるので、必要以上の説明を省略する。
以下において、WIAとは、Windows Image Acquisitionの略であり、Windows Operating System上でイメージスキャナ等から画像を入力する為の標準インタフェース(API)であるので、必要以上の説明を省略する。
以下において、TWAINとは、TWAIN Working Groupによって管理されているPCとスキャナやデジタルカメラとの間のインタフェースであり、2010年4月20日現在、TWAIN Working Groupのサイト(http://www.twain.org/)上でインターネット上で公開されている情報であるので、必要以上の説明を省略する。
[実施形態1]
<ネットワーク構成例>
図1は本発明に係る情報処理装置及び周辺装置からなる周辺装置制御システムの一実施形態におけるシステムの構成部分を表すブロック図である。図1において、情報処理装置1、2は、一般的なパーソナルコンピュータ(以降、PCと略す場合がある)で構成される。PC1、PC2は図2(a)に示すハードウェアで構成され、オペレーティングシステム(以降、OSと略す場合がある)として米国マイクロソフト社のWindows 7と同等のOSがインストールされている。PC1、PC2はそれぞれイーサネット(登録商標)で構成されるネットワーク4、8に接続されている。PC1等は、MFP等の周辺装置を制御する周辺装置制御装置として機能する。マルチファンクションプリンタ(以降、MFPと略す場合がある)3、777、888は、カラーインクジェットプリンタ、カラーファクシミリ、カラースキャナ、フラッシュメモリ用の外部ストレージ等で構成される。これらMFPは、本実施形態における周辺装置の一例である。
MFP3とMFP777はどちらもABC社製のKmmnというモデル名で、シリアル番号がそれぞれAABBCCXX0814、AABBCCXX0707のMFPである。これらのMFPのシリアル番号には、MFPのネットワークインタフェースのMACアドレスがそのまま使われている。シリアル番号は周辺装置すなわちMFPに固有の固有情報である。MFP888はABC社製のMnmkというモデル名で、シリアル番号がYY1218YY0730のMFPである。MFP888は無線LAN(IEEE 802.11b/g/n)と有線LAN(Ethernet)の両方のネットワークインタフェースに対応している。MFP888は、無線LANが有効の場合には有線LANが無効、有線LANが有効の場合には無線LANが無効というように、無線LANと有線LANを排他的に切り換えるような仕組みとなっている。その為、シリアル番号にMACアドレスをそのまま使わずに、無線LANデバイスとしてのMACアドレスAABBCCYY1218と、有線LANデバイスとしてのMACアドレスAABBCCYY0730の、それぞれの下位24ビットを組み合せたYY1218YY0730という値が使われている。図1では、MFP888が、有線LAN(イーサネット)が有効な状態でネットワーク4を介してPC1と接続されている状態を表している。ここで、MACアドレスの上位24ビット「AABBCC」は、製造元であるABC社に割り当てられている製造元情報である。尚、本実施形態における周辺装置としては、プリンタ、複写機、ファクシミリ、スキャナ、デジタルカメラ、デジタルビデオカメラ、及びこれらの複合機能を備える装置等であってもよい。
MFP3、MFP777、MFP888は図2(b)で後述するようなハードウェアで構成され、PC1とUSBインタフェース14及びネットワーク4を介して接続されており、互いに双方向通信が可能である。アプリケーション80は、Windows用の実行可能形式のファイル(*.EXE)で構成されるデバイス管理プログラムである。実行中のデバイス管理プログラムは、論理的には周辺装置を管理する周辺装置管理機能部として抽象化される。本発明のアプリケーションの一例として、アプリケーション80は図5(b)に示すようなデバイス管理画面を表示する機能を備える。アプリケーション142は図6(b)で後述するTWAIN対応のアプリケーションプログラムである。TWAINアプリケーション142の実行ファイル名は、TWAINScan.exeである。TWAINドライバ141は図7(b)で後述するドライバプログラムである。ネットワーク4は、MFP3、MFP777、MFP888、後述するMFP7を使用するユーザ(顧客)が住んでいる自宅に構築された一般家庭用のホームネットワークである。MFP3、MFP777、MFP888、MFP7はこの自宅内でネットワーク4を介してPC1と接続されて家族間で共有使用されているMFPである。ネットワーク8はABC社内に構築されたオフィスネットワークである。ネットワーク8に接続されているPC2はWebサーバの機能を備えるWebサーバ9を備えており、インターネットを介してABC社のWebサイトを提供している。CD−ROM10はPC1に挿入可能な記録媒体であり、ソフトウェアや電子ファイルが格納されている。尚、本発明の実施形態では、このような記憶媒体の例としてCD−ROMを挙げたが、例えばDVD−ROM等の任意の記憶媒体を利用することができる。ファイル格納部11、12は、Webサーバ9やCD−ROM10内に設けられ、図8、図9で後述するデバイス管理制御用ファイル800、850を格納している。デバイス管理制御用ファイル800、850は、ファイル格納部11や、CD−ROM10等の記録媒体から配布される。アナログ電話回線5は、PC1におけるMFP3を介したファクシミリの送信または受信に使用される。フラッシュメモリ6は、MFP3のフラッシュメモリ装着用のスロット(図では省略)に装着されると、PC1からストレージとして参照することができる。MFP7は、XYZ社製のDefgというモデル名で、シリアル番号がXXYYZZ001224であり、MFP3とは全く異なるデバイスである。このMFPのシリアル番号には、MACアドレスがそのまま使われている。
また、WIAを介して制御されるデバイス(例えばスキャナ)のために、WIAドライバ703、704およびWIAアプリケーション143もPC1にインストールされる。WIAドライバにはオペレーティングシステムにより提供されるコモンWIAドライバ703とハードウエアベンダにより提供されるIHV WIAドライバ704がある。
<PCおよびMFPのハードウエア>
図2はPCとMFPのハードウェア構成の一例を表すブロック図である。PC1、PC2は図2(a)に示すようなハードウェアで構成されている。図2(a)ではPC1の例で説明する。図2(a)に示す通り、PC1はランダムアクセスメモリ部(RAM201)、記憶部であるハードディスクドライブ部(HDD202)、入力部の一例であるキーボード部(KBD203)、制御部のCPU204、表示部の一例である表示用ディスプレイ(LCD205)、通信制御部の一例であるネットワークボード(NB207)、以上のPC1の構成要素を互いに接続するバス206を有する。USBインタフェース14用のUSBポートはNB207に含まれる。尚、記憶部は、可搬性CD−ROMまたは内部据付のROMなどであってもよい。デバイス管理プログラム80、TWAINアプリケーション142等のアプリケーションや、図3、図4、図7、図14に示す各モジュール(ソフトウェア)は、HDD202に記憶され、必要に応じてRAM201に読み出されてCPU204により実行される。これにより、CPU204が、デバイス管理80、TWAINアプリケーション142等のアプリケーションや、図3、図4、図7、図14に示す各モジュール(ソフトウェア)の機能を実現する。なおデバイス管理プログラム80は、単にデバイス管理80と称される。またデバイス管理プログラムは、周辺装置管理プログラムと呼ぶこともある。
MFP3、MFP777、MFP888は図2(b)に示すようなハードウェア構成を持つ。図2(b)ではMFP3の例で説明する。図2(b)において、CPU15はマイクロプロセッサ等から構成される、MFP3の中央処理装置である。CPU15は、ROM16に記憶されているプログラムに従って、RAM17、通信部18、記録部19、操作部20、表示部21、読取り部22、ファクシミリ制御部23、外部ストレージ制御部24を制御する。ROM16にはプリンタドライバ50(図4で後述する)の制御に従ってMFP3が記録(印刷)処理や、印刷動作の状態をPC1へ通知する処理を行うプログラムが記憶されている。また、ROM16には、FAXドライバ(図は省略)の制御に従ってMFP3がファクシミリの送信または受信処理や、ファクシミリの送信または受信の状態をPC1へ通知する処理を行うプログラムも記憶されている。さらに、ROM16には、WIAドライバ704やTWAINドライバ141の制御に従ってMFP3が画像の読取り処理や、読取り動作の状態をPC1へ通知する処理を行うプログラムも記憶されている。RAM17は主にPC1から送られて、それをもとに記録部19によって印刷される印字データが一時的に記憶される。また、RAM17には、読取り部22で読取られた画像データ、PC1から送られてきたファクシミリの送信データ、ファクシミリ制御部で受信されたファクシミリの受信データ等も一時的に記憶される。通信部18にはUSBインタフェース14、ネットワーク4用の接続ポート、アナログ電話回線5用の接続ポート等が含まれており、USB、Ethernet、ファクシミリのアナログ通信を制御する。
記録部19は、インクジェット方式の記録ヘッド、各カラーインク、キャリッジ、記録紙搬送機構等から構成される記録ユニットと、前記印字データをもとに前記記録ヘッドにて印字用パルスを発生させる為のASIC等から構成される電気回路とから構成される。印刷可能なアプリケーション上での印刷操作またはファクシミリの送信操作によって、アプリケーションで開かれているファイルの表示内容(画像データ)が、EMF形式のスプールファイルとしてPC1のHDD202に一時的に格納される。スプールファイルは、プリンタドライバ50またはFAXドライバを介してMFP3制御用コマンドを含む印字データまたはファクシミリの送信データに変換された後、USBインタフェース14またはネットワーク4を介してMFP3に送られる。MFP3にて受信された印字データは、記録部19で印字用パルスに変換されて、記録紙上に印刷される。MFP3にて受信されたファクシミリの送信データは、ファクシミリ制御部23でファクシミリの通信プロトコルに変換されて、アナログ電話回線5を介して相手先のファクシミリ装置に送信される。
操作部20は、電源ボタン、リセットボタン等の各種ボタンから構成され、MFP3を操作することができる。表示部21は、タッチパネルの液晶ディスプレイで構成され、MFP3の状態の表示や、各種設定や電話番号の表示、入力等を行うことができる。読取り部22は、カラーイメージセンサや画像処理用のASIC等から構成される電気回路とから構成され、スキャナ機能を制御する。ファクシミリ制御部23は、ファクシミリ用のモデムやアナログ通信回路等から構成され、ファクシミリの通信プロトコルに従ってファクシミリの送信や受信を制御する。外部ストレージ制御部24は、フラッシュメモリ装着用のスロットやストレージ用のインタフェース回路等から構成され、装着されたフラッシュメモリを制御する。
<PCのソフトウェア>
図3はPCのソフトウェア構成を表す図である。図3において、イーサネット制御スタック92はイーサネットを制御するプログラムである。IPネットワーク制御スタック91はIPネットワークを制御するプログラムである。WSD制御スタック90はWSDを制御するプログラムである。IHVネイティブプロトコル制御スタック89は、IHVの独自プロトコルを制御するプログラムである。N−PnP制御スタック88は、ネットワークのプラグアンドプレイ(以降、N−PnPと略す場合がある)を制御するプログラムである。尚、ネットワーク接続デバイスに対するサポートを提供する、プラグアンドプレイの一連の拡張機能としてWindows 7 OSに標準搭載されている機能として、Plug and Play Extensions(PnP−X)が存在する。しかしPnP−Xは、本実施形態ではN−PnPと同等の機能として前記N−PnPを利用する例で説明する。デバイスドライバ群85は、OSに標準で同梱されている標準ドライバ群87とインデペンデントハードウエアベンダ(IHV)から提供されるIHV製ドライバ群86から構成される。アプリケーション/DDIインタフェース84は、アプリケーションプログラミングインターフェース(API)と、デバイスドライバインターフェース(DDI)とから構成される。アプリケーション80は、OSに標準で同梱されているデバイス管理(Device Management)のためのユーティリティプログラムである。これを単にデバイス管理とも呼ぶ。アプリケーション30は、図4で後述する、印刷を行うことが可能なアプリケーションプログラムである。アプリケーション142は、図6(b)で後述するTWAIN対応のアプリケーションである。アプリケーション143は、図6(a)で後述するWIA対応のアプリケーションである。アプリケーション群82は、デバイス管理80、アプリケーション30、142、143等から構成される。デバイス管理80は、図5(a)で後述するデバイスとプリンターフォルダ500や、図5(b)で後述するデバイス管理画面600を、アプリケーション/DDIインタフェース84等を介して管理、実行、表示することができる。なおフォルダは、ハードディスク等のファイルストレージ内で、当該フォルダに属するオブジェクト(例えばファイルやフォルダ)をまとめるためのデータ構造である。図5(a)はフォルダそのものではなくユーザインタフェースの一例であるが、本実施形態ではユーザインタフェースについてもフォルダと同じ参照番号で示す。また図5(a)と同様に、本明細書全体にわたって、プログラムの提供する代表的な(たとえば実行時に最初に表示される)ユーザインタフェースを、そのプログラムと同じ参照番号を用いて示すことにする。
<プリンタドライバの構成>
図4はPCにおけるプリンタドライバの構成を表す図である。図4において、ドライバ50はPC1にインストールされているMFP3用のプリンタドライバであり、複数のモジュール33〜36、39から構成される。印刷機能を有するアプリケーション30は、例えば、OSに標準で同梱されているテキストエディタであるNotepad(Notepad.exe)等に相当する。Graphics Device Interface(GDI)31はOSの一部である。プリンタキュー32は、スプーラ40の一部として構成され、印刷ジョブがキューイングされる。プリントプロセッサ33は、印刷レイアウトの変更や印刷画像に対する特殊処理を行う。グラフィックスドライバ34は、プリンタドライバ50の画像処理のコアとして、GDI31から送られて来る描画命令をもとに印刷用の画像処理を行い、印刷制御コマンドを作成する。UIモジュール35は、プリンタドライバ50のユーザインタフェースの提供及び制御を行う。ランゲージモニタ36は、データの通信インタフェースとしてデータの送受信を制御する。ステータスモニタ39は、MFP3のインクの残量や、警告、エラー等の状態を表示する。ポートモニタ37は、ランゲージモニタ36から送られて来るデータを適切なポートに対して送信したり、MFP3から送られて来るデータをクラスドライバ38を介して受信したりする処理を行う。クラスドライバ38は、最もポートに近いローレベルのモジュールである。本実施形態では、クラスドライバ38はWSDやIHVの独自プロトコルのプリンタクラスのドライバに相当し、ポート(本実施形態ではUSBまたはネットワークポート)を制御する。プリンタドライバ50はMFP3の製造元であるABC社製のものである。
<「デバイスとプリンター」及びデバイス管理画面>
図5はデバイスとプリンターフォルダとデバイス管理画面を表す図である。図5(a)はユーザがデバイスとプリンターフォルダを選択して開くための操作を行うことで表示される。図5(a)において、デバイスとプリンターフォルダ500は、PC1の表示画面上に表示され、PC1で利用できる状態となっている周辺装置(例えばプリンタやFAX)がドライバ毎にこの中に表示される。本実施形態においては、XYZ Defgという名称のデバイス501とABC Kmmnという名称のデバイス503が利用可能なデバイスとして表示されている。デフォルトマーク502は、システムのデフォルトデバイスを示すもので、ここでは、デバイス501がデフォルトデバイスに設定されている状態を表す。なおデフォルトデバイスとは、上述したようにドライバ毎に表示されており、デフォルトデバイスのドライバを示すものでもあるから、デフォルトドライバと呼ぶこともできる。デバイスとプリンターフォルダ500において、デバイスのアイコンが点線で示されているデバイス501は利用できない状態であることを表し、実線で示されているデバイス503は利用可能な状態であることを表す。
図5(b)において、デバイス管理画面600は、図5(a)に示すデバイスとプリンターフォルダ500内のデバイスが選択されることにより起動されて、表示される。図5(b)ではデバイス503が選択された例を示す。このデバイス管理画面600を使ってMFP3の管理を行うことができる。デバイス管理画面600の上部には、デバイスアイコン601、デバイス名602、製造元情報603が表示される。デバイスアイコン601のデータは、デバイス管理制御用ファイル格納部905の一部として保持されている(不図示)。また、デバイス名602には、デバイスとプリンターフォルダ500のデバイス503のデバイス名称が、製造元情報603には、図8、図9に示す<dm:manufacturer>要素801に指定された文字列が表示される。デバイス管理画面600の下部には、デバイス503に関連付けられた機能へのリンクが表示されている。図5(b)の例では、プリンタキューボタン604、印刷設定ボタン605、画像の読み込み(WIA)ボタン610、画像の読み込み(TWAIN)ボタン611が表示される。図8、図9に示す<dm:functions>要素803、853の中に、それぞれのボタン及び機能を表す<dm:function>要素804、839、840、841、842、843、844が記載されている。画像の読み込み(TWAIN)ボタン611は、PC1とMFP3の接続状況に応じてTWAINアプリケーション142起動時にセットされる引数が異なる。
<ドライバの選択>
図6はWIAアプリケーション143とTWAINアプリケーションそれぞれにより提供されるユーザインタフェース(UI)を表す図である。図6(a)において、ユーザインタフェース143は、OS標準のWIAアプリケーション143のメインダイアログである。なお上述の通り、本実施形態ではプログラムの提供する代表的なユーザインタフェースをそのプログラムの参照番号と同じ番号を付する。WIAアプリケーション143は図7(a)に示すコモンWIAドライバ703またはIHV WIAドライバ704等と連携してMFP3のスキャナを使って画像を読取ることができるソフトウェアである。スキャナ選択部620は、画像を読取るスキャナ(ドライバ)として、PC1にインストールされているWIAドライバを選択することができる。図6(a)では、一例として「Kmmn (WIA)」が選択されている状態を表す。スキャナ(ドライバ)の選択は、スキャナ変更ボタン624を押下することで表示される、図6(c)で後述するスキャナ選択ダイアログ622上で行うことができる。
図6(c)は、スキャナ選択ダイアログの一例を表す図である。図6(c)において、ダイアログ622はOS標準のスキャナ選択ダイアログである。スキャナ選択部623には、PC1にインストールされているWIAドライバのリストが表示され、その中からユーザが利用しようとするドライバを選択できる。ユーザがWIAドライバを選択することで、WIAアプリケーション143が使用する、画像を読取るスキャナ(ドライバ)を指定することができる。図6(c)では、スキャナとして次の何れかを選択することができる。
・Kmmn (WIA)
・Kmmn (WIA)_AABBCCXX0814
・Kmmn (WIA) AABBCCXX0707
・Mnmk (WIA)_YY1218YY0730
・Defg (WIA)_XXYYZZ001224。
「Kmmn (WIA)」は、USBインタフェース14を介してPC1に接続されたモデル名(Kmmn)のスキャナ用のIHV WIAドライバ704の選択肢を表す。図1の例では、IHV WIAドライバ704はMFP3に対してインストールされており、上記選択肢はこのドライバに対応する。「Kmmn (WIA)_AABBCCXX0814」、「Kmmn (WIA) AABBCCXX0707」、「Mnmk (WIA)_YY1218YY0730」、「XYZ Defg (WIA)_XXYYZZ001224」は、ネットワーク4を介してWSDを使ってPC1に接続された、OS標準のCommon WIAドライバ703の選択肢を表す。図1の例では、WIAドライバ703は、MFP3、MFP777、MFP888、MFP7に対してインストールされており、上記選択肢はこれらのドライバにそれぞれ対応する。すなわち図1のMFP7は、USBとネットワークという2つのインタフェースそれぞれでPC1に接続されており、MFP7のスキャナはそれぞれのインタフェースについてドライバがインストールされている。なお、図6(c)は、「Kmmn (WIA)」が選択されている状態を表す。
このように、ネットワークでWSDのプロトコルを利用したWIAの場合、デバイスに割り当てられるWIAドライバ名は、そのデバイスのモデル名とシリアル番号から構成される<モデル名>_<シリアル番号>という名前となる。WSDのプロトコルにおいて、デバイスのモデル名やシリアル番号の情報は図19で後述するメタデータ(<mex:Metadata>要素223内に含まれており、OSはこれらの情報をもとに、そのデバイス用のWIAドライバ名を決定して割り当てる。
図6(b)において、ABC社製のTWAINアプリケーション142は、図7(b)に示すTWAINドライバ141と連携してMFP3、MFP777、MFP888のスキャナを使って画像を読取ることができるソフトウェアである。図6(b)はTWAINアプリケーション142のメインダイアログを表す。スキャナ選択部621では、画像を読取るスキャナ(ドライバ)として、PC1にインストールされているTWAINドライバを選択することができる。本実施形態では、次の何れかを選択することができる。
・ABC Kmmn (TWAIN)
・ABC Kmmn (TWAIN)_AABBCCXX0814
・ABC Kmmn (TWAIN)_AABBCCXX0707
・ABC Mnmk (TWAIN)_AABBCCYY0730。
ここで「ABC Kmmn (TWAIN)」は、USBインタフェース14を介してPC1に接続されたスキャナ用のABC社製のTWAINドライバ141の選択肢を表す。図1の例では、TWAINドライバ141は、MFP3に対してインストールされており、上記選択肢はこのドライバに対応する。「ABC Kmmn (TWAIN)_AABBCCXX0814」、「ABC Kmmn (TWAIN)_AABBCCXX0707」、「ABC Mnmk (TWAIN)_AABBCCYY0730」は、ネットワーク4を介してWSDを使ってPC1に接続されてたスキャナ用のTWAINドライバ141の選択肢を表す。図1の例では、これらTWAINドライバ141は、それぞれMFP3、MFP777、MFP888にそれぞれに対してインストールされており、これら選択肢はそれぞれのドライバに対応する。前述した通り、ネットワーク4を介してインストールされたMFP3、MFP777にそれぞれ割り当てられたTWAINドライバ141の選択肢は、「ABC Kmmn (TWAIN)_************」という「<モデル名>_<シリアル番号>」の名称を持つ選択肢となっている。また、ネットワーク4を介してインストールされたMFP888に割り当てられたTWAINドライバ141の選択肢も、「ABC Mnmk (TWAIN)_************」という同様の選択肢となっている。ここで、************の部分はそのデバイスのシリアル番号が割り当てられているが、本実施形態では、このシリアル番号は通信部18のハードウェア固有に与えられたMACアドレスを利用して構成されている。図図6(b)では、「ABC Kmmn (TWAIN)」が選択されている状態を表す。TWAINアプリケーション142は、スキャナ選択部621で選択されているTWAINドライバを使って、そのTWAINドライバが割り当てられているスキャナ(MFP)で画像(原稿)の読取り等の、画像の読取りに関する制御を行う。
TWAINアプリケーション142は、次に示す起動時の引数により、アプリケーション起動時に選択されるデフォルトのスキャナ(ドライバ)と、起動元とを指定する機能を備える。
第1引数: TWAINドライバ名
第2引数: 起動元
/devmng・・・デバイス管理画面から起動
/other・・・デバイス管理画面以外から起動
起動元としては本例では以上2つの値を設定可能である。
<ドライバ起動時のパラメータ例>
ドライバ起動時のパラメータ例をいくつか示す。
[例1]
TWAINScan.exe "ABC Kmmn (TWAIN)" /devmng
デバイス管理画面600上からTWAINアプリケーション142を起動して、USB接続でTWAINドライバ141を使ってMFP3で画像を読取るケースの例。
[例2]
TWAINScan.exe "ABC Kmmn (TWAIN) WSD" /devmng
デバイス管理画面600上からTWAINアプリケーション142を起動して、WSDのネットワーク接続でTWAINドライバ141を使ってMFP3またはMFP777で画像を読取るケースの例。
[例3]
TWAINScan.exe "ABC Kmmn (TWAIN) Network" /devmng
デバイス管理画面600上からTWAINアプリケーション142を起動して、IHVネイティブプロトコルのネットワーク接続でTWAINドライバ141を使ってMFP3またはMFP777で画像を読取るケースの例。
[例4]
TWAINScan.exe "ABC Kmmn (TWAIN)_************" /other
コマンドライン(不図示)等のデバイス管理画面600以外からTWAINアプリケーション142を起動して、WSDのネットワーク接続でTWAINドライバ141を使ってMACアドレス************を有する通信部18のハードウェアを含むMFP3またはMFP777で画像を読取るケースの例。
例2と例4はTWAINドライバ名を示す第1引数と起動元を示す第2引数がともに相違するが、ここでは特に第1引数に着目する。後に述べるデバイス管理画面600上からTWAINアプリケーション142を起動するケースのように、デバイス管理画面600がMACアドレスを取得できない場合には、例2に示すように第1引数として"ABC Kmmn (TWAIN) WSD"をセットしてTWAINアプリケーション142を起動することができる。これに対し、例えば、コマンドライン(不図示)からTWAINアプリケーション142を起動するケースのように、ユーザがMACアドレスを取得してその値を使って第1引数を指定できる場合には、例4に示すように第1引数として"ABC Kmmn (TWAIN)_************"をセットして、TWAINアプリケーション142を起動することができる。
[例5]
TWAINScan.exe "ABC Kmmn (TWAIN)" /other
コマンドライン(不図示)等のデバイス管理画面600以外からTWAINアプリケーション142を起動して、USB接続でTWAINドライバ141を使ってMFP3で画像を読取るケースの例。
例1と例5では、起動元を表す第2引数だけが相違するが、この第2引数を利用して、TWAINアプリケーション142が、起動元に応じて起動時または起動後の処理を切り換えることができ、ユーザの操作性を向上することができる。第1引数を付加してTWAINアプリケーション142を起動することで、スキャナ選択部621でスキャナ(ドライバ)を選択して指定する代わりに、画像を読取るスキャナ(ドライバ)を指定することができる。
[例6]
TWAINScan.exe "ABC Mnmk (TWAIN) WSD" /devmng
デバイス管理画面600上からTWAINアプリケーション142を起動して、WSDのネットワーク接続でTWAINドライバ141を使ってMFP888で画像を読取るケースの例。
[例7]
TWAINScan.exe "ABC Mnmk (TWAIN)_************" /other
コマンドライン(不図示)等のデバイス管理画面600以外からTWAINアプリケーション142を起動して、WSDのネットワーク接続でTWAINドライバ141を使ってMFP888で画像を読取るケースの例。
<PC1のソフトウェア>
図7はPCのソフトウェア構成を表す図である。図7(a)、図7(b)において、ドライバ705はOS標準のカーネルI/Oドライバである。図7(a)はWIAアプリケーション143を使ってMFP3で画像を読取る為に必要なソフトウェア構成を表す。アプリケーション143は図6(a)に示すOS標準のWIAアプリケーションである。ドライバ703はOS標準のCommon WIAドライバ、ドライバ704は製造元(ABC社)製のIHV WIAドライバである。OS標準のSTI/WIA Service702は、WIAアプリケーション143とWIAドライバ703、704のインタフェースである。
図7(b)はTWAINアプリケーション142を使ってMFP3で画像を読取る為に必要なソフトウェア構成を表す。アプリケーション142は図6(b)に示す製造元(ABC社)製のTWAINアプリケーションである。TWAINデータソースマネージャ707はOSに標準で添付されるプログラムである。ドライバ141は製造元(ABC社)製のTWAINドライバである。MFP3用のTWAINデータソースは、TWAINドライバ141の中に含まれている。図7において、網かけのプログラムはIHV製、すなわちベンダにより提供されるプログラムであり、網かけされていないプログラムはOSに同梱されるプログラムである。
<デバイス管理制御用ファイル>
図8はデバイス管理制御用ファイル800の内容を表す図である。デバイス管理制御用ファイル800は英語用のものである。この図に示す情報が、ファイル格納部11または12に格納されている。図8において、<dm:manufacturer>要素801にはデバイス(MFP3)の製造元であるABC社の名前がセットされている。<dm:model>要素802にはデバイス(MFP3)のモデル名であるKmmnがセットされている。これらの情報は、デバイス管理制御用ファイル800のインストール時に利用される。また、デバイス管理制御用ファイル800には、デバイス管理画面600を構成する為に必要な情報も記載されている。MFP3がPC1に接続されている時に起動して表示されるデバイス管理画面600上に、図5に示すプリンタキューボタン604、印刷設定ボタン605、画像の読み込み(WIA)ボタン610、画像の読み込み(TWAIN)ボタン611を表示する為に、それぞれのボタン及び機能を表す<dm:function>要素804、839、840、841、842、843が<dm:functions>要素803の中にセットされている。なお要素名の前のdmは名前空間を示すが、本実施形態では全ての要素がdm名前空間で定義されているので、dmを省略する場合もある。
<dm:function>要素804において、<dm:name xml:lang="en-US">OpenPrinterQueue</dm:name>要素805には、プリンタキューボタン604上に表示される「Open Printer Queue」という文字列がセットされている。<dm:execute>openPrinterQueue</dm:execute>要素806には、プリンタキューフォルダを表示する機能(プログラム)を表すopenPrinterQueueというコードがセットされている。ここでは図示しないが、プリンタキューフォルダは印刷ジョブの状態を表示する機能を備えている。name要素およびexecute要素は、例えば図5(b)に示す表示および操作に応じて実行される処理の決定のために参照される。本例では、実行されるプログラムがTWAINアプリケーションの場合に、たとえばexecute要素に記述されたプログラム名で特定されるサブプログラムを実行して対応する機能を実現する。
<dm:function>要素839において、<dm:name xml:lang="en-US">Printing Preferences</dm:name>要素807には、印刷設定ボタン605上に表示される「Printing Preferences」という文字列がセットされている。<dm:execute>printingPreferences</dm:execute>要素808には、印刷設定ダイアログを表示する機能(プログラム)を表すprintingPreferencesというコードがセットされている。ここでは図示しないが、印刷設定ダイアログとは、プリンタドライバ50のUIモジュール35に備えられている印刷設定画面を表す。
<dm:function>要素840において、<dm:name xml:lang="en-US">Image Scan (WIA)</dm:name>要素809には、画像の読み込み(WIA)ボタン610に表示される「Image Scan (WIA)」という文字列がセットされている。<dm:required>要素810には、画像の読み込み(WIA)ボタン610を表示する為の条件を表す情報がセットされている。<dm:device>scanner</dm:device>要素811は、USBインタフェース14またはWSDのネットワーク4を介してPC1に接続されているデバイスが、WIAドライバ704または703を利用したスキャナ機能を備えていることを表す。<dm:available>true</dm:available>要素812は、USBインタフェース14またはWSDのネットワーク4を介してPC1に接続されているデバイスにおいて、WIAドライバ704または703を利用したスキャナ機能が利用可能な状態であることを表す。即ち、<dm:required>要素810で表される条件とは、WIAドライバ704または703を利用した、USBまたはWSDのネットワーク接続での画像の読み込みが可能なことである。<dm:execute>wiaScan "WIAScannerName"</dm:execute>要素813には、WIAアプリケーション143を起動する機能(プログラム)を表す「
wiaScan "WIAScannerName"」というコードがセットされている。ここで、"WIAScannerName"は、MFP3に割り当てられたWIAドライバ名を表す変数である。MPF3がUSBインタフェース14を介してPC1に接続されている場合はWIAドライバ704のWIAドライバ名が、ネットワーク4を介してWSDを使ってPC1に接続されている場合はWIAドライバ703のドライバ名が、この変数に代入される。
<dm:function>要素841において、<dm:name xml:lang="en-US">Image Scan (TWAIN)</dm:name>要素814には、画像の読み込み(TWAIN)ボタン611に表示される「Image Scan (TWAIN)」という文字列がセットされている。<dm:required>要素845には、画像の読み込み(TWAIN)ボタン611を表示する為の条件を表す情報がセットされている。<dm:device>storage</dm:device>要素815は、USBインタフェース14を介してPC1に接続されているデバイスが、ストレージ機能を備えていることを表す。<dm:available>true</dm:available>要素816は、USBインタフェース14を介してPC1に接続されているデバイスのストレージ機能が、利用可能な状態であることを表す。PC1に接続されているデバイス(MPF3)のスキャナ機能が利用可能であることを判別するには、<dm:required>要素810を利用するのが一般的であると思われる。しかしながら、Windows 7 OSにおいては、<dm:required>要素810を利用する場合、TWAINドライバ141を利用したスキャナ機能において、USB接続とWSDのネットワーク接続を区別して、それぞれの接続に合わせて適切な制御を行う、というような自動切り換え制御を行うことができない。従って、<dm:required>要素810では、TWAINアプリケーション142の起動時の引数として、PC1とMFP3のインタフェースに応じて、それぞれのインタフェースにマッチする適切な値をセットすることができない。そこで、<dm:required>要素845で表されるような、スキャナ機能とは一切関係の無い別の機能である「ストレージ機能が利用可能であるという状態」を利用して、PC1とデバイス(MFP3)のインタフェースを特定したスキャナ機能の判別を行うことで、TWAINアプリケーション142起動時に適切な情報を引数としてセットして、ユーザの操作性を向上している。このように、<dm:required>要素845で表される条件とは、ここでは、TWAINドライバによるUSB接続での画像の読み込みが可能なケースのことである。<dm:execute>TWAINScan.exe "ABC Kmmn (TWAIN)" /devmng</dm:execute>要素817には、TWAINアプリケーション142を起動する機能(プログラム)を表す「TWAINScan.exe "ABC Kmmn (TWAIN)" /devmng」というコードがセットされている。これにより、画像の読み込み(TWAIN)ボタン611が押下された場合、デフォルトのスキャナ(ドライバ)にUSB接続のTWAINドライバ141を表す「ABC Kmmn (TWAIN)」がセットされた状態でTWAINアプリケーション142が起動される。
<dm:function>要素842において、<dm:name xml:lang="en-US">Image Scan (TWAIN)</dm:name>要素818には、画像の読み込み(TWAIN)ボタン611に表示される「Image Scan (TWAIN)」という文字列がセットされている。<dm:required>要素846には、画像の読み込み(TWAIN)ボタン611を表示する為の条件を表す情報がセットされている。<dm:device>storage</dm:device>要素819は、USBインタフェース14を介してPC1に接続されているデバイスが、ストレージ機能を備えていることを表す。<dm:available>false</dm:available>要素820は、USBインタフェース14を介してPC1に接続されているデバイスのストレージ機能が、利用できない状態であることを表す。PC1に接続されているデバイス(MPF3)のスキャナ機能が利用できない状態であることを判別するには、
<dm:required>
<dm:device>scanner</dm:device>
<dm:available>false</dm:available>
</dm:required>
を利用するのが一般的であると思われる。しかしながら、Windows 7 OSにおいては、この<dm:required>要素を利用する場合、TWAINドライバ141を利用したスキャナ機能において、USB接続とWSDのネットワーク接続とを区別して、それぞれの接続に合わせて適切な制御を行う、というような自動切り換え制御を行うことができない。従って、この<dm:required>要素では、TWAINアプリケーション142の起動時の引数として、PC1とMFP3のインタフェースに応じて、それぞれのインタフェースにマッチする適切な値をセットすることができない。そこで、<dm:required>要素846で表されるような、スキャナ機能とは一切関係の無い別の機能である「ストレージ機能が利用できないという状態」を利用して、PC1とデバイス(MFP3)のインタフェースを特定したスキャナ機能の判別を行うことで、TWAINアプリケーション142起動時に適切な情報を引数としてセットして、ユーザの操作性を向上している。このように、<dm:required>要素846で表される条件とは、ここでは、TWAINドライバによるUSB接続での画像の読み込みができないケースのことであり、例えば、PC1とMFP3がUSBインタフェース14やネットワーク4を介して接続されていないケースを表す。このようなケースにおいては、TWAINアプリケーション142を起動する、不明なデバイス用の画像の読み込み(TWAIN)ボタン611を構築する為の情報をセットしておく。
<dm:execute>TWAINScan.exe "" /devmng</dm:execute>要素821には、TWAINアプリケーション142を起動する機能(プログラム)を表す「TWAINScan.exe "" /devmng」というコードがセットされている。
<dm:function>要素843において、<dm:name xml:lang="en-US">Image Scan (TWAIN)</dm:name>要素822には、画像の読み込み(TWAIN)ボタン611に表示される「Image Scan (TWAIN)」という文字列がセットされている。<dm:required>要素847には、画像の読み込み(TWAIN)ボタン611を表示する為の条件を表す情報がセットされている。<dm:device>printer</dm:device>要素823は、PC1に接続されているデバイスが、プリンタ機能を備えていることを表す。<dm:available>true</dm:available>要素824は、PC1に接続されているデバイスのプリンタ機能が、利用可能な状態であることを表す。<dm:port>WSD</dm:port>要素825は、デバイスのプリンタ機能を利用する為のポートがWSDポートであることを表す。ここで、WSDポートとは、WSDを利用したネットワーク接続のポートである。尚、<dm:port>WSD</dm:port>要素825はOSの標準機能として定義されている。PC1に接続されているデバイス(MPF3)のスキャナ機能が利用可能であることを判別するには、<dm:required>要素810を利用するのが一般的であると思われる。しかしながら、Windows 7 OSにおいては、<dm:required>要素810を利用する場合、TWAINドライバ141を利用したスキャナ機能において、USB接続とWSDのネットワーク接続を区別して、それぞれの接続に合わせて適切な制御を行う、というような自動切り換え制御を行うことができない。従って、<dm:required>要素810では、TWAINアプリケーション142の起動時の引数として、PC1とMFP3のインタフェースに応じて、それぞれのインタフェースにマッチする適切な値をセットすることができない。そこで、<dm:required>要素847で表されるような、スキャナ機能とは一切関係の無い別の機能である「プリンタ機能が利用可能であるという状態」と「プリンタ機能のポート名」を利用して、PC1とデバイス(MFP3)のインタフェースを特定したスキャナ機能の判別を行う。こうして、TWAINアプリケーション142起動時に適切な情報を引数としてセットして、ユーザの操作性を向上している。このように、<dm:required>要素847で表される条件とは、ここでは、TWAINドライバによるWSDのネットワーク接続での画像の読み込みが可能なケースのことである。<dm:execute>TWAINScan.exe "ABC Kmmn (TWAIN) WSD" /devmng</dm:execute>要素826には、TWAINアプリケーション142を起動する機能(プログラム)を表す「TWAINScan.exe "ABC Kmmn (TWAIN) WSD" /devmng」というコードがセットされている。これにより、画像の読み込み(TWAIN)ボタン611が押下された場合、デフォルトのスキャナ(ドライバ)にWSDのネットワーク接続のTWAINドライバ141を表す「ABC Kmmn (TWAIN) WSD」がセットされた状態でTWAINアプリケーション142が起動される。これにより、図15に示すように適切なTWAINドライバが選択された状態でTWAINアプリケーション142を起動することができるので、ユーザの操作性に優れる。
デバイス管理制御用ファイルはデバイスに応じて予め作成され、例えばデバイスの持つ不揮発メモリ等に、PC1から読み出し可能に保存されている。そして、当該デバイスの接続がPC1によって認識されると、PC1は当該デバイスからデバイス管理用ファイルを読み出すなどして、そのデバイス管理用ファイルをインストールする。あるいは、PC1に予め保存されたデバイス管理用ファイルのうち、新たに接続されたデバイスのデバイス管理用ファイルを検索し、見つかった場合にそれをインストールしてもよい。
<デバイス管理およびTWAINアプリケーションの構成>
図14はデバイス管理とTWAINアプリケーションのソフトウェア構成を表す図である。図14において、デバイス管理80は、表示部901、デバイス管理制御部902、リンク実行部903、デバイス管理制御用ファイル読取り部904、デバイス管理制御用ファイル格納部905を有する。デバイス管理制御用ファイル格納部905には、後述する図11のステップS1405で保存された図8、図9それぞれで示したデバイス管理制御用ファイル800、850が格納されている。TWAINアプリケーション142は、起動元判断部906、アプリケーション制御部907、デフォルトデバイス設定部908、読取り制御部909、ステータス取得部910、デフォルトデバイス情報格納部911により構成される。デバイス管理画面600は、MFP3がUSBインタフェース14またはネットワーク4を介してPC1に接続されるか、あるいは、図5(a)に示すデバイスとプリンターフォルダ500内のデバイスが選択されることにより起動・表示される。ここでは、MFP3がUSBインタフェース14またはネットワーク4を介してPC1に接続され、図5(b)に示すデバイス管理画面600が起動・表示される場合の例を中心に説明する。
<デバイス接続手順>
図10はデバイス接続時の処理を表すフローチャートである。ここではデバイスとしてMFP3が新たに接続された場合の例を示す。図10のフローに係るプログラムは、HDD202に記憶されており、RAM201に読み出され、CPU204により実行される。図10の手順はオペレーティングシステムの一部として実行される。図10において、デバイス(MFP3)がPC(PC1)にUSBインタフェース14またはネットワーク4を介して接続されると(S1301)、PC1がデバイスIDを取得する(S1302)。デバイスIDは、例えば「MFG:ABC;MDL:Kmmn;CLS:PRINTER;CMD:K4;DES:ABC Kmmn;」のような文字列で表されるものである。PC1がUSBインタフェース14またはネットワーク4を介してMFP3から取得することができるMFP3のプリンタ機能のデバイスIDであり、次の情報を表す。
製造元(MFG:): ABC
モデル(MDL:): Kmmn
クラス(CLS:): PRINTER
コマンド(CMD:): K4(ABC社プライベートの印刷制御用コマンド)
ディスクリプション(DES:): ABC Kmmn。
次に、デバイス管理80が、PC1にドライバが既にインストール済みかを判断する(S1303)。有無が判断されるドライバは、MFP3の接続によりPC1が利用可能となるデバイスのドライバであり、例えばプリンタドライバ50、FAXドライバ、WIAドライバ703または704、TWAINドライバ141などである。ステップS1303において、ドライバが未だインストールされていないと判断された場合、OSが未インストールのドライバをインストールする(S1304)。ドライバは、オペレーティングシステムに同梱されて提供されているか、あるいはデバイスのベンダによりデバイスと共に提供される。S1304では、それらをハードディスクから、あるいは記録媒体から、あるいはネットワークからダウンロードしてインストールする。その後、OSがドライバをロードする(S1305)。ドライバが正しくロードされると、図5(a)に示すデバイスとプリンターフォルダ500にデバイス(MFP3)が登録された状態となる。なおプログラムのインストールに際しては、単に実行可能形式のプログラムファイルを保存するだけに留まらず、当該プログラムがインストールされたことを示す情報をオペレーティングシステムが管理するデータベース(レジストリ)に登録する必要がある。そこで、本実施形態でプログラムをインストールする、と言った場合、それはプログラムの複製と当該プログラムのデータベースへの登録を意味することとする。これはデータファイルのインストールについても同様である。
次にデバイス管理80が、PC1に図8、図9に示すデバイス管理制御用ファイル800、850が既にインストール済みかを判断する(S1306)。S1306では、既存のデバイス管理制御用ファイルが、S1304でインストールされたドライバ(プリンタドライバ50、FAXドライバ、WIAドライバ703または704、及びTWAINドライバ141)に整合するかが判定される。ステップS1306において、インストール済みのデバイス管理制御用ファイルがドライバと整合しているか否かは、デバイスIDに含まれる製造元(MFG:)、モデル(MDL:)情報をもとに判定される。ステップS1306において、デバイス管理制御用ファイル800、850が未だインストールされていない場合、デバイス管理80が、図11で後述するデバイス管理制御用ファイルのインストールの処理を実行する(S1307)。続いて、デバイス管理80が図12で後述するデバイス管理画面の起動の処理を実行し(S1308)、デバイス管理80がデバイス接続時の処理を完了する(S1309)。
一方ステップS1306において、デバイス管理制御用ファイル800、850が既にインストールされている場合、ステップS1308へ進む。ステップS1303において、ドライバ(プリンタドライバ50、FAXドライバ、WIAドライバ703または704、及びTWAINドライバ141)が既にインストールされている場合、ステップS1305へ進む。
<デバイス管理制御用ファイルのインストール手順>
図11はデバイス管理制御用ファイルのインストールの処理(S1307)を表すフローチャートである。図11のフローに係るプログラムは、HDD202に記憶されており、RAM201に読み出され、CPU204により実行される。図10のステップS1307において、デバイス管理制御用ファイルのインストールの処理が実行されると、図11において、デバイス管理80がデバイス管理のインストールの処理を開始する(S1401)。まず、デバイス管理80がUSBインタフェース14またはネットワーク4を介して接続されているデバイス(MFP3)のデバイスIDを参照する(S1402)。デバイスIDは、S1302で取得し、保存した情報である。このデバイスIDに含まれている製造元(MFG:)、モデル(MDL:)情報をもとに、デバイス管理80がPC1に接続されているデバイス(MFP3)用のデバイス管理制御用ファイル800、850を検索する(S1403)。図8、図9のデバイス管理制御用ファイル800、850には、<dm:manufacturer>要素(すなわち製造者要素)801、<dm:model>要素(すなわちモデル要素)802にデバイス(MFP3)に対応した製造元(MFG:)「ABC」、モデル(MDL:)「Kmmn」が記載されている。要素801、要素802に記載されている情報をもとに、デバイス管理80がWebサーバ9のファイル格納部11またはPC1に挿入されたCD−ROM10のファイル格納部12から、デバイス(MFP3)用のデバイス管理制御用ファイル800、850を検索する。すなわち、デバイスIDの製造元(MFG:)およびモデル(MDL:)情報と一致する製造元要素およびモデル要素を含むデバイス管理制御用ファイルが検索される。そして、デバイス管理80が、ファイル格納部11または12からデバイス制御用ファイル800、850が見つかったか否かを判断する(S1404)。ステップS1404において、デバイス管理制御用ファイル800、850が見つかった場合、デバイス管理80がそのデバイス管理制御用ファイル800、850をPC1のHDD202内の所定の位置に保存し(S1405)、デバイス管理80がデバイス管理制御用ファイル800、850をインストールする(S1406)。インストールが完了すると、デバイス管理80がデバイス管理制御用ファイルのインストールの処理を終了する(S1407)。本実施形態においては、デバイス(MFP3)に対応したデバイス管理制御用ファイル800、850が検出され、インストールされたものとする。ステップS1404において、デバイス管理制御用ファイル800、850が見つからなかった場合、デバイス管理80がデバイス制御用ファイル800、850をインストールせずに、デバイス管理制御用ファイルのインストールの処理を終了する(S1407)。
<デバイス管理画面の起動手順>
図12はデバイス管理画面の起動の処理(S1308)を表すフローチャートである。図12のフローに係るプログラムは、HDD202に記憶されており、RAM201に読み出され、CPU204により実行される。この手順は、図10のステップS1308において、デバイス管理80がデバイス管理の起動の処理を実行するか、あるいは、ユーザがデバイスとプリンターフォルダ500内のデバイス503を選択すると、デバイス管理80がデバイス管理画面の起動の処理を開始して実行される(S401)。デバイス管理制御部902がデバイスとプリンターフォルダ500にて選択されたデバイス名を取得する(S402)。本実施形態においては、デバイス503が選択されているので、「ABC Kmmn」というデバイス名が取得される。このデバイス名をもとに、デバイス管理制御用ファイル読取り部904が図11のステップS1405で保存された図8、図9に示すデバイス管理制御用ファイル800、850をロードする(S403)。このデバイス管理制御用ファイル800、850をもとに、デバイス管理制御部902が図13で後述するデバイス管理画面の表示内容の構築処理を実行する(S404)。ステップS404で構築されたデバイス管理画面の表示内容に従って、デバイス管理制御部902が表示部901を介してデバイス管理画面600を表示し(S405)、デバイス管理80がデバイス管理画面の起動の処理を終了する(S406)。この手順の結果、例えば図5(b)に示すようなデバイス管理画面600が表示される。
<デバイス管理画面の表示内容の構築手順>
図13はデバイス管理画面の表示内容の構築の処理(S404)を表すフローチャートである。図13のフローに係るプログラムは、HDD202に記憶されており、RAM201に読み出され、CPU204により実行される。図12のステップS404において、デバイス管理画面の表示内容の構築処理が実行されると、図13において、デバイス管理制御部902がデバイス管理画面の表示内容の構築の処理を開始する(S1201)。デバイス管理制御部902が図8、図9の<dm:name>要素805と<dm:execute>要素806の内容に従って、プリンタキューボタン604を構築する(S1202)。たとえば、name要素として記述された名称をボタンを示す画像オブジェクト上あるいは隣接してUIウインドウ画面に配置する。execute要素の内容は、当該ボタンに対して実行操作(例えばクリック)された場合に実行する機能あるいはラベルを示すもので、この例ではOpenPrinterQueueで示される機能(或いはプログラム)が関連づけられる。
デバイス管理制御部902が図8、図9の<dm:name>要素807と<dm:execute>要素808の内容に従って、印刷設定ボタン605を構築する(S1203)。デバイス管理制御部902が図8、図9の<dm:device>要素811と<dm:available>要素812の内容に従って、スキャナの接続とインストール状況を判定する(S1204)。MFP3がUSBインタフェース14を介してPC1に接続されていて、製造元(ABC社)製のIHV WIAドライバ704がインストールされている場合、あるいは、MFP3がネットワーク4を介してWSDを使ってPC1に接続されていて、OS標準のCommon WIAドライバ703がインストールされている場合(S1205)、ステップ1206へ進む。これらの何れにも該当しない場合(S1205)、ステップS1207へ進む。ステップS1206において、デバイス管理制御部902が図8、図9の<dm:name>要素809と<dm:execute>要素813の内容に従って、画像の読み込み(WIA)ボタン610を構築する。ステップS1206は、IHV WIAドライバ704またはCommon WIAドライバ703によるUSBまたはネットワーク(WSD)接続での画像の読み込みが可能なケースを表す。
ステップS1207において、デバイス管理制御部902が図8、図9の<dm:device>要素815と<dm:available>要素816の内容に従って、ストレージ機能の接続とインストール状況を判定する。MFP3がUSBインタフェース14を介してPC1に接続されていて、OS標準のストレージクラスのドライバがインストールされている場合(S1208)、ステップS1209へ進む。それ以外の場合(S1208)、ステップS1210へ進む。ステップS1209において、デバイス管理制御部902が図8、図9の<dm:name>要素814と<dm:execute>要素817の内容に従って、USB接続用の画像の読み込み(TWAIN)ボタン611を構築する。ステップS1209は、TWAINドライバ141によるUSB接続での画像の読み込みが可能なケースを表す。ステップS1210において、デバイス管理制御部902が図8、図9の<dm:name>要素818と<dm:execute>要素821の内容に従って、USB接続用の画像の読み込み(TWAIN)ボタン611を構築する。ステップS1210は、TWAINドライバ141によるUSB接続での画像の読み込みができないケース、例えば、PC1とMFP3がUSBインタフェース14やネットワーク4を介して接続されていないケースを表す。このようなケースにおいては、TWAINアプリケーション142を起動する、不明なデバイス用の画像の読み込み(TWAIN)ボタン611を構築する。
デバイス管理制御部902が図8、図9の<dm:device>要素823、<dm:available>要素824、及び<dm:port>要素825の内容に従って、プリンタの接続とインストール状況を判定する(S1211)。MFP3がネットワーク4を介してWSDを使ってPC1に接続されていて、プリンタドライバ50がインストールされている場合(S1212)、ステップS1213へ進む。それ以外の場合(S1212)、ステップS1214へ進み、デバイス管理画面の表示内容の構築処理を終了する。ステップS1213において、デバイス管理制御部902が図8の<dm:name>要素822と<dm:execute>要素826の内容、または図9の<dm:name>要素827と<dm:execute>要素831の内容に従って、ネットワーク(WSD)接続用の画像の読み込み(TWAIN)ボタン611を構築する。ステップS1213は、TWAINドライバ141によるネットワーク(WSD)接続での画像の読み込みが可能なケースを表す。その後、ステップS1214へ進み、デバイス管理画面の表示内容(すなわちデバイス管理画面の表示用データ)の構築処理を終了する。
なお、時13の手順では、MFPの各機能についてそれぞれ接続とインストール状況とを順次判定している。しかし図8等に示されているとおり、各機能はfunction要素として記述されているので、function要素を単位として、ループ処理を行っても良い。この場合には、各function要素内のname要素に記述されたパラメータを参照することで、接続されるべきデバイスおよびインストールされるべきドライバは決定できるので、決定されたデバイスの接続とドライバのインストール状況が判定される。そしていずれも満たされているなら、UIウインドウ内にボタンを構築することになる。このようにすることで、MFPの機能が本例に示すもの以外に存在したとしても、それに対するデバイス管理画面を柔軟に構築できる。
<TWAINアプリケーションの起動>
図15はTWAINアプリケーションの起動の処理を表すフローチャートである。図15のフローに係るプログラムは、HDD202に記憶されており、RAM201に読み出され、CPU204により実行される。デバイス管理画面600上の画像の読み込み(TWAIN)ボタン611が押下されると、図15において、TWAINアプリケーション142の起動の処理が開始される(S1501)。
ボタン押下に応じて、ステップS1501において、図14のデバイス管理80内のデバイス管理制御部902が、TWAINアプリケーション142を起動して、リンク実行部903を介して、ボタン611に関連づけられたプログラム名をアプリケーション制御部907に渡す。この例では、引き渡されるプログラム名は、たとえば図8の<dm:execute>要素817、821、または826に記載されている情報のうち、画面600の構築時にボタン611に関連づけられたプログラム名である。この情報から、アプリケーション制御部907が第1引数のTWAINドライバ名で表されたデバイス指定情報を取得する(S1502)。これを特に指定ドライバ名あるいは指定デバイス名と呼ぶ。
アプリケーション制御部907が第1引数のTWAINドライバ名、すなわち、デバイス指定情報の有無を判定し、デバイスの指定(デバイス指定情報)が有る場合(S1503)、ステップS1506へ進む。ステップS1503において、デバイスの指定(デバイス指定情報)が無い場合、ステップS1504へ進む。なお、ここではデバイスの指定とはドライバの指定そのものであるとする。本実施形態および他の実施形態において、PC1にインストールされたソフトウェアからみたデバイスとは、ハードウエアというよりむしろそのデバイスドライバであり、ソフトウェアから見たデバイスはドライバと言い換えることもできる。
本実施形態では、図8の<dm:execute>要素817または826に記載されている第1引数のTWAINドライバ名によりデバイスの指定すなわちドライバの指定が行われるので、ステップS1503からステップS1506へ進む。
また、第1引数がセットされずにTWAINアプリケーション142が起動された場合、あるいは図8の<dm:execute>要素821に記載されている第1引数のTWAINドライバ名により、不明なデバイスが指定されている場合、ステップS1503からステップS1504へ進む。
ステップS1504において、デフォルトデバイス設定部908はデフォルトデバイス情報格納部(具体的にはOSのレジストリ)911に格納され、管理されているデフォルトデバイス名(TWAINドライバ名で指定されるスキャナ)を読みこみ、ステップS1505へ進む。
ステップS1505において、読みこまれたデバイス名をTWAINアプリケーション142のデフォルトデバイスとして設定する。すなわち、RAMに設けたデフォルトデバイス情報の領域にS1504で読んだデフォルトデバイス名を複製する。なおRAMに設けたデフォルトデバイス名とは、これから実行されるアプリケーションの機能において使用される周辺装置を識別するための情報になる。ここでは、具体的には周辺装置を利用するために対応するデバイスドライバのドライバ名を用いている。
ステップS1506において、指定されたデバイス(TWAINドライバ名で指定されるスキャナ)がネットワーク接続されたデバイスであり、かつデバイス名(ドライバ名)にMACアドレスが含まれるかの判断を行う。MACアドレスなしのネットワーク接続デバイス([例]「ABC Kmmn (TWAIN) WSD」、「ABC Kmmn (TWAIN) Network」)であるならば、ステップS1508へ進む。また、ネットワーク接続デバイスでない場合([例]「ABC Kmmn (TWAIN)」)や、ネットワーク接続デバイスであってもMACアドレスを有する場合([例]「ABC Kmmn (TWAIN)_AABBCCXX0814」)にはステップS1507へ進む。ネットワーク接続デバイスでないとは、ネットワーク以外のインタフェースでPC1に接続されたデバイスである。尚、WSDのプロトコルの代わりにIHVの独自プロトコルを用いて、TWAINアプリケーション142が、その独自プロトコルを利用したTWAINドライバ141を介してデバイス(MFP)を制御する場合に、MACアドレスなしのネットワーク接続デバイスとして前記「ABC Kmmn (TWAIN) Network」が指定される。
ステップS1507において、指定されたデバイス(TWAINドライバ名で指定されるスキャナ)のデバイス(ドライバ)名をTWAINアプリケーション142のデフォルトデバイスに設定、すなわちデフォルトデバイス情報格納部911に格納し、ステップS1514へ進む。
ステップS1508において、デフォルトデバイス設定部908は指定されたネットワーク接続デバイス名で、デフォルトデバイス情報格納部911に格納された使用履歴情報を参照して過去に使用していたMACアドレス情報を取得する。ここで使用履歴情報は、図16のステップS1603で格納された使用履歴である。具体的には、S1508では、指定されたデバイス名と一致するデバイス名で使用履歴を検索する。
使用履歴に指定されたネットワークデバイスのMACアドレス情報が有ると判断された場合(S1509)にはステップS1510へ進む。一方、指定されたデバイス名が使用履歴に記録されていないか、またはデバイス名は記録されていてもMACアドレス情報が無い場合にはステップS1511へ進む。
ステップS1510において、ステップS1508で使用履歴情報から取得した、過去に使用していたネットワークデバイスのMACアドレス情報を含んだデバイス(ドライバ)名をTWAINアプリケーション142のデフォルトデバイスに設定する。ステップS1514へ進む。
ステップS1511において、指定されたデバイス名を持つネットワーク接続デバイスをネットワーク上で検索する。デ当該バイスがネットワーク上で見つかった場合には(S1512−YES)、ステップ1513に進み、最初に見つかったデバイス名およびそのMACアドレスをデフォルトデバイスとして設定し、ステップS1514に進む。
また、デバイスがネットワーク上で見つからなかった場合には、ステップS1504に進む。
ステップS1514において、アプリケーション制御部907がTWAINアプリケーション142を実行してUIを表示し、TWAINアプリケーションの起動処理を完了する(S1515)。ここで実行されるプログラムは、たとえば、押されたボタンに関連づけられた機能(すなわちプログラム名)に対応する、TWAINアプリケーション内のサブモジュールである。それにより、指摘された機能が実現される。
この時、ステップS1505、S1510、S1513で設定されたデフォルトデバイスが選択された状態で、TWAINアプリケーション142が起動して、表示されている。尚、TWAINアプリケーション142のデフォルトデバイスの情報は、TWAINアプリケーション142が管理するRAM201上のメモリ内に保持される。なお、RAMに保持されたデフォルトデバイス名は、TWAINアプリケーション142の終了と共に消去される。しかしこれを新たなデフォルトデバイスとしてレジストリに書き戻してもよい。
またRAMに保存されるデフォルトデバイスは、厳密には、レジストリにデフォルトデバイスとして登録されたときに初めてデフォルトデバイスとなるデバイスである。すなわち図15の手順は選択デバイス(すなわち選択ドライバ)を決定する手順ということもできる。これは図17、図18、図22についても同様である。
以上の手順により、TWAINアプリケーション142の起動時に、起動時のパラメータで指定されたデバイス名を、レジストリに予め保存されたデフォルトデバイスよりも優先して新たなデフォルトデバイスを決定する。すなわち、起動時のパラメータでデバイスがひとつに特定できれば当該デバイスを新たなデフォルトデバイスに設定する。起動時のパラメータで使用するデバイスがひとつに特定できなくても、候補を絞り込める場合には、その候補の中から、過去の使用実績があればそれを参照して、なければ接続されているデバイスから該当するデバイスを検索して新たなデフォルトデバイスを設定する。起動時のパラメータでデバイスが指定されていない場合や、指定されたデバイスが接続されていない場合には、レジストリに保存されたデフォルトデバイスをそのまま用いる。
<TWAINアプリケーションの終了>
図16はTWAINアプリケーションの終了の処理を表すフローチャートである。ステップS1601において、ユーザがTWAINアプリケーション142の終了を指示する。と、図16の手順が実行される。
ステップS1602において、選択中のデバイス名がネットワーク接続かどうかを判定する。ネットワーク接続であれば、ステップS1603に進む。一方、ネットワーク接続で無い場合にはステップS1604に進む。ステップS1603において、デフォルトデバイス情報格納部(具体的にはOSのレジストリ)911に選択中のデバイス名とともに、デバイスのMACアドレスを保存する。このステップはTWAINアプリケーション142のデフォルトデバイス設定部908により行われる。ステップS1604において、デフォルトデバイス情報格納部(具体的にはOSのレジストリ)911に選択中のデバイス名を保存する。ステップS1605において、TWAINアプリケーションを終了させる。このステップもTWAINアプリケーション142のデフォルトデバイス設定部908により行われる。
以上のようにして、TWAINアプリケーションの終了時には、その時点において使用するデバイスとして選択されているデバイスの名称を、過去に選択されていたデバイス名すなわちデバイスの使用履歴を示す情報として保存する。ネットワーク接続されたTWAINデバイスが選択されている場合には、当該デバイスのネットワークインタフェースのMACアドレスをも合わせて使用履歴として保存する。保存されたデバイス名およびMACアドレスは、次回TWAINアプリケーション142が起動された際、デバイスが指定されているもののアドレスも含めた完全な特定ができない場合にデバイスの指定のために参照される。
なお使用履歴は一世代としてもよいが、複数世代にわたって記録しても良い。たとえば二世代にわたって記録する場合には、最新の使用デバイスと、その前の使用デバイスのデバイス名およびMACアドレス(これを単に使用履歴とも呼ぶ)が記録される。複数世代にわたって使用履歴を記録する場合には、最も古い使用履歴が最新の使用履歴で上書きされるため、少なくとも最も古い使用履歴を特定する情報が付加される。これは例えば記録日時であってもよいし、記録領域の先頭と末尾とを論理歴に接続した環状のデータ構造を採用する場合には次の記録領域を示すマーク等であってもよい。複数世代の使用履歴を記録することで、たとえば複数のMFPが使い分けられている場合でも、各MFPの使用履歴が残りやすくなる。これはPC1の利用者が複数いる場合にも同様で、各利用者の使用履歴が残りやすくなる。またレジストリのデフォルトデバイスは更新されず、RAMのデフォルトデバイスのみ更新されることから、デバイス管理画面600以外からTWAINアプリケーション142を起動する場合には、もともとの設定されているデフォルトデバイスを利用しやすい。
なお使用履歴として専用の領域を用意せず、S1603、S1604ではレジストリのデフォルトデバイスとしてデバイス名を保存しても良い。その場合には、図15の手順でも使用履歴を参照するステップでは、使用履歴に代えてレジストリに保存されたデフォルトデバイスを参照する。こうすることで使用履歴の保存領域が不要となる。また、レジストリのデフォルトデバイスが、デバイス管理画面600からTWAINアプリケーション142を起動させて終了させる都度更新される。
<本実施形態の効果>
このようにして、本実施形態では、TWAINアプリケーションの起動時に、パラメータで指定されたデバイス名を、その時点でのデフォルトデバイスよりも優先して新たなデフォルトデバイスを決定する。すなわち、起動時のパラメータでデバイスがひとつに特定できれば当該デバイスをデフォルトデバイスに設定する。起動時のパラメータで使用するデバイスがひとつに特定できなくても、候補を絞り込める場合には、その候補の中から、過去の使用実績(履歴)があればそれを参照して、なければ接続されているデバイスから該当するデバイスを検索してデフォルトデバイスを設定する。起動時のパラメータでデバイスが指定されていない場合や、指定されたデバイスが接続されていない場合には、現在の(すなわち再設定前の)デフォルトデバイスをそのまま用いる。こうして、デバイスに関連づけられたアプリケーションプログラムを起動した際には、元々アプリケーションをたどるソースとなったデバイスが、当該アプリケーションのデフォルトとして利用される。
このためアプリケーションの実行時には、Device Stageで選択したデバイスが優先的にデフォルトデバイスとして使用される。
[実施形態2]
本実施形態は、図15に代えて図17を、図8に代えて図9を用いるが、その他の構成は実施形態1と同様である。
図9はデバイス管理制御用ファイル850の内容を表す図である。図9は本発明の特徴を最もよく表す図の内の1つである。デバイス管理制御用ファイル850は英語用のものである。この図に示す情報が、ファイル格納部11または12に格納されている。図9において、図8で既に説明したものと同じ内容に関しては同じ参照番号を付してその説明を省略する。図9において、<dm:manufacturer>要素801と<dm:model>要素802にセットされている情報は、デバイス管理制御用ファイル850のインストール時に利用される。また、デバイス管理制御用ファイル850には、デバイス管理画面600を構成する為に必要な情報も記載されている。MFP3がPC1に接続されている時に起動して表示されるデバイス管理画面600上に、図5に示すプリンタキューボタン604、印刷設定ボタン605、画像の読み込み(WIA)ボタン610、画像の読み込み(TWAIN)ボタン611を表示する為に、それぞれのボタン及び機能を表す<dm:function>要素804、839、840、841、842、844が<dm:functions>要素853の中にセットされている。
<dm:function>要素844において、<dm:name xml:lang="en-US">Image Scan (TWAIN)</dm:name>要素827には、画像の読み込み(TWAIN)ボタン611に表示される「Image Scan (TWAIN)」という文字列がセットされている。<dm:required>要素848には、画像の読み込み(TWAIN)ボタン611を表示する為の条件を表す情報がセットされている。<dm:device>printer</dm:device>要素828は、PC1に接続されているデバイスが、プリンタ機能を備えていることを表す。<dm:available>true</dm:available>要素829は、PC1に接続されているデバイスのプリンタ機能が、利用可能な状態であることを表す。<dm:port>WSD</dm:port>要素830は、デバイスのプリンタ機能を利用する為のポートがWSDポートであることを表す。ここで、WSDポートとは、WSDを利用したネットワーク接続のポートである。尚、<dm:port>WSD</dm:port>要素825はOSの標準機能として定義されている。PC1に接続されているデバイス(MPF3)のスキャナ機能が利用可能であることを判別するには、<dm:required>要素810を利用するのが一般的であると思われる。しかしながら、Windows 7 OSにおいては、<dm:required>要素810を利用する場合、TWAINドライバ141を利用したスキャナ機能において、USB接続とWSDのネットワーク接続を区別して、それぞれの接続に合わせて適切な制御を行う、というような自動切り換え制御を行うことができない。従って、<dm:required>要素810では、TWAINアプリケーション142の起動時の引数として、PC1とMFP3のインタフェースに応じて、それぞれのインタフェースにマッチする適切な値をセットすることができない。そこで、<dm:required>要素848で表されるような、スキャナ機能とは一切関係の無い別の機能である「プリンタ機能が利用可能であるという状態」と「プリンタ機能のポート名」を利用して、PC1とデバイス(MFP3)のインタフェースを特定したスキャナ機能の判別を行うことで、TWAINアプリケーション142起動時に適切な情報を引数としてセットして、ユーザの操作性を向上している。このように、<dm:required>要素848で表される条件とは、ここでは、TWAINドライバによるWSDのネットワーク接続での画像の読み込みが可能なケースのことである。<dm:execute>TWAINScan.exe "WIAScannerName" /devmng</dm:execute>要素831には、TWAINアプリケーション142を起動する機能(プログラム)を表す「TWAINScan.exe "WIAScannerName" /devmng」というコードがセットされている。前述した通り、"WIAScannerName"はMFP3に割り当てられたWIAドライバ名を表す変数であり、TWAINアプリケーション142とは一切関係の無い情報である。本実施形態では、図17、図18に示すように、TWAINアプリケーション142が、このWIAドライバ名を表す変数を使って、デバイス管理画面600上で選択されているデバイス専用のTWAINドライバ名を自動生成し、そのデバイス専用の最適なTWAINドライバが選択された状態でTWAINアプリケーション142を起動することができるので、ユーザの操作性に優れる。なお実施形態1でデバイス名と称した名称は、本実施形態でいうドライバ名に相当する。そこで、ドライバ名を実施形態1に合わせてデバイス名と呼ぶこともある。
図17はTWAINアプリケーションの起動の処理を表すフローチャートである。図17は本実施形態の特徴を最もよく表す図の内の1つである。図17のフローに係るプログラムは、HDD202に記憶されており、RAM201に読み出され、CPU204により実行される。図17は、アプリケーション142が、MFP3、MFP777を想定している例を表す。デバイス管理画面600上の画像の読み込み(TWAIN)ボタン611が押下されると、図17において、TWAINアプリケーション142の起動の処理が開始される(S1701)。
ステップS1701において、図14のデバイス管理80内のデバイス管理制御部902が、TWAINアプリケーション142を起動して、リンク実行部903を介して図9の<dm:execute>要素817、821、または831に記載されている情報をアプリケーション制御部907に渡す。<dm:execute>要素817、821、または831に記載されている情報から、アプリケーション制御部907が第1引数のTWAINドライバ名またはWIAドライバ名で表されたデバイス指定情報を取得する(S1702)。アプリケーション制御部907が、第1引数のTWAINドライバ名またはWIAドライバ名、すなわち、デバイス指定情報をもとに、PC1にインストールされている全てのTWAINドライバ(TWAINデータソース(以降、TWAIN DSと略す場合がある))のリストの中に、前記デバイス指定情報が存在するか否かを検索する(S1703)。PC1にインストールされている全てのTWAINドライバのリストは、たとえばOSの管理するレジストリなどに記憶されている。アプリケーション制御部907が、TWAINドライバ(TWAIN DS)のリスト内で前記デバイス指定情報を発見した場合ステップS1714へ進み、発見しなかった場合ステップS1705へ進む(S1704)。ステップS1705において、アプリケーション制御部907が、デバイス指定情報の中で製造元を表す文字列(例えば「ABC」)を検索する。この文字列は、例えばデバイス管理情報(図8)の製造者要素から得たものを用いることができる。アプリケーション制御部907がこの文字列を発見した場合ステップS1711へ進み、発見しなかった場合ステップS1707へ進む(S1706)。ステップS1707において、アプリケーション制御部907が前記デバイス指定情報をWIAドライバ名([例]「Kmmn (WIA)_AABBCCXX0814」)であると推定する。なお、S1707はプログラミングの思考過程を示す擬似的な工程であり、実際のコンピュータ処理ではS1707では何も行わない。そこでアプリケーション制御部907が、前記デバイス指定情報の中で「_」を検索して、発見した場合、その後に続くシリアル番号の有無を判定する(S1708)。
アプリケーション制御部907が、シリアル番号が有ると判断した場合ステップS1710へ進み、無いと判断した場合ステップS1715へ進む(S1709)。ステップS1710において、アプリケーション制御部907が、前記デバイス指定情報の先頭に製造者名の文字列(例えば「ABC 」)を付加し、文字列「WIA」を「TWAIN」で置換して、TWAINドライバ名([例]「ABC Kmmn (TWAIN)_AABBCCXX0814」)を生成する。ここで付加される製造者名は、たとえば図8等に示したデバイス管理情報の製造者名要素に記述された製造者名を用いることができる。そして、生成したTWAINドライバ名をTWAINドライバ名の候補としてセットする。ここでいうセットとは、候補のドライバ名を所定の記憶領域に一時保存することである。ステップS1711において、アプリケーション制御部907が、前記デバイス指定情報がTWAINドライバ名([例]「ABC Kmmn (TWAIN)」)であると推定し、それをTWAINドライバ名の候補としてセットする。
ステップS1712において、アプリケーション制御部907が、PC1にインストールされている全てのTWAINドライバ(TWAIN DS)のリストの中に、ステップS1710またはS1711で候補としてセットされたTWAINドライバ名が存在するか否かを検索する。アプリケーション制御部907が、TWAINドライバ(TWAIN DS)のリスト内で候補となっているTWAINドライバ名を発見した場合ステップS1714へ進み、発見しなかった場合ステップS1715へ進む(S1713)。ステップS1714において、デフォルトデバイス設定部908が、候補となっているTWAINドライバ名をデフォルトデバイスとしてセットし、ステップS1716へ進む。
ステップS1715において、デフォルトデバイス設定部908が、レジストリに保存されたデバイス名、すなわち、デフォルトデバイス情報格納部(具体的にはOSのレジストリ)911に格納されたデバイス名(TWAINドライバ名で指定されるスキャナ)を取得する。これは図16のS1603又はS1604で保存したデバイス名である。したがってこれらステップでデバイス名がレジストリの使用履歴に保存されている場合にはそこから、レジストリのデフォルトデバイスとして設定されている場合にはそこからデバイス名を取得する。その取得したTWAINドライバ名をデフォルトデバイスとしてセットし、ステップS1716へ進む。セットとは、例えばRAMのデフォルトデバイス用に確保された所定の領域に保存することである。ステップS1716において、アプリケーション制御部907が図6(b)に示すTWAINアプリケーション142のメインダイアログを表示し、TWAINアプリケーションの起動の処理を完了する(S1717)。この時、ステップS1714またはS1715で設定されたデフォルトデバイスが選択された状態で、TWAINアプリケーション142が起動して、表示されている。尚、TWAINアプリケーション142のデフォルトデバイスの情報は、TWAINアプリケーション142が管理するRAM201上のメモリ内に保持される。尚、TWAINアプリケーション142は、終了する際に図16に示すTWAINアプリケーションの終了の処理と同様な処理を実行する。その際、ステップS1603において、MACアドレスの代わりにシリアル番号(AABBCCXX0814)を保存する。
以上の手順により、デバイス管理画面600からTWAINアプリケーションを起動した場合に、起動に係るデバイス(すなわち選択されたデバイス)を優先的にデフォルトデバイスとして使用することができる。また、選択されたデバイス名と一致するデバイスが接続されていない場合には、選択されたデバイス名に含まれる製造者名およびモデル名およびシリアル番号またはそれらのいずれかを含むTWAINデバイスのデバイス名を生成し、該当するデバイスを検索してあればそれをデフォルトデバイスとする。これにより、選択されたデバイスの優先的な利用を実現できる。
[実施形態2の変形例]
次に実施形態2の変形例を説明する。本実施形態ではTWAINアプリケーションの起動手順が図18で示した手順となる。
図17の例では、ステップS1713において、アプリケーション制御部907が、TWAINドライバ(TWAIN DS)のリスト内で前記候補となっているTWAINドライバ名を検索する際に、完全一致するか否かで判断した。しかしこの例に限られることはない。例えば、ネットワークデバイスの場合、ネットワーク上のデバイスとしてPC上にそのデバイスを表示する際に、ユーザがそのデバイスを表すフレンドリ名を変更することができるケースがある。このようなケースの場合、シリアル番号の部分に関してはフレンドリ名に必ず含まれるような形で、ユーザがフレンドリ名を変更できるようにすることで、本発明を適用することができる。この場合、ステップS1713において、TWAINドライバ(TWAIN DS)のリスト内でTWAINドライバ名が完全一致しなくても、シリアル番号が一致するTWAINドライバが見つかった場合はステップS1714へ進む。そして、ステップS1714において、デフォルトデバイス設定部908が、シリアル番号が一致するTWAINドライバ名をデフォルトデバイスとしてセットすることで、ユーザがフレンドリ名を変更した場合においても、本発明を適用して、同様な効果を得ることができる、操作性に優れた周辺装置制御システムを実現することができる。
前述した実施の形態では、TWAINドライバ名とWIAドライバ名がシリアル番号を含む例を挙げたが、この例に限られることなく、例えば、IPアドレス(Internet Protocol Address)を利用してもよい。今、WIAドライバ名が「Defg (WIA),192.168.0.88」、TWAINドライバ名が「XYZ Defg (TWAIN),192.168.0.88」であるとする。以下では、これらのドライバ名を図17のフローチャートに適用して説明する。ステップS1705において、アプリケーション制御部907が、前記デバイス指定情報の中で製造元を表す「XYZ」という文字列を検索する。アプリケーション制御部907がこの文字列を発見した場合ステップS1711へ進み、発見しなかった場合ステップS1707へ進む(S1706)。ステップS1707において、アプリケーション制御部907が前記デバイス指定情報をWIAドライバ名([例]「Defg (WIA),192.168.0.88」)であると推定する。アプリケーション制御部907が、前記デバイス指定情報の中で「,」を検索して、発見した場合、その後に続くIPアドレスの有無を確認する(S1708)。アプリケーション制御部907が、IPアドレスが有ると判断した場合ステップS1710へ進み、無いと判断した場合ステップS1715へ進む(S1709)。ステップS1710において、アプリケーション制御部907が、前記デバイス指定情報の先頭に「XYZ 」を付加し、「WIA」を「TWAIN」で置換し、TWAINドライバ名「XYZ Defg (TWAIN),192.168.0.88」を生成して、それをTWAINドライバ名の候補としてセットする。ステップS1711において、アプリケーション制御部907が、前記デバイス指定情報がTWAINドライバ名「XYZ Defg (TWAIN)」であると推定し、それをTWAINドライバ名の候補としてセットする。このように、デバイスを特定する情報がIPアドレスの場合においても、デバイス管理画面600に表示されているデバイスの個体を特定した最適なTWAINドライバが選択された状態でTWAINアプリケーション142を起動することができるので、ユーザの操作性に優れる。
[実施形態3]
次に実施形態3を説明する。実施形態3は実施形態1と同じ構成のシステムで実施される。ただし、TWAINアプリケーションの起動手順が図18の通りとなる。実施形態3は実施形態2を無線LANと優先LANとが混在し、その両方でネットワークに接続されたデバイスが含まれたシステムにおける例である。今、MFP888のような、無線LAN(IEEE 802.11b/g/n)と有線LAN(Ethernet)の両方のネットワークインタフェースに対応しているデバイスのケースを考える。図1で前述したように、MFP888のシリアル番号は、無線LANデバイスとしてのMACアドレスAABBCCYY1218と、有線LANデバイスとしてのMACアドレスAABBCCYY0730の、それぞれの下位24ビットを組み合せたYY1218YY0730という値で表される。
図19はMFP888から発行されるWSDベースのN−PnPの情報を表す図である。図19において、SOAP(Simple Object Access Protocol)のメッセージ222は、ネットワークのプラグ アンド プレイ(N−PnP)時にMFP888がPC(PC1)に送信する。SOAPのメタデータ(<mex:Metadata>要素223は、MFP888の詳細情報がこの中に含まれている。WSDのフレンドリーネーム(<wsdp:FriendlyName>)要素224は、MFP888のWSD用のフレンドリーネームがセットされている。ここでは「ABC Mnmk」というフレンドリーネームがセットされている例を表す。WSDのシリアル番号(<wsdp:SerialNumber>)要素225は、MFP888のWSD用のシリアル番号がセットされている。ここでは前述したMFP888のシリアル番号「YY1218YY0730」がセットされている例を表す。WSDの製造者名(<wsdp:Manufacturer>)要素226は、MFP888のWSD用の製造者名がセットされている。ここではMFP888の製造元であるABC社の製造者名「ABC」がセットされている例を表す。WSDのモデル名(<wsdp:ModelName>)要素227は、MFP888のWSD用のモデル名がセットされている。ここでは前述したMFP888のモデル名「Mnmk」がセットされている例を表す。
図18はTWAINアプリケーションの起動の処理を表すフローチャートである。図18は本発明の特徴を最もよく表す図の内の1つである。図18のフローに係るプログラムは、HDD202に記憶されており、RAM201に読み出され、CPU204により実行される。図18は、アプリケーション142が、MFP888を想定している例を表す。デバイス管理画面600上の画像の読み込み(TWAIN)ボタン611が押下されると、図18において、TWAINアプリケーション142の起動の処理が開始される(S1801)。ステップS1801において、図14のデバイス管理80内のデバイス管理制御部902が、リンク実行部903を介して図9の<dm:execute>要素817、821、または831に記載されている情報をアプリケーション制御部907に渡す。ここではMFP888を想定しているので、図9の<dm:execute>要素817、831において、「ABC Kmmn (TWAIN)」を「ABC Mnmk (TWAIN)」と置換した内容であるものとする。前記<dm:execute>要素817、821、または831に記載されている情報から、アプリケーション制御部907が第1引数のTWAINドライバ名またはWIAドライバ名で表されたデバイス指定情報を取得する(S1802)。アプリケーション制御部907が、第1引数のTWAINドライバ名またはWIAドライバ名、すなわち、デバイス指定情報をもとに、PC1にインストールされている全てのTWAINドライバ(TWAINデータソース(以降、TWAIN DSと略す場合がある))のリストの中に、前記デバイス指定情報が存在するか否かを検索する(S1803)。アプリケーション制御部907が、TWAINドライバ(TWAIN DS)のリスト内で前記デバイス指定情報を発見した場合ステップS1817へ進み、発見しなかった場合ステップS1805へ進む(S1804)。
ステップS1805において、アプリケーション制御部907が、前記デバイス指定情報の中で製造元を表す文字列(例えば「ABC」)を検索する。アプリケーション制御部907がこの文字列を発見した場合ステップS1811へ進み、発見しなかった場合ステップS1807へ進む(S1806)。ステップS1807において、アプリケーション制御部907が前記デバイス指定情報をWIAドライバ名([例]「Mnmk (WIA)_YY1218YY0730」)であると推定する。なおこのステップS1807は、プログラミング上の疑似的な工程であってコンピュータによる処理では何も行わない。そこでアプリケーション制御部907が前記デバイス指定情報の中で「_」を検索する(S1808)。アプリケーション制御部907が、「_」を発見した場合ステップS1810へ進み、発見しなかった場合ステップS1818へ進む(S1809)。ステップS1810において、アプリケーション制御部907が、前記デバイス指定情報の先頭に製造者名の文字列「ABC 」を付加し、デバイスに種類を表す「WIA」を「TWAIN」で置換する。さらに、当該製造者に対して割り当てられたMACアドレスの上位24ビットの製造元情報([例]ABC社に割り当てられている「AABBCC」)と、前記デバイス指定情報の「_」の後に続く6文字([例]「YY1218」)をつなげてシリアル番号(「AABBCCYY1218」)を合成する。そしてそれら文字列を使って、無線LAN用TWAINドライバ名([例]「ABC Mnmk (TWAIN)_AABBCCYY1218」)を生成して、それをTWAINドライバ名の候補としてセットすなわち保存する。
ステップS1811において、アプリケーション制御部907が、前記デバイス指定情報がTWAINドライバ名([例]「ABC Mnmk (TWAIN)」)であると推定し、それをTWAINドライバ名の候補としてセットする。なおこのステップでも、「推定」するとはコンピュータによる処理では何も行わない。すなわちS1811では、デバイス指定情報のデバイス名を、TWAINドライバ名の候補として保存する。ステップS1812において、アプリケーション制御部907が、PC1にインストールされている全てのTWAINドライバ(TWAIN DS)のリストの中に、ステップS1810またはS1811で候補として保存されたTWAINドライバ名が存在するか否かを検索する。アプリケーション制御部907が、TWAINドライバ(TWAIN DS)のリスト内で前記候補となっているTWAINドライバ名を発見した場合ステップS1817へ進み、発見しなかった場合ステップS1814へ進む(S1813)。
ステップS1814において、アプリケーション制御部907が、前記デバイス指定情報の先頭に製造者名の文字列「ABC 」を付加し、デバイスの種類である「WIA」を「TWAIN」で置換する。さらに、当該製造者に対して割り当てられたMACアドレスの上位24ビットの製造元情報([例]ABC社に割り当てられている「AABBCC」)と、前記デバイス指定情報の最後尾の6文字([例]「YY0730」)をつなげてシリアル番号(「AABBCCYY0730」)を合成する。そしてそれらを使って、有線LAN用TWAINドライバ名([例]「ABC Mnmk (TWAIN)_AABBCCYY0730」)を生成して、それをTWAINドライバ名の候補としてセットすなわち保存する。アプリケーション制御部907が、PC1にインストールされている全てのTWAINドライバ(TWAIN DS)のリストの中に、ステップS1814で候補として保存されたTWAINドライバ名が存在するか否かを検索する(S1815)。アプリケーション制御部907が、TWAINドライバ(TWAIN DS)のリスト内で前記候補となっているTWAINドライバ名を発見した場合ステップS1817へ進み、発見しなかった場合ステップS1818へ進む(S1816)。
ステップS1817において、デフォルトデバイス設定部908が、前記候補となっているTWAINドライバ名をデフォルトデバイスとしてRAMに確保したデフォルトデバイス領域にセットし、ステップS1819へ進む。ステップS1818において、デフォルトデバイス設定部908が、レジストリに保存されたデバイス名、すなわち、デフォルトデバイス情報格納部(具体的にはOSのレジストリ)911に格納されたデバイス名(TWAINドライバ名で指定されるスキャナ)を取得し、そのTWAINドライバ名をデフォルトデバイスとしてセットし、ステップS1819へ進む。これは図17のステップS1715と同様である。ステップS1819において、アプリケーション制御部907が図6(b)に示すTWAINアプリケーション142のメインダイアログを表示し、TWAINアプリケーションの起動の処理を完了する(S1820)。この時、ステップS1817またはS1818で設定されたデフォルトデバイスが選択された状態で、TWAINアプリケーション142が起動して、表示されている。尚、TWAINアプリケーション142のデフォルトデバイスの情報は、TWAINアプリケーション142が管理するRAM201上のメモリ内に保持される。尚、TWAINアプリケーション142は、終了する際に図16に示すTWAINアプリケーションの終了の処理と同様な処理を実行する。その際、ステップS1603において、MACアドレスの代わりに、無線LAN用TWAINドライバ名の一部の情報(AABBCCYY1218)または有線LAN用TWAINドライバ名の一部の情報(AABBCCYY0730)を保存する。
図17、図18で説明したように、デバイス管理80内のデバイス管理制御部902が、リンク実行部903を介してアプリケーション制御部907にWIAドライバ名で表されたデバイス指定情報を渡す。そして、TWAINアプリケーション142内のアプリケーション制御部907が、前記デバイス指定情報として渡されたWIAドライバ名からTWAINドライバ名を生成し、デフォルトデバイス設定部908がこのTWAINドライバ名をデフォルトデバイスとしてセットし、これが選択された状態でTWAINアプリケーション142が起動する。これにより、デバイス管理画面600に表示されているデバイスの個体を特定した最適なTWAINドライバが選択された状態でTWAINアプリケーション142を起動することができるので、ユーザの操作性に優れる。
図17のステップS1715、図18のステップS1818において、デフォルトデバイス設定部908が、前回起動した時に選択されていたTWAINドライバ名をデフォルトデバイスとしてセットしたが、この例に限られることはない。例えば、図14のデバイス管理80内のデバイス管理制御部902が、リンク実行部903を介して図8の<dm:execute>要素826に記載されている情報「ABC Kmmn (TWAIN) WSD」をアプリケーション制御部907に渡した場合、ステップS1715またはS1818に至る。ここで、図15のステップS1502へ進み、アプリケーション制御部907またはデフォルトデバイス設定部908が図15に示す処理を実行することで、適切なTWAINドライバが選択された状態でTWAINアプリケーション142を起動することができるので、ユーザの操作性に優れる。また、他の例として、例えば、USB接続、ネットワーク接続の順で優先順位を設けて、デバイスのモデル名をもとに検索対象を絞った上で、それぞれの接続形態でPC1に接続されているMFPに対して、通信テストを行い、最初に見つかった優先順位の高いデバイス用のTWAINドライバを選択する、という方法もある。さらに、この方法を前記図15のステップS1502を実行する例でステップS1504へ至るケースと組み合せてもよい。これらの方法によれば、動作可能な状態で利用できるデバイスを確実に選択することができ、より最適なTWAINドライバが選択された状態でTWAINアプリケーション142を起動することができるので、ユーザの操作性に優れる。
[実施形態4]
今、同一モデルで異なる個体の複数のデバイス(例えばMFP3、MFP777)がUSBインタフェース14またはネットワーク4を介して1台のPC(PC1)に接続されているケースを考える。このようなケースにおいて、いつもTWAINアプリケーション142からある特定のデバイスを操作するユーザにとっては、スキャナ選択部621でTWAINドライバを選択する操作が煩わしい場合がある。このようなユーザに対して、スキャナセレクタというようなスキャナ設定ツールを用意することで、操作性を向上している例がある。
図20はスキャナセレクタのUIを表す図である。図20において、スキャナセレクタ2000は、ABC社製のアプリケーションプログラムである。スキャナセレクタ2000は、同一モデルで個体の異なる複数のデバイス(例えばMFP3、MFP777)がUSBインタフェース14またはネットワーク4を介して1台のPC(PC1)に接続されている場合に、TWAINアプリケーション142で操作するデバイス用のTWAINドライバを予め設定しておく為のスキャナ設定ツールである。ユーザインタフェース2001はスキャナセレクタのメインダイアログである。スキャナ選択部2002では、PC1にインストールされているスキャナ機能を備えるデバイスを選択することができる。ここでは、ABC社製のモデル名がKmmnというMFPと、ABC社製のモデル名がMnmkというMFPを次の何れかから選択することができるものとする。
・ABC Kmmn
・ABC Mnmk。
図20ではABC社製のモデル名がKmmnというMFPを表す「ABC Kmmn」が選択されている状態を表す。TWAINドライバ選択部2003は、スキャナ選択部2002で選択されているデバイス用のTWAINドライバが全てリストアップされて、その中から1つを選択できるようになっている。図20において、「ABC Kmmn (TWAIN)」は、USBインタフェース14を介してPC1に接続されているMFP3用のTWAINドライバ名である。「ABC Kmmn (TWAIN)_AABBCCXX0814」は、ネットワーク4を介してPC1に接続されているMFP3用のTWAINドライバ名である。「ABC Kmmn (TWAIN)_AABBCCXX0707」は、ネットワーク4を介してPC1に接続されているMFP777用のTWAINドライバ名である。図20では「ABC Kmmn (TWAIN)_AABBCCXX0707」が選択されている状態を表す。本実施形態4において、TWAINドライバ選択部2003内にリストアップされているTWAINドライバに関しては、それぞれのTWAINドライバ用のTWAIN DSは存在せず、あくまでもTWAINドライバ選択部2003内だけに表示されるものである。その代わりに、スキャナセレクタ2000を利用する場合のTWAIN DSとして、「ABC Kmmn Selector」という名前のものが用意されている。このスキャナセレクタ2000用のTWAIN DSは、TWAINアプリケーション142のメインダイアログ上のスキャナ選択部621において、「ABC Kmmn Selector」というTWAINドライバ名の選択肢として表示される。従って、本実施形態4では、スキャナ選択部621において、次の何れかを選択することができる。
・ABC Kmmn Selector
・ABC Mnmk Selector。
<TWAINアプリケーションの起動>
図21はTWAINアプリケーションの起動の処理を表すフローチャートである。図21は本実施形態の特徴を最もよく表す図の内の1つである。図21のフローに係るプログラムは、HDD202に記憶されており、RAM201に読み出され、CPU204により実行される。図21は、アプリケーション142が、MFP3、MFP777を想定している例を表す。デバイス管理画面600上の画像の読み込み(TWAIN)ボタン611が押下されると、図21において、TWAINアプリケーション142の起動の処理が開始される(S2101)。
ステップS2101において、図14のデバイス管理80内のデバイス管理制御部902が、リンク実行部903を介して図9の<dm:execute>要素817、821、または831に記載されている情報をアプリケーション制御部907に渡す。前記<dm:execute>要素817、821、または831に記載されている情報から、アプリケーション制御部907が第1引数のTWAINドライバ名またはWIAドライバ名で表されたデバイス指定情報を取得する(S2102)。アプリケーション制御部907が、第1引数のTWAINドライバ名またはWIAドライバ名、すなわち、デバイス指定情報がスキャナセレクタ2000用の「ABC **** Selector」というTWAINドライバ名であるか否かを比較する(S2103)。アプリケーション制御部907が、スキャナセレクタ2000用のTWAINドライバ名であると判断した場合ステップS2110へ進み、スキャナセレクタ2000用のTWAINドライバ名ではないと判断した場合ステップS2105へ進む。
ステップS2105において、アプリケーション制御部907が前記デバイス指定情報をWIAドライバ名([例]「Kmmn (WIA)_AABBCCXX0814」)であると推定する。なおステップS2105では処理対象をデバイス指定情報と決定したこと以外には特に何も行われない。そしてアプリケーション制御部907が、前記デバイス指定情報の中で「_」を検索して、発見した場合、その後に続くシリアル番号の有無を判定する(S2106)。アプリケーション制御部907が、シリアル番号が有ると判断した場合ステップS2108へ進み、無いと判断した場合ステップS2109へ進む(S2107)。
ステップS2108において、アプリケーション制御部907がスキャナセレクタ2000にモデル名([例]「Kmmn」)とシリアル番号([例]「AABBCCXX0814」)を通知し、ステップS2110へ進む。ステップS2109において、アプリケーション制御部907がスキャナセレクタ2000にモデル名([例]「Kmmn」)を通知し、ステップS2110へ進む。ステップS2110において、アプリケーション制御部907がスキャナセレクタ2000用のTWAINドライバ名を候補としてセットする。ステップS2111において、アプリケーション制御部907が、PC1にインストールされている全てのTWAINドライバ(TWAIN DS)のリストの中に、ステップS2110で候補としてセットされたTWAINドライバ名が存在するか否かを検索する。アプリケーション制御部907が、TWAINドライバ(TWAIN DS)のリスト内で前記候補となっているTWAINドライバ名を発見した場合ステップS2113へ進み、発見しなかった場合ステップS2114へ進む(S2112)。
ステップS2113において、デフォルトデバイス設定部908が、前記候補となっているTWAINドライバ名をデフォルトデバイスとしてセットし、ステップS2115へ進む。ステップS2114において、デフォルトデバイス設定部908が、前回起動した時に選択されていたTWAINドライバ名、すなわち、デフォルトデバイス情報格納部(具体的にはOSのレジストリ)911に格納されたデバイス名(TWAINドライバ名で指定されるスキャナ)を取得し、そのTWAINドライバ名をデフォルトデバイスとしてRAMにセットし、ステップS2115へ進む。ステップS2115において、アプリケーション制御部907が図6の(b)に示すTWAINアプリケーション142のメインダイアログを表示し、TWAINアプリケーションの起動の処理を完了する(S2116)。この時、ステップS2113またはS2114で設定されたデフォルトデバイスが選択された状態で、TWAINアプリケーション142が起動して、表示されている。尚、TWAINアプリケーション142のデフォルトデバイスの情報は、TWAINアプリケーション142が管理するRAM201上のメモリ内に保持される。尚、TWAINアプリケーション142は、終了する際に図16に示すTWAINアプリケーションの終了の処理と同様な処理を実行する。その際、スキャナセレクタ用のTWAINドライバ名がデフォルトデバイスとしてセットされている場合、ステップS1603またはS1604において、デフォルトデバイス設定部908はスキャナセレクタ用のTWAINドライバ名を保存する。
<スキャナセレクタの処理>
図22はスキャナセレクタの処理を表すフローチャートである。図22は本発明の特徴を最もよく表す図の内の1つである。図22のフローに係るプログラムは、HDD202に記憶されており、RAM201に読み出され、CPU204により実行される。アプリケーション制御部907が、図21のステップS2108またはS2109を実行すると、それらステップでの通知を受けたスキャナセレクタ2000の処理が図22の手順で開始される(S2201)。
スキャナセレクタ2000が、アプリケーション制御部907から通知された情報の中からモデル名と、通知されていればシリアル番号を取得する(S2202)。スキャナセレクタ2000が、モデル名を発見した場合ステップS2204へ進み、発見しなかった場合ステップS2213へ進む(S2203)。ステップS2204において、スキャナセレクタ2000が、シリアル番号を発見した場合ステップS2205へ進み、発見しなかった場合ステップS2213へ進む。
ステップS2205において、スキャナセレクタ2000が、取得したモデル名とシリアル番号とを指定して、PC1にインストールされている全てのTWAINドライバのリストの中に、前記モデル名とシリアル番号を含むものが存在するか否かを検索する(S2206)。スキャナセレクタ2000が、TWAINドライバのリストの中に、前記モデル名とシリアル番号を含むものを発見した場合ステップS2208へ進み、発見しなかった場合ステップS2209へ進む(S2207)。ステップS2208において、スキャナセレクタ2000が、指定されたモデル名のデバイスをスキャナ選択部2002で選択し、指定されたモデル名とシリアル番号で構成されるTWAINドライバをTWAINドライバ選択部2003で選択し、ステップS2213へ進む。
ステップS2209において、スキャナセレクタ2000が、モデル名を指定し、かつ、シリアル番号を一切含んでいないことを指定し、PC1にインストールされている全てのTWAINドライバのリストの中に、前記モデル名を含み、かつ、シリアル番号を一切含んでいないものが存在するか否かを検索する(S2210)。スキャナセレクタ2000が、TWAINドライバのリストの中に、前記モデル名を含み、かつ、シリアル番号を一切含まないものを発見した場合ステップS2212へ進み、発見しなかった場合ステップS2213へ進む(S2211)。ステップS2212において、スキャナセレクタ2000が、指定されたモデル名のデバイスをスキャナ選択部2002で選択し、指定されたモデル名を含み、シリアル番号を一切含まないTWAINドライバをTWAINドライバ選択部2003で選択し、ステップS2213へ進む。ステップS2213において、スキャナセレクタ2000が、通知されたモデル名、シリアル番号をもとにTWAINドライバを選択する処理を終了する。
ステップS2206、S2210において、PC1にインストールされている全てのTWAINドライバとは、それぞれのTWAINドライバ用のTWAIN DSがインストールされていることを表すわけではなく、TWAINドライバ選択部2003で選択可能なTWAINドライバを表している。従って、例えば、各モデル用にTWAINドライバは1つずつ用意されていて、シリアル番号が通信ポート名を表すような構成の場合は、モデル名でTWAINドライバを指定し、シリアル番号で通信ポートを指定する、という実施形態も含まれる。尚、スキャナセレクタ2000は、シリアル番号で構成された通信ポートに関する情報を、OSのレジストリに保存している。TWAINドライバは、動作する時にこのレジストリを参照し、通信ポートに関する情報を取得して、その通信ポートに対してデータの送信や受信を行うことで、デバイス(スキャナ)を制御する。また、スキャナセレクタ2000が、通信ポートに関する情報を、OSのレジストリではなくファイル等に保存し、TWAINドライバがそのファイルを参照して通信ポートに関する情報を取得するようにしてもよい。
このように、スキャナセレクタ2000のようなスキャナ設定ツールを用いた例においても、本発明を適用して、同様な効果を得ることができる、操作性に優れた周辺装置制御システムを実現することができる。
[実施形態4]
本実施形態における図10〜図13、図15〜図18、図21、図22にそれぞれ示す各フローチャートの実行によって実現できる各機能が、外部からインストールされるプログラムによって、情報処理装置によって実現されるようにしてもよい。そして、その場合、CD−ROMやフラッシュメモリやフレキシブルディスク等の記憶媒体により、あるいはネットワークを介して外部の記憶媒体から、プログラムを含む情報群が情報処理装置や周辺装置に供給される場合でも、本発明は適用されるものである。
このように、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。 本発明の実施の形態では、アプリケーションの例として図14に示すようなデバイス管理(Device Management)80を挙げたが、この例に限られることなく、同様な機能を備える任意のアプリケーションで実現可能であり、有効である。
本発明の実施の形態では、アプリケーションの例として図6(b)や図14に示すようなTWAINアプリケーション142を挙げたが、この例に限られることなく、画像やドキュメントを印刷する為のアプリケーション等、同様な機能を備える任意のアプリケーションで実現可能であり、有効である。
本発明の実施の形態では情報処理装置としてパーソナルコンピュータを想定したが、この例に限られることなく、例えばDVDプレーヤー、ゲーム、セットトップボックス、インターネット家電等、同様な使用方法が可能な任意の情報処理装置(端末)に対して実現することができ、有効である。
本発明の実施の形態では、周辺装置としてMFPを例示しているが、周辺装置として他に、複写機、ファクシミリ、スキャナ、デジタルカメラ、デジタルビデオカメラ、及びこれらの複合機能を備える装置等のいずれかが、本発明の適用対象となり得る。
本発明の実施の形態では、OSに例としてWindows 7と同等のOSを使用したが、これらのOSに限られることなく、任意のOSを使用することができる。
本発明の実施の形態では、ネットワーク4の構成例としてEthernetを用いたが、この例に限られることなく、他の任意のネットワーク構成であってもよい。
本発明の実施の形態では、PC1とMFP3、MFP777、MFP888、MFP7との間のインタフェースとして、Ethernetを用いたが、このインタフェースに限られることなく、例えば、無線LAN、IEEE1394、Bluetooth、USB等の任意のインタフェースを用いるようにしてもよい。
本発明の実施の形態では、Webサービスのプロトコルの例としてWSDを挙げ、デバイス管理画面600上からWIAドライバ名を第1引数として指定してTWAINアプリケーション142を起動し、TWAINアプリケーション142が、WSDのプロトコルを利用したTWAINドライバ141を介してMFP3、MFP777、MFP888を制御する例を挙げた。この例に限られることなく、例えばIHVの独自プロトコル等の任意のプロトコルを用いて、デバイス管理画面600上からWIAドライバ名を第1引数として指定してTWAINアプリケーション142を起動し、TWAINアプリケーション142が、そのプロトコルを利用したTWAINドライバ141を介してMFPを制御するようにしてもよい。
本発明の実施の形態では、デバイス管理画面600上の画像の読み込み(TWAIN)ボタン611が押下された時に、適切なデバイス(ドライバ)が設定された状態でTWAINアプリケーション142を起動する例を挙げた。この例に限られることなく、例えば、デバイス管理画面上から任意のアプリケーションを起動したり、Webサイトへリンクしたり、サービスを提供したりという場合に、適切なデバイス(ドライバ)名を指定して実行するというような、様々な機能に適用することができる。
Windows 7のようなOSにおいて、USBインタフェース14を介して、同一モデルで異なる個体の複数のデバイスが1台のPCに接続されている場合、TWAINドライバ名が同一となってしまう。これは、OSが、USBインタフェース14に接続されている同一モデルのTWAINデバイスを識別して、それぞれのデバイスを特定するようなTWAIN DS、すなわち、TWAINドライバ名を生成できないからである。しかしながら、将来のOSにおいて、USBインタフェース14に接続されている同一モデルのTWAINデバイスを識別して、シリアル番号等を使ってそれぞれのデバイスを特定するようなTWAINドライバ名を生成できるように機能を追加することで、本発明をUSBインタフェース14のようなローカル接続のインタフェースにも応用することができる。
本発明の実施形態では、TWAINアプリケーション142において、前回起動時に使用されたデバイスがデフォルトデバイスとして保存されるように構成した。そして、デバイス管理画面600上の画像の読み込み(TWAIN)ボタン611が押下された時に、前回起動時に保存されたデフォルトデバイスではなく、デバイス管理画面600に関連付けられている適切なデバイス(ドライバ)が設定された状態でTWAINアプリケーション142を起動するようにした。さらに、適切なデバイス(ドライバ)が見つからなかった場合は、前回起動時に保存されたデフォルトデバイスを参照し、そのデバイス(ドライバ)が設定された状態でTWAINアプリケーション142を起動する例を挙げた。デフォルトデバイスの保存(決定)手段に関しては、この例に限られることなく、例えば、TWAINアプリケーション142にデフォルトデバイス設定画面を設けて、TWAINアプリケーション142の起動時や終了時にはデフォルトデバイスを設定したり変更したりせずに、デフォルトデバイス設定画面でのみデフォルトデバイスを設定・変更できるようにしてもよい。
本発明の各実施形態では、具体的には以下の効果を奏し得る。
モデル名が同じで固有情報(シリアル番号など)が異なる複数の周辺装置が同一ネットワーク上に存在する場合を想定する。その際に、デバイス管理画面上からアプリケーション(TWAINアプリケーション)を起動した時に、それら複数の周辺装置の中から、前回アプリケーションを起動した時に使用された周辺装置が関連付いた状態となっている。従って、適切な周辺装置(TWAINドライバ)が選択され、アプリケーション(TWAINアプリケーション)を起動することができ、ユーザの操作性に優れる。
また、別の実施形態においては、TWAINアプリケーションが、WIAドライバ名を表す変数を使って、Device Stageなどのデバイス管理画面上で選択されている周辺装置専用のTWAINドライバ名を自動生成する。よって、最適な周辺装置専用のTWAINドライバが選択された状態でTWAINアプリケーションを起動することができるので、ユーザの操作性に優れる。