(57)【特許請求の範囲】
【請求項１】
オペレーティングシステムを実行するコンピュータで実行されるユニバーサルドライバであって、
前記コンピュータと通信可能に接続されているデバイスの中から機能を実行させるデバイスをユーザに指定させる指定処理と、
前記指定処理において指定されたデバイスと通信するための通信ポートを、使用する通信ポートとして設定するよう前記オペレーティングシステムに要求する要求処理と、
前記指定処理において指定されたデバイスと通信するための通信ポートのポート識別情報を前記ユーザに対応付けて記憶部に記憶させる記憶処理と、
前記オペレーティングシステムから機能の実行が指示されると、当該ユニバーサルドライバを実行させているユーザに対応付けられて前記記憶部に記憶されているポート識別情報と、前記使用する通信ポートとして設定されている通信ポートのポート識別情報とが一致するか否かを判定する判定処理と、
前記判定処理で一致すると判定された場合に、前記デバイスに機能を実行させるための制御コマンドを前記使用する通信ポートとして設定されている通信ポートに出力する出力処理と、
前記判定処理で一致しないと判定された場合に、当該ユニバーサルドライバを実行させている前記ユーザに前記使用する通信ポートが変更されていることを通知する通知処理と、
を前記コンピュータに実行させるユニバーサルドライバ。
【請求項２】
請求項１に記載のユニバーサルドライバであって、
前記通知処理において通知を行った後に、
機能の実行をキャンセルする処理、
前記指定処理を再度実行してユーザにデバイスを指定させ、指定されたデバイスと通信するための通信ポートを前記使用する通信ポートとして設定するよう前記オペレーティングシステムに要求し、その後に前記制御コマンドを出力する処理、
又は、
当該ユニバーサルドライバを実行させているユーザに対応付けられて前記記憶部に記憶されているポート識別情報によって識別される通信ポートを前記使用する通信ポートとして設定するよう前記オペレーティングシステムに要求し、その後に前記制御コマンドを出力する処理を前記コンピュータに実行させる、ユニバーサルドライバ。
【請求項３】
請求項１に記載のユニバーサルドライバであって、
前記通知処理において通知を行った後に、通知を行った後の処理として予め設定されている複数の処理の中からいずれかの処理をユーザに選択させ、ユーザによって選択された処理を実行する、ユニバーサルドライバ。
【請求項４】
請求項１に記載のユニバーサルドライバであって、
通知を行った後の処理として予め設定されている複数の処理の中からいずれかの処理を事前にユーザに選択させておき、前記通知処理において通知を行った後に、ユーザによって事前に選択されている前記処理を実行する、ユニバーサルドライバ。
【請求項５】
請求項１に記載のユニバーサルドライバであって、
前記通知処理において通知を行った後に、通知を行った後の処理として予め設定されている複数の処理の中からいずれかの処理をユーザに選択させ、ユーザによって選択された処理を実行するか、
又は、
前記複数の処理の中からいずれかの処理を事前にユーザに選択させておき、前記通知処理において通知を行った後に、ユーザによって事前に選択されている処理を実行するか、
をユーザに選択させる、ユニバーサルドライバ。
【請求項６】
請求項３乃至請求項５のいずれか一項に記載のユニバーサルドライバであって、
前記複数の処理は、
機能の実行をキャンセルする処理、
前記指定処理を再度実行してユーザにデバイスを指定させ、指定されたデバイスと通信するための通信ポートを前記使用する通信ポートとして設定するよう前記オペレーティングシステムに要求し、その後に前記制御コマンドを出力する処理、
当該ユニバーサルドライバを実行させているユーザに対応付けられて前記記憶部に記憶されているポート識別情報によって識別される通信ポートを前記使用する通信ポートとして設定するよう前記オペレーティングシステムに要求し、その後に前記制御コマンドを出力する処理、
又は、
前記使用する通信ポートの設定を変更せずに前記制御コマンドを出力する処理、
のうち少なくとも二つの処理を含む、ユニバーサルドライバ。
【請求項７】
コンピュータを用いたデバイス制御方法であって、
前記コンピュータと通信可能に接続されているデバイスの中から機能を実行させるデバイスをユーザに指定させる指定段階と、
前記指定段階において指定されたデバイスと通信するための通信ポートを、使用する通信ポートとして設定する設定段階と、
前記指定段階において指定されたデバイスと通信するための通信ポートのポート識別情報を前記ユーザに対応付けて記憶部に記憶させる記憶段階と、
ユーザから実行指示の入力を受け付ける受付段階と、
前記実行指示を入力したユーザに対応付けられて前記記憶部に記憶されているポート識別情報と、前記使用する通信ポートとして設定されている通信ポートのポート識別情報とが一致するか否かを判定する判定段階と、
前記判定段階で一致すると判定された場合に、前記デバイスに機能を実行させるための制御コマンドを前記使用する通信ポートとして設定されている通信ポートに出力する出力段階と、
前記判定段階で一致しないと判定された場合に、前記実行指示を入力した前記ユーザに前記使用する通信ポートが変更されていることを通知する通知段階と、
を含むデバイス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユニバーサルドライバ、及びデバイス制御方法に関する。
【背景技術】
【０００２】
従来、複数機種のデバイスを制御可能なユニバーサルドライバが知られている（例えば特許文献１参照）。
【０００３】
一般にユニバーサルドライバでは、機能を実行させるデバイスをユーザに指定させ、指定されたデバイスと通信するための通信ポートを「使用する通信ポート」として設定するようオペレーティングシステムに要求する。その後にユーザが実行指示を入力すると、ユニバーサルドライバは「使用する通信ポート」として設定されている通信ポートに制御コマンドを出力している。
そして、一般にユニバーサルドライバでは必ずしも毎回デバイスを指定する必要はなく、前回と同じデバイスに機能を実行させる場合には、ユーザはデバイスの指定を行わずに実行指示を入力することもできる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−３０１３１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、１台のコンピュータ上で複数のユーザがユニバーサルドライバを共有する場合もある。その場合、あるユーザがデバイスを指定して機能を実行させ、その後に別のユーザが異なるデバイスを指定して機能を実行させ、先にデバイスを指定したユーザがその後に前回と同じデバイスに再度機能を実行させようとする場合も生じる。
【０００６】
この場合、先にデバイスを選択したユーザが、別のユーザによって「使用する通信ポート」が変更されていることを知らず、デバイスの指定を行わずに実行指示を入力してしまうと、当該ユーザが意図したデバイス（前回と同じデバイス）以外のデバイス（別のユーザが選択したデバイス）で機能が実行されてしまう。
【０００７】
本発明は、上記問題点に鑑みてなされたものであり、複数のユーザでユニバーサルドライバを共有する場合にユーザが意図したデバイスで機能を実行することができるユニバーサルドライバ、及びデバイス制御方法を提供することにある。
【課題を解決するための手段】
【０００８】
第１の発明は、オペレーティングシステムを実行するコンピュータで実行されるユニバーサルドライバであって、前記コンピュータと通信可能に接続されているデバイスの中から機能を実行させるデバイスをユーザに指定させる指定処理と、前記指定処理において指定されたデバイスと通信するための通信ポートを、使用する通信ポートとして設定するよう前記オペレーティングシステムに要求する要求処理と、前記指定処理において指定されたデバイスと通信するための通信ポートのポート識別情報を前記ユーザに対応付けて記憶部に記憶させる記憶処理と、前記オペレーティングシステムから機能の実行が指示されると、当該ユニバーサルドライバを実行させているユーザに対応付けられて前記記憶部に記憶されているポート識別情報と、前記使用する通信ポートとして設定されている通信ポートのポート識別情報とが一致するか否かを判定する判定処理と、前記判定処理で一致すると判定された場合に、前記デバイスに機能を実行させるための制御コマンドを前記使用する通信ポートとして設定されている通信ポートに出力する出力処理と、前記判定処理で一致しないと判定された場合に、当該ユニバーサルドライバを実行させている前記ユーザに前記使用する通信ポートが変更されていることを通知する通知処理と、を前記コンピュータに実行させる。
【０００９】
１台のコンピュータ上で複数のユーザがユニバーサルドライバを共有する場合、機能を実行させるデバイスを最後に指定したユーザと、オペレーティングシステムから機能の実行が指示されたときに当該ユニバーサルドライバを実行させているユーザとは必ずしも一致しない。
【００１０】
この発明によると、オペレーティングシステムから機能の実行が指示されたときに当該ユニバーサルドライバを実行させているユーザに対応付けられているポート識別情報と、「使用する通信ポート」として設定されている通信ポートのポート識別情報とが一致しない場合には、当該ユニバーサルドライバを実行させているユーザに「使用する通信ポート」が変更されていることを通知する。従って、ユーザが意図したデバイスで機能を実行することができる。
【００１１】
第２の発明は、第１の発明のユニバーサルドライバであって、前記通知処理において通知を行った後に、機能の実行をキャンセルする処理、前記指定処理を再度実行してユーザにデバイスを指定させ、指定されたデバイスと通信するための通信ポートを前記使用する通信ポートとして設定するよう前記オペレーティングシステムに要求し、その後に前記制御コマンドを出力する処理、又は、当該ユニバーサルドライバを実行させているユーザに対応付けられて前記記憶部に記憶されているポート識別情報によって識別される通信ポートを前記使用する通信ポートとして設定するよう前記オペレーティングシステムに要求し、その後に前記制御コマンドを出力する処理を前記コンピュータに実行させる。
この発明によると、ユーザが意図したデバイスで機能を実行することができる。
【００１２】
第３の発明は、第１の発明のユニバーサルドライバであって、前記通知処理において通知を行った後に、通知を行った後の処理として予め設定されている複数の処理の中からいずれかの処理をユーザに選択させ、ユーザによって選択された処理を実行する。
この発明によると、通知を行った後の処理をユーザが選択できる。
【００１３】
第４の発明は、第１の発明のユニバーサルドライバであって、通知を行った後の処理として予め設定されている複数の処理の中からいずれかの処理を事前にユーザに選択させておき、前記通知処理において通知を行った後に、ユーザによって事前に選択されている前記処理を実行する。
この発明によると、ユーザは通知を行った後の処理を事前に指定しておくことにより、通知がされる度に毎回処理を指定しなくてよい。
【００１４】
第５の発明は、第１の発明のユニバーサルドライバであって、前記通知処理において通知を行った後に、通知を行った後の処理として予め設定されている複数の処理の中からいずれかの処理をユーザに選択させ、ユーザによって選択された処理を実行するか、又は、前記複数の処理の中からいずれかの処理を事前にユーザに選択させておき、前記通知処理において通知を行った後に、ユーザによって事前に選択されている処理を実行するか、をユーザに選択させる。
この発明によると、通知が行われた後に処理を指定するか、通知が行われた後の処理を事前に指定しておくかをユーザが選択できる。
【００１５】
第６の発明は、第３〜第５のいずれかの発明のユニバーサルドライバであって、前記複数の処理は、機能の実行をキャンセルする処理、前記指定処理を再度実行してユーザにデバイスを指定させ、指定されたデバイスと通信するための通信ポートを前記使用する通信ポートとして設定するよう前記オペレーティングシステムに要求し、その後に前記制御コマンドを出力する処理、当該ユニバーサルドライバを実行させているユーザに対応付けられて前記記憶部に記憶されているポート識別情報によって識別される通信ポートを前記使用する通信ポートとして設定するよう前記オペレーティングシステムに要求し、その後に前記制御コマンドを出力する処理、又は、前記使用する通信ポートの設定を変更せずに前記制御コマンドを出力する処理、のうち少なくとも二つの処理を含む。
この発明によると、ユーザが意図したデバイスで機能を実行することができる。
【００１６】
第７の発明は、コンピュータを用いたデバイス制御方法であって、前記コンピュータと通信可能に接続されているデバイスの中から機能を実行させるデバイスをユーザに指定させる指定段階と、前記指定段階において指定されたデバイスと通信するための通信ポートを、使用する通信ポートとして設定する設定段階と、前記指定段階において指定されたデバイスと通信するための通信ポートのポート識別情報を前記ユーザに対応付けて記憶部に記憶させる記憶段階と、ユーザから実行指示の入力を受け付ける受付段階と、前記実行指示を入力したユーザに対応付けられて前記記憶部に記憶されているポート識別情報と、前記使用する通信ポートとして設定されている通信ポートのポート識別情報とが一致するか否かを判定する判定段階と、前記判定段階で一致すると判定された場合に、前記デバイスに機能を実行させるための制御コマンドを前記使用する通信ポートとして設定されている通信ポートに出力する出力段階と、前記判定段階で一致しないと判定された場合に、前記実行指示を入力した前記ユーザに前記使用する通信ポートが変更されていることを通知する通知段階と、を含む。
この発明によると、複数のユーザでユニバーサルドライバを共有する場合にユーザが意図したデバイスで機能を実行することができる。
【図面の簡単な説明】
【００１７】
【図１】実施形態１に係るコンピュータの電気的構成を示すブロック図。
【図２】通信ポートの追加、切り替えを概念的に説明するための模式図。
【図３】印刷処理において表示される画面の画面遷移図。
【図４】ＩＮＩファイルの一例を示す模式図。
【図５】印刷処理の全体的な流れを示すフローチャート。
【図６】通知処理の流れを示すフローチャート。
【図７】メッセージ画面の一例を示す模式図。
【図８】実施形態２に係る「通知処理」の流れを示すフローチャート。
【図９】メッセージ画面の一例を示す模式図。
【図１０】オプション画面の一例を示す模式図。
【図１１】実施形態３に係る印刷処理の流れを示すフローチャート。
【図１２】「オプションに応じた処理」の流れを示すフローチャート。
【発明を実施するための形態】
【００１８】
＜実施形態１＞
本発明の実施形態１を図１ないし図７によって説明する。
（１）コンピュータの構成
図１は、本発明の実施形態１に係るコンピュータの電気的構成を示すブロック図である。コンピュータ１（以下「ＰＣ」という）は、ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、記憶部１４、ディスプレイ駆動回路１５（駆動回路）、ＵＳＢインタフェース１６（ＵＳＢ  Ｉ／Ｆ）、ネットワークインタフェース１７（ＮＷ  Ｉ／Ｆ）などを備えて構成されている。
【００１９】
ＣＰＵ１１は、ＲＯＭ１２や記憶部１４に記憶されている各種のプログラムを実行することによってＰＣ１の各部を制御する。ＲＯＭ１２にはＣＰＵ１１によって実行される各種のプログラムやデータなどが記憶されている。ＲＡＭ１３はＣＰＵ１１が各種の処理を実行するための主記憶装置として用いられる。
【００２０】
記憶部１４は、ハードディスクやフラッシュメモリなどを用いて各種のプログラムやデータを記憶する不揮発性メモリである。記憶部１４には、オペレーティングシステム（ＯＳ）、ワードプロセッサや表計算などのアプリケーションプログラム（以下「アプリケーション」という）、ユニバーサルプリンタドライバ（ユニバーサルドライバの一例）などが記憶される。本実施形態ではＯＳとしてＭｉｃｒｏｓｏｆｔ社のＷＩＮＤＯＷＳ（登録商標）を例に説明する。なお、ＯＳはＷＩＮＤＯＷＳ（登録商標）に限られるものではない。
【００２１】
ディスプレイ駆動回路１５は、ＣＲＴや液晶ディスプレイなどの表示装置１８を駆動する回路であり、ケーブルを介して表示装置１８と接続されている。
ＵＳＢインタフェース１６はＵＳＢ（Universal Serial Bus）ホストインタフェースとして構成されており、ＵＳＢケーブルを介してマウスやキーボードなどの入力装置１９と接続されている。
【００２２】
ネットワークインタフェース１７はＬＡＮやインターネットなどの通信ネットワーク５を介して１以上のプリンタ３１（デバイスの一例）と通信可能に接続されている。
【００２３】
（２）プリンタ
複数のプリンタ３１（プリンタＡ〜Ｃ、及び複合機Ｄ、デバイスの一例）は、紙などの被記録媒体に電子写真方式、インクジェット方式などで画像を形成する装置である。複合機はプリンタ機能とスキャナ機能とを備える装置であり、本実施形態では複合機も含めてプリンタという。複数のプリンタ３１は異なるメーカーのものであってもよいし、同一メーカーの互いに異なる機種であってもよい。
以降の説明において単にプリンタ３１というときはプリンタＡ〜Ｃ、及び複合機Ｄのいずれか一つのことをいう。
【００２４】
（３）通信ポートの追加、切り替え
図２は、通信ポートの追加、切り替えを概念的に説明するための模式図である。ここでは通信ポートとしてＴＣＰ／ＩＰポートを例に説明する。ＴＣＰ／ＩＰポートは通信ネットワーク５を介してプリンタ３１と通信するための論理的なインタフェースである。ＴＣＰ／ＩＰポートはＷＩＮＤＯＷＳではＳｔａｎｄａｒｄＴＣＰ／ＩＰポートと呼ばれている。なお、通信ポートはＴＣＰ／ＩＰポートに限られるものではなく、シリアルポート、パラレルポート、ＵＳＢポートなどであってもよい。
【００２５】
通信ポート４１の追加はポート切替ツール４３を介して行われる。ポート切替ツール４３はユニバーサルプリンタドライバ４０の一部として同時にインストールされるプログラムである。ポート切替ツール４３は、ユニバーサルプリンタドライバ４０からポートの追加が要求されると、ポートモニタ４２にポート追加命令を出力する。ポートモニタ４２はＯＳにより提供されるプログラムである。ポートモニタ４２は、そのポート追加命令で指定されているＩＰアドレス（通信ネットワーク５上の所在を示す所在情報）を用いて通信ポート４１を追加し、追加した通信ポートにそのポート追加命令で指定されているポート名を付与する。
通信ポート４１はポート名が異なる限り同時に複数存在することができ、ポートモニタ４２はポート切替命令が出力されると、そのポート切替命令で指定されているポート名によって識別される通信ポート４１を有効にする。これにより、その通信ポートが、「使用する通信ポート」として設定される。
【００２６】
（４）画面遷移
図３は、ユニバーサルプリンタドライバ４０によって表示装置１８に表示される画面の画面遷移図である。ここではアプリケーションによって表示される印刷画面５１も併せて示している。
ここで、本実施形態では複数のユーザがＰＣ１を共有するものとする。ユーザにはそれぞれユーザＩＤが付与されており、各ユーザはそれぞれ自身のユーザＩＤでＯＳにログインしてユニバーサルプリンタドライバ４０を利用する。理解を容易にするため、ここでは同時に一人だけがログインするものとする。
また、ユニバーサルドライバ４０はＯＳが提供するＡＰＩを呼び出すことにより、当該ユニバーサルドライバ４０を実行しているユーザ（ＰＣ１にログインしているユーザ）のユーザＩＤや個人フォルダ（ＯＳによってユーザ毎に割り当てられている個人用のフォルダ）の場所を知ることができるものとする。
アプリケーションによって表示される印刷画面５１でユーザがプリンタ３１を選択して［プロパティ］ボタン５１ａをクリックすると、選択されているプリンタ３１のプリンタドライバが呼び出される。
【００２７】
ユニバーサルプリンタドライバ４０（図２参照）は複数機種のプリンタを制御可能なプリンタドライバであり、特定のプリンタ３１に対応するものではないので、ユニバーサルプリンタドライバ４０を呼び出す場合はプリンタ３１ではなくユニバーサルプリンタドライバ４０を直接選択して［プロパティ］ボタン５１ａをクリックする。ここではユニバーサルプリンタドライバ４０が選択されて［プロパティ］ボタン５１ａがクリックされたものとする。
【００２８】
呼び出されたユニバーサルプリンタドライバ４０は、希望するプリンタ３１をユーザに選択させるためのプリンタ選択画面５２を表示する。具体的には、アプリケーションから呼び出されたユニバーサルプリンタドライバ４０は、プリンタ３１にデバイス情報を要求するデータをブロードキャストによって送信し、その返答として以下に説明するデバイス情報を取得する。
デバイス情報とは、具体的には、デバイス名、通信ネットワーク５上の所在を示す所在情報（ＩＰアドレス、ドメイン名など）、そのデバイスが備える機能を示す機能情報などである。機能情報には、プリンタ機能、スキャナ機能、ファクシミリ機能などの有無を示す情報や、プリンタ機能の対応用紙サイズ、両面印刷の可否、カラー印刷の可否などといったように各機能のより詳細な情報などが含まれる。
【００２９】
ユニバーサルプリンタドライバ４０は各プリンタ３１から取得したデバイス情報を基に、プリンタの情報をプリンタ選択画面５２に一覧表示する（指定処理の一例）。
【００３０】
プリンタ選択画面５２でユーザがプリンタ３１を選択して［ＯＫ］ボタン５２ａをクリックすると、ユニバーサルプリンタドライバ４０は、先ず、選択されているプリンタ３１と通信するための通信ポート４１が存在しているか否かを判定する。選択されているプリンタ３１と通信するための通信ポート４１が存在しているか否かの判定はＯＳから通信ポート４１の情報を取得することによって行うことができる。
【００３１】
選択されているプリンタ３１と通信するための通信ポート４１が存在していない場合には、ユニバーサルプリンタドライバ４０は所定の命名規則に従ってポート名（ポート識別情報の一例）を生成し、そのポート名と当該選択されているプリンタ３１のＩＰアドレスとを指定してポート切替ツール４３にポートの追加を要求する。
ここで、本実施形態ではユニバーサルプリンタドライバ４０を表す所定の文字列と選択されているプリンタ３１のＩＰアドレスとを"_"で結合した文字列をポート名として用いる。
【００３２】
次に、ユニバーサルプリンタドライバ４０は、上述したポート名を指定してポート切替ツール４３にポートの切替を要求する。ポートの切替を要求されたポート切替ツール４３は、ポートモニタ４２にポート切替命令を出力する（要求処理の一例）。ポートモニタ４２は、指定されたポート名によって識別される通信ポート４１を有効にする。これにより、そのポート名によって識別される通信ポート４１が「使用する通信ポート」として設定される。
【００３３】
次に、ユニバーサルプリンタドライバ４０は、上述したポート名（ユーザが選択したプリンタ３１と通信するための通信ポート４１のポート名）を、当該ユニバーサルプリンタドライバ４０を実行しているユーザ（ＰＣ１にログインしているユーザ）に対応付けて記憶部１４に記憶する（記憶処理の一例）。
【００３４】
具体的には例えば、ユニバーサルプリンタドライバ４０は、当該ユニバーサルプリンタドライバ４０を実行しているユーザの個人フォルダ（あるいは個人フォルダの下に作成されている所定のフォルダであってもよい）に所定のファイル名（例えば「Printer.ini」）を付したＩＮＩファイルを生成し、そのＩＮＩファイルにポート名を書き込む。ＩＮＩファイルはＷＩＮＤＯＷＳにおいて一般に用いられている所定の形式のテキストファイルであり、アプリケーションの設定情報を記憶しておく場合などに用いられるファイルである。
【００３５】
図４は、ポート名が書き込まれたＩＮＩファイルの一例を示す模式図である。ユーザが以前にプリンタ３１を選択している場合には既にＩＮＩファイル６１にポート名が書き込まれているので、その場合には既に書き込まれているポート名を、ユーザが新たに選択したプリンタ３１と通信するための通信ポート４１のポート名で上書きする。つまり、ＩＮＩファイル６１にはそのＩＮＩファイル６１が格納されている個人フォルダの所有者であるユーザが最後に選択したプリンタ３１と通信するための通信ポート４１のポート名が書き込まれていることになる。
【００３６】
なお、ＩＮＩファイル６１には隠し属性を設定しておくことが望ましい。これにより、ユーザが誤ってＩＮＩファイル６１を削除してしまう可能性を低減できる。
また、ユニバーサルプリンタドライバ４０はＩＮＩファイル６１に書き込む以外の方法でポート名をユーザと対応付けて記憶してもよい。例えば、ユーザのユーザＩＤとポート名とを対応付けてレジストリに書き込むことによって記憶してもよい。
【００３７】
図３に戻り、ユニバーサルプリンタドライバ４０は、ポート名をユーザと対応付けて記憶させると、プリンタ選択画面５２を閉じて、ユーザに印刷条件を設定させるための印刷設定画面５３を表示する。印刷条件とは、用紙サイズ、縦横、カラー／モノクロ、両面／片面などの印刷設定項目の設定値の組み合わせをいう。
印刷設定画面５３でユーザが印刷条件を設定した後、［ＯＫ］ボタン５３ａをクリックすると、選択されたプリンタと印刷条件とが確定し、印刷設定画面５３が閉じて印刷画面５１に戻る。
【００３８】
印刷画面５１でユーザが［ＯＫ］ボタン５１ｂをクリックすると、アプリケーションからＯＳ（ＧＤＩ及びプリントスプーラ）を介してユニバーサルプリンタドライバ４０に印刷命令が出力される（図２参照）。ＯＳから印刷命令が出力されると、ユニバーサルプリンタドライバ４０は後述する印刷処理を実行する。
［ＯＫ］ボタン５１ｂのクリックはユーザによる実行指示の入力の一例である。ＯＳからユニバーサルプリンタドライバ４０に印刷命令が出力されることは「オペレーティングシステムから機能の実行が指示される」ことの一例である。
【００３９】
ここで、ユーザは必ずしも毎回プリンタ３１を選択する必要はなく、前回と同じプリンタ３１に印刷を実行させる場合は印刷画面５１で［プロパティ］ボタン５１ａをクリックすることなく［ＯＫ］ボタン５１ｂをクリックしてもよい。
【００４０】
（５）印刷処理
次に、ＯＳから印刷命令が出力されたときにユニバーサルプリンタドライバ４０によって実行される印刷処理について説明する。
【００４１】
（５−１）印刷処理の全体的な流れ
図５は、印刷処理の全体的な流れを示すフローチャートである。
Ｓ１０１では、ユニバーサルプリンタドライバ４０を実行するＣＰＵ１１（以下、単に「プリンタドライバ」という）は、実行指示を入力したユーザ（「ユニバーサルドライバを実行させているユーザ」の一例）の個人フォルダに格納されているＩＮＩファイル６１からポート名を読み込む。そして、「使用する通信ポート」として設定されている通信ポート４１のポート名をＯＳから取得し、それらが一致するか否かを判定する（判定処理の一例）。
【００４２】
Ｓ１０２では、プリンタドライバはＳ１０１でそれらが一致すると判定した場合はＳ１０３に進み、一致しないと判定した場合はＳ１０４に進む。
【００４３】
Ｓ１０３では、プリンタドライバは印刷を実行する。
具体的には、プリンタドライバはアプリケーションから出力された印刷命令とユーザによって設定された印刷条件（印刷画面５１で設定された印刷条件、及び印刷設定画面５３で設定された印刷条件）とに基づいて印刷データ（デバイスに機能を実行させるための制御コマンドの一例）を生成する。そして、「使用する通信ポート」として設定されている通信ポート４１にその印刷データを出力する（出力処理の一例）。
【００４４】
「使用する通信ポート」として設定されている通信ポート４１に出力された印刷データは当該通信ポート４１に対応するプリンタ３１に出力され、印刷データが出力されたプリンタ３１はその印刷データに従って印刷を実行する。これにより、プリンタ３１で印刷が実行される。
【００４５】
Ｓ１０４では、プリンタドライバは、実行指示を入力したユーザに「使用する通信ポート」が変更されていることを通知する処理である「通知処理」を実行して処理を終了する。
【００４６】
（５−２）通知処理
図６は、「通知処理」の流れを示すフローチャートである。
Ｓ２０１では、プリンタドライバは図７に示すメッセージ画面７０を表示装置１８に表示する。図示するように、メッセージ画面７０には「ポートが別要因で切り替わっています。適切なプリンタを選択しなおしてください。」というメッセージが表示される。
【００４７】
Ｓ２０２では、プリンタドライバはＯＳから出力された印刷命令を破棄する。これにより印刷がキャンセルされる（「機能の実行をキャンセルする処理」の一例）。
【００４８】
（６）実施形態の効果
以上説明した本発明の実施形態１に係るユニバーサルプリンタドライバ４０によると、実行指示を入力したユーザに対応付けられているポート名と「使用する通信ポート」として設定されている通信ポート４１のポート名とが一致しない場合には実行指示を入力したユーザに「使用する通信ポート」が変更されていることを通知する（表示装置１８にメッセージ画面７０を表示する）。
【００４９】
これにより、先にデバイスを選択したユーザは、別のユーザによって「使用する通信ポート」が変更されていることを知らず、デバイスの選択（指定）を行わずに実行指示を入力してしまった場合に、「使用する通信ポート」が変更されていることを知ることができる。「使用する通信ポート」が変更されていることを知ったユーザは、印刷がキャンセルされた後にプリンタ３１を選択し直して再度実行指示を入力することにより、意図したプリンタ３１で印刷を実行することができる。
【００５０】
このようにユニバーサルプリンタドライバ４０によると、１台のＰＣ１で複数のユーザがユニバーサルプリンタドライバ４０を共有する場合に、実行指示を入力したユーザが意図したプリンタ３１で印刷を実行することができる。これにより、ユーザが意図したプリンタ３１で印刷が実行されないことによるユーザの混乱を低減できる。
【００５１】
更に、このユニバーサルプリンタドライバ４０によると、実行指示を入力したユーザに対応付けられているポート名と「使用する通信ポート」として設定されている通信ポート４１のポート名とが一致しない場合には印刷をキャンセルする。従って、ユーザが意図したプリンタ３１以外のプリンタで印刷が実行されてしまうことを低減できる。
【００５２】
＜実施形態２＞
次に、本発明の実施形態２を図８ないし図１０によって説明する。
実施形態２は、実施形態１の変形例である。実施形態１ではＳ１０２で一致しないと判定した場合は印刷をキャンセルしたが、実施形態２ではＳ１０２で一致しないと判定した場合の処理をユーザに選択させ、ユーザによって選択された処理を実行する。
【００５３】
図８は、実施形態２に係る「通知処理」の流れを示すフローチャートである。  Ｓ３０１では、プリンタドライバは図９に示すメッセージ画面７１を表示装置１８に表示してユーザに処理を選択させる。
図示するように、メッセージ画面７１には「ポートが別要因で切り替わっています。このまま印刷しますか？」というメッセージが表示される。メッセージ画面７１には［最後に使用したプリンタで印刷］ボタン７１ａ、［続行］ボタン７１ｂ、及び［キャンセル］ボタン７１ｃが設けられており、ユーザはいずれかのボタンをクリックすることによって処理を選択する。
【００５４】
Ｓ３０２では、プリンタドライバはいずれのボタンがクリックされたかを判定し、［最後に使用したプリンタで印刷］ボタン７１ａがクリックされた場合はＳ３０３に進み、［続行］ボタン７１ｂがクリックされた場合はＳ３０４に進み、［キャンセル］ボタン７１ｃがクリックされた場合はＳ３０５に進む。
【００５５】
Ｓ３０３では、プリンタドライバは、実行指示を入力したユーザの個人フォルダ（あるいは個人フォルダの下に作成されている所定のフォルダ）に格納されているＩＮＩファイル６１（例えば「Printer.ini」）からポート名を読み込み、読み込んだポート名を指定してＯＳにポート切替命令を出力する。これにより、読み込んだポート名によって識別される通信ポート４１が「使用する通信ポート」として設定される。
【００５６】
Ｓ３０４では、プリンタドライバは印刷を実行する。印刷を実行する処理はＳ１０３の処理と同じであるので説明は省略する。
Ｓ３０５では、プリンタドライバは印刷をキャンセルする。
【００５７】
以上説明した本発明の実施形態２に係るユニバーサルプリンタドライバによると、通知が行われた後の処理をユーザが選択できる。
【００５８】
＜実施形態３＞
次に、本発明の実施形態３を図１１ないし図１２によって説明する。
実施形態３は、実施形態２の変形例である。実施形態２ではＳ３０１で通知が行われた後にユーザが処理を選択しているが、実施形態３では、通知が行われた後に処理を選択するか、通知が行われた後の処理を事前に選択しておくかをユーザが選択できる。
【００５９】
図１０は、通知が行われた後に処理を選択するか、通知が行われた後の処理を事前に選択しておくかをユーザが予め選択するためのオプション画面の一例を示す模式図である。オプション画面７２は、プリンタ選択画面５２から呼び出すことができる。具体的には、実施形態３に係るプリンタ選択画面５２には図示しない［オプション］ボタンが設けられており、ユーザは［オプション］ボタンをクリックすることでオプション画面７２を表示させることができる。
【００６０】
図示するように、オプション画面７２には［毎回通知する］、「最後に使用したプリンタで印刷する」、「そのまま印刷する」、「印刷をキャンセルする」の４つのオプションが表示され、ユーザはこれらの中からいずれか一つのオプションを選択できる。
【００６１】
図１１は、実施形態３に係る印刷処理の流れを示すフローチャートである。ここでは実施形態１と実質的に同一の処理には同一の符号を付して説明を省略する。
Ｓ４０１では、プリンタドライバは、オプション画面７２での選択が「毎回通知する」であるか否かを判定し、「毎回通知する」が選択されている場合はＳ４０２に進み、それ以外のオプションが選択されている場合はＳ４０３に進む。
【００６２】
Ｓ４０２では、プリンタドライバは、実施形態２で説明した「通知処理」を実行する。
Ｓ４０３では、プリンタドライバは、「オプションに応じた処理」を実行する。
【００６３】
図１２は、上述した「オプションに応じた処理」の流れを示すフローチャートである。ここでは実施形態２で説明した「通知処理」と実質的に同一の処理には同一の符号を付して説明を省略する。
Ｓ５０１では、プリンタドライバは、いずれのオプションが選択されているかを判定し、「最後に使用したプリンタで印刷する」が選択されている場合はＳ３０３に進み、「そのまま印刷する」が選択されている場合はＳ３０４に進み、「印刷をキャンセルする」が選択されている場合はＳ３０５に進む。
【００６４】
以上説明した本発明の実施形態３に係るユニバーサルプリンタドライバによると、通知が行われた後に処理を選択するか、通知が行われた後の処理を事前に選択しておくかをユーザが選択できる。
【００６５】
＜他の実施形態＞
本発明は上記記述及び図面によって説明した実施形態に限定されるものではなく、例えば次のような実施形態も本発明の技術的範囲に含まれる。
【００６６】
（１）上記実施形態１では実行指示を入力したユーザに対応付けられているポート名と「使用する通信ポート」として設定されている通信ポート４１のポート名とが一致しない場合には通知（メッセージ画面７０の表示）を行って印刷をキャンセルする場合を例に説明した。しかしながら、印刷をキャンセルするのではなく、「最後に使用したプリンタで印刷する」ようにしてもよい。
【００６７】
又は、プリンタ選択画面５２を再度表示（指定処理を再度実行）してユーザにプリンタ３１を選択させ直してもよい。この場合は、ユーザによって選択され直したプリンタ３１と通信するための通信ポート４１を「使用する通信ポート」として設定するためのポート切替命令をポート切替ツール４３を介してＯＳに出力し、その後にその「使用する通信ポート」に印刷データを出力すればよい。
【００６８】
又は、「そのまま印刷する」ようにしてもよい。実施形態１では通知が行われた後の処理をユーザが選択できないので、「そのまま印刷する」ようにするとユーザが最初に意図したプリンタ３１以外のプリンタ３１で印刷が実行されてしまうことになるが、事前に通知しているので、最初に意図したプリンタ３１で印刷が実行されないことによるユーザの混乱を低減できる。
【００６９】
（２）上記実施形態３では、通知を行った後に処理を選択するか、又は事前に処理を選択しておくかをユーザが選択できる場合を例に説明したが、この選択を行わせず、通知が行われた後に処理を選択させるか、又は事前に選択させるかのいずれか一方に固定されていてもよい。
【００７０】
（３）上記実施形態２ではユーザが選択可能な処理として「最後に使用したプリンタで印刷」、「続行」、「キャンセル」を例に説明したが、選択可能な処理はこれらのうちいずれか２つだけであってもよい。実施形態３で事前に処理を選択させる場合も同様である。
また、選択可能な処理はこれらに限られるものではなく、例えばプリンタ選択画面５２を再度表示してユーザにプリンタ３１を選択させ直す処理であってもよい。
【００７１】
（４）上記実施形態ではユニバーサルドライバとしてユニバーサルプリンタドライバを例に説明したが、ユニバーサルドライバはユニバーサルプリンタドライバに限られるものではなく、例えばユニバーサルスキャナドライバであってもよい。
【符号の説明】
【００７２】
１・・・コンピュータ
５・・・通信ネットワーク
１１・・・ＣＰＵ
１２・・・ＲＯＭ
１３・・・ＲＡＭ
１４・・・記憶部
１５・・・ディスプレイ駆動回路
１６・・・ＵＳＢインタフェース
１７・・・ネットワークインタフェース
１８・・・表示装置
１９・・・入力装置
３１・・・プリンタ
４０・・・ユニバーサルプリンタドライバ
４１・・・通信ポート
５２・・・プリンタ選択画面
５３・・・印刷設定画面
６１・・・ＩＮＩファイル
７０・・・メッセージ画面
７１・・・メッセージ画面
７２・・・オプション画面
【図１】
0005392201.tif 000002
【図２】
0005392201.tif 000003
【図３】
0005392201.tif 000004
【図４】
0005392201.tif 000005
【図５】
0005392201.tif 000006
【図６】
0005392201.tif 000007
【図７】
0005392201.tif 000008
【図８】
0005392201.tif 000009
【図９】
0005392201.tif 000010
【図１０】
0005392201.tif 000011
【図１１】
0005392201.tif 000012
【図１２】
0005392201.tif 000013