(57)【要約】【課題】  保護モードで動作するプロセスから呼び出されたプリンタドライバが、プリンタの状態を表示するステータスモニタを起動する際に、保護モードにより表示される警告ダイアログの頻度を軽減する。【解決手段】  ステータスモニタ起動部はプロセスが保護モードかどうかを判定する。保護モードと判定した場合、ステータスモニタ起動用プログラムの有無を判定し、ステータスモニタ起動用プログラムが存在しなければ低い権限でステータスモニタを起動し、逆に、ステータスモニタ起動用プログラムが存在すればこれを用いてステータスモニタを起動する。【選択図】  図８
2008102838.tif 000002
【特許請求の範囲】
【請求項１】
第一のプロセスから第二のプロセスを作成するためのプロセス作成方法であって、
前記第一のプロセスが保護モードで動作しているかどうかを判定するステップと、
前記第二のプロセスを作成するための起動用プログラムの存在の有無を判定するステップとを含み、
前記起動用プログラムが存在する場合は前記起動用プログラムを用いて前記第二のプロセスを作成し、
前記第一のプロセスが保護モードであり且つ前記起動用プログラムが存在しない場合は、低権限で動作するように前記第二のプロセスを作成するステップを含むことを特徴とするプロセス作成方法。
【請求項２】
アプリケーションの描画命令を印刷コマンドとしてプリンタに供給するプリンタドライバであって、
前記プリンタドライバは少なくとも、
プリンタのステータスを表示するためのステータスモニタと、
前記アプリケーションの印刷要求に従って呼び出されるユーザインタフェースドライバとを含み、
前記ユーザインタフェースドライバは前記ステータスモニタのプロセスを作成するにあたり、
前記ユーザインタフェースドライバを呼び出したプロセスが保護モードかどうかの判定と、
前記ステータスモニタのプロセスを作成するための起動用プログラムの有無の判定を行い、
前記起動用プログラムが存在する場合は前記起動用プログラムを用いて前記ステータスモニタのプロセスを作成し、
前記ユーザインタフェースドライバを呼び出したプロセスが保護モードであり且つ前記起動用プログラムが存在しない場合は、低権限で動作するようにステータスモニタのプロセスを作成することを特徴とするプリンタドライバ。
【請求項３】
前記ユーザインタフェースドライバは、
前記起動用プログラムを用いて前記ステータスモニタのプロセスを作成する前に、ユーザに操作方法を案内することを特徴とする請求項２記載のプリンタドライバ。
【請求項４】
アプリケーションが印刷を開始した際に前記ステータスモニタを起動するかどうかを、前記ユーザインタフェースドライバで判定することを特徴とする請求項２あるいは請求項３記載のプリンタドライバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばプリンタにより印刷を行わせた場合等に、そのプリンタの状態を監視する機能を有する印刷制御方法及びプログラムに関する。
【背景技術】
【０００２】
プリンタによる印刷処理過程において、印刷を開始したものの紙詰まりで印刷が途中で停止したり、インク切れにより出力結果に何も印字されていなかったりといった状況は多々起こり得る。こういった場合、ユーザが印刷に失敗したプリンタを眺めて印刷失敗の原因を特定するのは困難である。そこでインク切れや紙詰まりといった異常なプリンタの状態（以下ステータス）は、ＬＥＤの点滅やブザーなどでユーザに知らされていた。
【０００３】
しかし、プリンタが異常状態をユーザに通知する機能を有していても、ユーザがそのパターンを全て覚えておくか、マニュアル等を逐一参照しなければ、実際にどのようなステータス異常が起こっているかを理解することは出来なかった。また、プリンタの能力向上に伴い検知すべきステータスが増えたことで、全てのステータスを単純なパターンで表すのは困難となった。
【０００４】
そこで様々なプリンタステータスをユーザの手元で、グラフィカルに、かつリアルタイムに提示するツールとして、プリンタとコンピュータの双方向通信を利用したステータスモニタが開発された。
【０００５】
ステータスモニタによるプリンタの様々なステータスの表示の仕方には幾つかの実現手法がある。例えば、ステータスモニタが自らプリンタとの双方向通信をし、プリンタから返却された情報を元に行うものがある。また、マイクロソフト（登録商標）社のオペレーティングシステム（以下ＯＳ）の一つであるＷｉｎｄｏｗｓ（登録商標）では、プリントデータをスプールしてから出力する印刷サポート機能を有している。このＯＳの印刷サポート機能により、ランゲージモニタと呼ばれるモジュールが動作し、ＩＥＥＥ１２８４やＵＳＢ１．１などに準拠した双方向通信によってコンピュータに接続された印刷装置との間で通信を行う。従って、各印刷ジョブの排紙完了や印刷装置内で発生したエラー情報などを知ることが可能となる。このランゲージモニタを介してプリンタから返却された情報をステータスモニタが得て、ステータスを表示することができる。
【０００６】
通常、ステータスモニタはプリンタドライバを構成するモジュールの一つとして実現される。
【０００７】
印刷中のプリンタのステータスを表示するために、通常はアプリケーションが印刷を実行した時に、プリンタドライバにより自動的にステータスモニタが起動される。また、プリンタドライバによっては、ユーザがステータスモニタを起動できるようなユーザインタフェースを備えているものもある。アプリケーションが印刷を実行した時に自動的にステータスモニタが起動される場合、実際にステータスモニタを起動するプリンタドライバのモジュールは、前述したランゲージモニタか、ユーザインタフェースを提供するユーザインタフェースドライバであることが多い。
【０００８】
ところが、ステータスモニタが自動的に起動されるとアプリケーションのフォーカスが移ってしまったり、ステータスモニタのダイアログが突然表示されたりするため、ユーザによってはステータスモニタが自動的に起動されることを嫌うこともあり得る。その対策として、印刷時にステータスモニタを起動するかどうかをユーザを指定させるための設定項目を持つステータスモニタが考えられている。例えば「印刷時にステータスモニタを使用する」という設定項目がＯＦＦに設定されているのであれば印刷開始時にステータスモニタが表示されなくなる。
【０００９】
ここで、印刷を実行するアプリケーションであるが、印刷以外にも様々な機能を有する。通常、印刷を行うアプリケーションは印刷を行うための文書を作成するか、あるいはコンピュータやネットワーク上の記憶装置から文書を取得し印刷を行う。ここでアプリケーションにより取得される文書としては、ユーザ自身が過去に作成した文書や、他者が作成した文書が考えられる。仮にアプリケーションにセキュリティ上の欠陥があり、他者が作成した文書に悪意のある仕掛がしてあると、ユーザが使用するコンピュータは甚大な被害を被りかねない。特にインターネットと通信するアプリケーションは、不明なソースから信頼性の低いコンテンツをダウンロードするため、他のプログラムよりも悪用されるリスクが高くなっている。このためＯＳとアプリケーションの双方にセキュリティを向上させ、安全性を高めるための工夫がなされている。
【００１０】
例えばマイクロソフト（登録商標）社のＯＳであるＷｉｎｄｏｗｓ（登録商標）  Ｖｉｓｔａ（登録商標）で動作するアプリケーションの中には保護モードでの動作をサポートしているものがある。保護モードのプロセスは整合性レベルと呼ばれるＯＳのセキュリティ機能に基づいて動作する。保護モードは、権限を大幅に制限してプロセスを実行することによって、プロセス外部からの攻撃からユーザーやシステムを保護するための動作モードである。ここでプロセス外部からの攻撃とは、コンピュータ上でのデータの書き込み、変更、破壊や、あるいは悪意のある実行コードのインストールといったユーザに不利益をもたらす可能性のあるものを指す。保護モードで動作するプロセスの権限は著しく低いため、プロセス外部から攻撃された場合でも、システムやユーザのデータ領域が破壊されたり改竄される可能性は大幅に低減し、ユーザやシステムの重要なデータは守られることになる。
【００１１】
図１は保護モードと整合性レベルに関する概念図である。ＯＳのセキュリティ機能として提供される整合性レベルは、プロセスごとにセキュリティオブジェクトへのアクセスを制限する。セキュリティオブジェクトとは書き換え可能な論理資源を指しており、具体的にはファイルやレジストリが挙げられる。
【００１２】
整合性レベルは「高」「中」「低」の３段階に分かれており、それぞれの段階でプロセスに与えられる特権と、書き込みが行える領域が異なる。この関係を図１（Ａ）に示す。高い整合性レベルで実行されるプロセスは管理者特権が与えられ、システム管理等に使用される重要なセキュリティオブジェクト領域に書き込みが可能となる。中間の整合性レベルで実行されるプロセスはユーザ権限が与えられ、ユーザ専用のセキュリティオブジェクト領域に書き込みが可能となる。低い整合性レベルで実行されるプロセスは信頼性の低い権限が与えられ、整合性の低いプロセス専用のセキュリティオブジェクト領域にのみ書き込みが可能となる。
【００１３】
ここで高い整合性レベルで実行されるプロセスは、中間の整合性レベルまたは低い整合性レベルのセキュリティオブジェクト領域に書き込みが可能である。同様に中間の整合性レベルで実行されるプロセスは低い整合性レベルのセキュリティオブジェクト領域に書き込みが可能である。
【００１４】
保護モードと整合性レベルの関係を図１（Ｂ）に示す。保護モードで動作するプロセス１００には、低い整合性レベルが得られている。つまり保護モードのプロセス１００は低い権限で動作しているため、低い整合性レベルのセキュリティオブジェクト領域にのみ書き込み１１０が可能である。
【００１５】
一方、保護モードのプロセス１００が中間の整合性レベルや高い整合性レベルのセキュリティオブジェクトには書き込みを行う場合は、ブローカープロセスと呼ばれる外部のプロセスを仲介する。ユーザ専用の領域へ書き込み１１２を行う場合は中間の整合性レベルが与えられたユーザブローカー１２２を介してアクセスを行う。この際にプロセス１００は低い整合性レベルであるため、ユーザブローカー１２２にアクセスを委託する場合にユーザー権限が必要となる。同様に、システム管理等の重要な領域へ書き込み１１４を行う場合は高い整合性レベルが与えられた管理ブローカー１２４を介してアクセスを行う。この際にプロセス１００は低い整合性レベルであるため、管理ブローカー１２４にアクセスを委託する場合に管理者権限が必要となる。
【特許文献１】特開２００３−１６７７１８号公報
【特許文献２】特開２００４−０３８６５９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１６】
ところで、前記のような従来の技術には次のような解決すべき課題があった。
【００１７】
前述したように、通常、ステータスモニタは、アプリケーションが印刷を開始した時にアプリケーションのプロセスから呼び出されたユーザインタフェースドライバにより自動的に起動される。また、ユーザインタフェースドライバがステータスモニタを起動するためのユーザインタフェースを備えている場合は、ユーザが任意のタイミングでステータスモニタを起動することも可能である。つまり、ステータスモニタはプリンタドライバを呼び出したプロセスとは別のプロセスとして作成される。
【００１８】
しかし、ユーザインタフェースドライバを呼び出したプロセスが保護モードで動作している場合、ステータスモニタのプロセスに与えられる整合性レベルによっては、警告ダイアログが表示される場合がある。
【００１９】
保護モードで動作するアプリケーションが印刷を開始すると、ＯＳの印刷サポート機能を介して、ユーザインタフェースドライバが呼び出される。そしてプリンタドライバはステータスモニタを起動する。例えばここで、プリンタドライバが中間の整合性レベルをステータスモニタのプロセスに与えると、ステータスモニタが起動される前に警告ダイアログが表示される。これは保護モードで動作するプロセスには低い整合性レベルが与えられているが、このプロセスから起動される別のプロセスの整合性レベルの方が高く、より広いセキュリティオブジェクトにアクセスできるためである。つまり、保護モードで動作するプロセスから呼び出されたユーザインタフェースドライバが、より高い権限をもつステータスモニタを起動するにあたり、ユーザの許可が必要になるためである。
【００２０】
図７（Ａ）は警告ダイアログの一例である。プリンタドライバにより起動されるステータスモニタのモジュールが直接実行可能なファイル形式、すなわちファイル名の拡張子がＥＸＥとなる実行ファイルである場合に、警告ダイアログ７００が表示される。警告ダイアログ７００の起動許可ボタン７２０をユーザが押下することで、ステータスモニタが起動される。起動許可ボタン７２０が押下される時にチェックボックス７２１がＯＮになっていると、以後、ステータスモニタが起動される時に警告ダイアログ７００が表示されなくなる。
【００２１】
図７（Ｂ）も警告ダイアログの一例である。プリンタドライバにより起動されるステータスモニタのモジュールが直接実行不可能な共有ライブラリ形式、すなわちファイル名の拡張子がＤＬＬとなる実行ファイルをＲｕｎｄｌｌ３２．ｅｘｅで起動する場合に、警告ダイアログ７５０が表示される。警告ダイアログ７５０の起動許可ボタン７７０をユーザが押下することで、ステータスモニタが起動される。
【００２２】
警告ダイアログ７５０には、警告ダイアログ７００のチェックボックス７１２に相当するものが存在しない。これは標準のＤＬＬ起動用プログラムＲｕｎｄｌｌ３２．ｅｘｅを用いてＤＬＬ形式の実行ファイルを起動する場合、ＤＬＬ形式の実行ファイルの安全性をＯＳが保証できないためである。
【００２３】
以上のように、保護モードで動作するアプリケーションからＯＳの印刷サポート機能を介して呼び出されたユーザインタフェースドライバが、ステータスモニタを起動する場合、警告ダイアログが表示される。前述したようにステータスモニタはアプリケーションが印刷を行う度に起動されるため、印刷を行う度に図７で例示した警告ダイアログが表示される。従って、警告ダイアログの起動許可ボタンあるいは起動不許可ボタンを押下するまで印刷処理が開始されず、印刷処理の手順が複雑になってしまうことが問題となる。
【００２４】
また、印刷開始時にステータスモニタを使用しないように設定すれば警告ダイアログは表示されないと、ユーザは予想する可能性がある。しかし、ユーザインタフェースドライバにより起動されたステータスモニタ自身が、印刷時にステータスモニタを使用しない設定を参照している場合には問題となる。折角ユーザがステータスモニタを使用しないように設定を行っても、印刷開始時にステータスモニタが起動されてしまうため警告ダイアログが表示されてしまう欠点が有る。
【００２５】
本発明は上記従来の問題点に鑑み、保護モードで動作するアプリケーションにより表示される警告ダイアログの出現頻度を抑制することを考慮した、ステータスモニタを有するプリンタドライバを提供することを目標とする。
【課題を解決するための手段】
【００２６】
上記目的を達成するために、本発明のプリンタドライバは以下のような構成を有する。
【００２７】
アプリケーションの描画命令を印刷コマンドとしてプリンタに供給するプリンタドライバであって、
前記プリンタドライバは少なくとも、
プリンタのステータスを表示するためのステータスモニタと、
アプリケーションの印刷要求に従ってＯＳの印刷サポート機能を介して呼び出されるユーザインタフェースドライバとを含み、
前記ユーザインタフェースドライバは前記ステータスモニタのプロセスを作成するにあたり、
前記ユーザインタフェースドライバを呼び出したプロセスが保護モードかどうかの判定と、
前記ステータスモニタのプロセスを作成するための起動用プログラムの有無の判定を行い、
前記起動用プログラムが存在する場合は前記起動用プログラムを用いて前記ステータスモニタのプロセスを作成し、
前記ユーザインタフェースドライバを呼び出したプロセスが保護モードであり且つ前記起動用プログラムが存在しない場合は、低権限で動作するようにステータスモニタのプロセスを作成ようにした。
【００２８】
また、前記ユーザインタフェースドライバは、前記起動用プログラムを用いて前記ステータスモニタのプロセスを作成する前に、ユーザインタフェースドライバを呼び出した保護モードで動作するプロセスにより上記警告ダイアログが表示された場合の操作方法を、ユーザに案内するようにした。
【００２９】
また、前記ユーザインタフェースドライバは、アプリケーションが印刷を開始した際に前記ステータスモニタを起動するかどうかを判定するようにした。
【発明の効果】
【００３０】
上記構成により本発明によれば以下のような効果が得られる。
【００３１】
（１）保護モードで動作するプロセスから呼び出されたユーザインタフェースドライバから、保護モードの外で動作するステータスモニターのプロセスを作成する際に、保護モードのプロセスにより表示される警告ダイアログを抑制することが可能となり、快適な印刷環境をユーザに提供できる。
【００３２】
（２）保護モードのプロセスにより警告ダイアログが表示される場合には、警告ダイアログの操作方法を事前にユーザに案内することで、警告ダイアログが表示されないようにユーザを誘導することができ、快適な印刷環境をユーザに提供できる。
【００３３】
（３）印刷時にステータスモニタを使用するかどうかの判定を、ユーザインタフェースドライバがステータスモニタを起動する前に行うことで、印刷開始時のステータスモニタの起動を最低限に抑えることが可能になり、警告ダイアログが表示される頻度を抑えることが出来る。
【発明を実施するための最良の形態】
【００３４】
［実施例１］
以下、図面に示す実施例に基づき本発明を詳細に説明する。
【００３５】
＜プリンタドライバの動作＞
図２は、本発明におけるプリンタドライバの実施形態を説明するために、印刷システムをＯＳの印刷サポート機能とプリンタドライバを中心に表したブロック図である。
【００３６】
図２において、本発明に関するプリンタドライバの中で特に重要となるモジュールは、グレーの網掛けがされたモジュールである。それらは、ユーザインタフェースドライバ２０５とステータスモニタ２０７、そしてステータスモニタ起動用プログラム２３３である。
【００３７】
本実施例におけるステータスモニタ２０７のモジュールは直接実行不可能な共有ライブラリ形式、つまりＤＬＬ形式である実行ファイルを想定している。ＤＬＬ形式の実行ファイルは直接実行できないため、独立したプロセスとして実行するためには、ＤＬＬ形式の実行ファイルを呼び出すためのＤＬＬ起動用プログラムが必要となる。ＯＳがＷｉｎｄｏｗｓ（登録商標）である場合は、ＯＳ標準の汎用的なＤＬＬ起動用プログラムとしてＲｕｎｄｌｌ３２．ｅｘｅというプログラムが提供されており、図２の２３１で示される。ステータスモニタ起動用プログラム２３３もＤＬＬ形式の実行ファイルを呼び出すためのものであるが、ステータスモニタ専用のＤＬＬ起動用プログラムとなっている。
【００３８】
図２においてプリンタドライバとして提供されるモジュールはユーザインタフェースドライバ２０５、ステータスモニタ２０７、印刷データ編集処理部２１３、イメージ生成処理部２１５、そしてランゲージモニタ２１９となっている。ここで、ステータスモニタ起動用プログラム２３３はプリンタドライバに含めてもよいし、プリンタドライバには含めずに、プリンタドライバとは別のソフトウェアとしてインストールし、プリンタドライバに追加する形式にしてもよい。本実施例ではプリンタドライバには含めずに、プリンタドライバとは別のソフトウェアとしてインストールすることを想定している。
【００３９】
ステータスモニタ２０７は様々なプリンタのステータスをユーザの手元で、グラフィカルに、かつリアルタイムに提示する機能を有している。ステータスモニタ２０７の提示機能の例については図４を用いて後述する。前述したようにステータスモニタ２０７はＤＬＬ形式の実行ファイルであるから、２３１で示されるＲｕｎｄｌｌ３２．ｅｘｅやステータスモニタ起動用プログラム２３３を介して、ユーザインタフェースドライバ２０５によって起動される。ステータスモニタ２０７は起動された後、後述するランゲージモニタ２１９と通信を行うことでプリンタのステータスを取得し、ユーザにステータスの提示を行う。
【００４０】
ユーザインタフェースドライバ２０５は、一般に印刷に使用する用紙サイズや印刷方向、その他の属性を設定する機能を提供する。そして、これらの属性と設定値を印刷設定情報としてアプリケーションに返却する。同時に本発明におけるユーザインタフェースドライバ２０５はステータスモニタを起動するための機能を有している。そして、アプリケーションの印刷実行時にステータスモニタを起動したり、ユーザが任意のタイミングでステータスモニタを起動できるようにするためのユーザインタフェースを提供する。ユーザインタフェースドライバ２０５が提供するユーザインタフェースの例については図３を用いて後述する。
【００４１】
アプリケーション２０１が作成した文書の各ページの印刷データは、ＯＳの印刷サポート機能２０３を通じてスプールファイル２０９に一時的に蓄えられる。そして、これをプリンタドライバのモジュール群がイメージデータ（すなわちビットマップデータ）に展開し、プリンタが解釈可能な印刷コマンドに変換してプリンタ２１８に供給して印刷するよう構成されている。
【００４２】
アプリケーション２０１は作成した任意の文書の印刷にあたる。通常、ユーザが望む印刷結果を得るために、ユーザインタフェースドライバ２０５のユーザインタフェースを介して印刷設定情報を作成する。そして、アプリケーション２０１はＯＳの印刷サポート機能２０３に対して、印刷開始や印刷終了、文書の各ページの描画開始や描画終了を要求する。ここで、ＯＳの印刷サポート機能２０３はアプリケーション２０１により上記印刷に関する要求が行われる度に、印刷イベントをユーザインタフェースドライバ２０５に通知する。
【００４３】
ユーザインタフェースドライバ２０５は印刷開始の印刷イベントを受け取ると、ステータスモニター２０７を起動する。上述したようにステータスモニター２０７は直接実行できないため、ステータスモニタ起動用プログラム２３３が存在すれば、これを用いてステータスモニタ２０７を起動する。ステータスモニタ起動用プログラム２３３が存在しなければ２３１で示されるＲｕｎｄｌｌ３２．ｅｘｅを用いてステータスモニタ２０７を起動する。ユーザインタフェースドライバ２０５がステータスモニタ２０７を起動する詳細な手順は図８を用いて後述する。
【００４４】
アプリケーション２０１が印刷するために描画したデータはＯＳの印刷サポート機能により一旦スプールファイル２０９にスプールされる。そして、デスプール時にＯＳの印刷サポート機能によって、プリンタドライバのデスプールモジュール群２１１が呼び出される。デスプールモジュール群２１１はスプールファイル２０９に格納された描画データからプリンタ２１８が解釈可能な印刷コマンドに変換し、プリンタ２１８に供給する機能を有する。
【００４５】
本実施例によけるプリンタドライバのデスプールモジュール群２１１は、印刷データ編集処理部２１３とイメージ生成処理部２１５、そしてランゲージモニタ２１９で構成されている。
【００４６】
印刷データ編集処理部２１３は、スプールファイル２０９から印刷すべき文書ページの印刷データと印刷設定情報を読み出し、逆順印刷のように印刷するページ順序を入れ換えたり、割付け印刷（Ｎ−ｕｐ）のように複数の文書ページを1枚の印刷用紙に合成したりする編集処理機能を有する。そして、印刷データ編集処理部２１３は、編集処理した後の印刷データをイメージ生成処理部２１５に供給する。
【００４７】
イメージ生成処理部２１５は、まず、印刷データ編集処理部２１３から供給された編集処理済みの印刷データをもとにイメージデータに展開する。続いて、イメージ生成処理部２１５は、展開されたイメージデータをプリンタ２１８が解釈可能な印刷コマンドに変換し、変換した印刷コマンドをランゲージモニタ２１９に供給する。
【００４８】
ランゲージモニタ２１９は、イメージ生成処理部２１５から供給された印刷コマンドを解釈しつつ、プリンタ２１８に印刷コマンドを供給する。そして、プリンタ２１８のステータスを取得し、ステータスモニタ２０７と通信を行い、プリンタ２１８のステータス情報として送信する。
【００４９】
出力デバイスであるプリンタ２１８は、供給された印刷コマンドを解釈し、可視画像２２３を印刷用紙２２１に対して形成する機能を持つ。
【００５０】
＜ユーザインタフェース＞
図３は本実施形態におけるユーザインタフェースドライバが提供する印刷設定ダイアログのうち、プリンタのメンテナンスを行う機能を選択するためのユーティリティ画面の一例を示す図である。ここではメンテナンス機能として、ヘッドの調整やクリーニングなどの、プリンタの機能を維持したり印刷時の動作音を調整したりするような機能や、プリンタのステータスを確認するためにステータスモニタを起動させるための機能を想定している。
【００５１】
印刷設定ダイアログ３０１は、表示エリア３０２〜３１１、３４０〜３４８から構成される。印刷設定では表示する項目が非常に多いため、タブシートを使用して設定項目を内容ごとに分けて見やすい構成にするのが通例である。本実施形態でもタブを使用する。
【００５２】
基本設定タブ３０２では、印刷の基本に関する内容を表示する。
【００５３】
ページ設定タブ３０３は、用紙の大きさ、印刷方向、割付け印刷（Ｎ−ｕｐ）などの各種ページ設定に関する内容を表示する。
【００５４】
特殊効果タブ３０４は、各種画像補整やセピア調など特殊な効果を画像に与える場合に使用する機能の選択画面を表示する。
【００５５】
お気に入りタブ３０５は頻繁に使用する印刷設定などの保存と呼び出し機能を選択させる画面を表示する。
【００５６】
ユーティリティタブ３０６は、上述したようにステータスモニタを起動する機能や、ヘッドの調整やクリーニングなどの機能の選択画面を表示する。
【００５７】
ボタン３４０〜３４７は、各々にプリンタを操作するための機能が割り当てられている。ユーザが各ボタンを押下することにより所定の印刷コマンドをスプールファイルを介してプリンタに送信し、ボタンで表現される各機能を実施することが可能になっている。クリーニングボタン３４０は印刷結果にかすれやスジ等が見られる場合に押下されることを想定しており、インクを吐出するオリフィスをクリーニングする機能を提供する。強力クリーニングボタン３４１はクリーニングボタン３４０よりも強力にオリフィスをクリーニングする機能を提供する。ヘッド位置調整ボタン３４２は吐出されたインクが印刷用紙で像を形成する際の精度を調整するために、プリンタヘッドの位置を調整する機能を提供する。ノズルチェックパターン印刷ボタン３４３はオリフィスにインクが固着し吐出不良が発生していないか確認するためのパターンを印刷する機能を提供する。電源オフボタン３４４はプリンタの電源をオフにする機能を提供する。自動電源設定ボタン３４５はプリンタの電源がオフであっても印刷コマンドが送信された場合自動的に電源をオンにする機能や、一定時間印刷コマンドが送信されない場合自動的に電源をオフにする機能を提供する。サイレント設定ボタン３４６はプリンタの印刷動作時の動作音を抑える設定するための機能を提供する。特殊設定ボタン３４７はプリンタのその他の動作モードの設定を行う機能を提供する。プリンタ状態の確認ボタン３４８を押下すると、ユーザインタフェースドライバはステータスモニタのプロセスを作成し、ステータスモニタの画面が表示されプリンタのステータスを確認することができる。ステータスモニタの画面については図４を用いて後述する。
【００５８】
ＯＫボタン３０８またはキャンセルボタン３０９を押下すると印刷設定ダイアログ３０１が閉じる。ヘルプボタン３１１はユーティリティタブ３０６の各メンテナンス項目に関する説明文を別ウィンドウで表示させることができる。
【００５９】
＜印刷開始時におけるステータスモニタ起動＞
本実施例では、アプリケーションが印刷を開始する際に、ユーザインタフェースドライバがステータスモニタを起動する構成になっている。この手順を図５のタイミングチャートを用いて説明する。図５はアプリケーションの印刷開始時にユーザインタフェースドライバがステータスモニタを起動するタイミングチャートの一例である。
【００６０】
アプリケーションが印刷開始をＯＳの印刷サポート機能に要求すると（５０１）、ＯＳの印刷サポート機能はユーザインタフェースドライバに印刷開始のイベントを通知する（５０３）。印刷開始のイベントを受け取ったユーザインタフェースドライバはステータスモニタを起動し、ＯＳの印刷サポート機能に制御を返却する（５０５）。続けてＯＳの印刷サポート機能は実際の印刷開始の処理を行い、アプリケーションに制御を返却する（５０７）。このようにアプリケーションが印刷を実行する度にユーザインタフェースドライバはステータスモニタを起動する。
【００６１】
以上のようにＯＳの印刷サポート機能がユーザインタフェースドライバに通知する印刷イベントを利用することで、ユーザインタフェースドライバがステータスモニタを起動することができる。ここでユーザインタフェースドライバはステータスモニタを起動する際の引数として、アプリケーションの印刷ジョブに関する情報を渡す。こうすることで、ステータスモニタはアプリケーションの印刷開始時に起動されたのか、あるいは、ユーザインタフェースのメンテナンス画面から起動されたのかを判定できるようになる。
【００６２】
なお、前述したように本実施例においてはステータスモニタはＤＬＬ形式の実行ファイルであるから、Ｒｕｎｄｌｌ３２．ｅｘｅやステータスモニタ起動用プログラムを介して、ユーザインタフェースドライバによって起動される。ユーザインタフェースドライバによるステータスモニタ起動の手順は図８を用いて後述する。
【００６３】
＜ステータスモニタ＞
図４を用いてステータスモニタが表示する画面について説明する。ステータスモニタダイアログ４００は表示エリア４０１〜４１３で構成される。
【００６４】
メニュー４０１はステータスモニタの設定や表記機能を切替るためのメニューである。図示していないが、オプションメニューからは、アプリケーションの印刷時にステータスモニタを使用するかどうかを設定することができる。インクについてメニューを選択すると、表示中のプリンタで使用されるインクタンクやインクカートリッジの製品型番が、図示しない別ウィンドウにグラフィカルに表示される。ヘルプメニューを選択するとステータスモニタについてのヘルプ画面が表示される。
【００６５】
プリンタ情報タブ４０３にはプリンタに関するステータスが表示される。表示エリア４０５にはプリンタのステータスとインクの残量等がグラフィカルに表示される。表示エリア４０７は、プリンタのステータスとインクの残量等が文章で説明される。表示エリア４０９は印刷中のジョブがあれば、ジョブの所有者とジョブの名称、現在印刷中のページ数と総ページ数が表示される。印刷中止ボタン４１１を押下すると、印刷中のジョブがあれば印刷を中止することができる。印刷待ち一覧を表示ボタン４１３を押下すると、ＯＳが標準機能として提供する図示しないキューウィンドウを呼び出すことができる。
【００６６】
なお、オプションメニューから印刷時にステータスモニタを使用するかどうかを設定することができるのは、アプリケーションが印刷を開始する度にステータスモニタが起動することをユーザが嫌う可能性があるためである。そのようなユーザはステータスモニタのオプションメニューから「印刷時にステータスモニタを使用する」設定をＯＦＦにすれば良い。この「印刷時にステータスモニタを使用する」設定に着目したステータスモニタの処理手順について図６を用いて説明する。
【００６７】
図６は「印刷時にステータスモニタを使用する」設定に着目したステータスモニタの処理のフローチャートである。ステータスモニタは起動すると、まずＳ１０１で起動時にユーザインタフェースドライバから渡された引数に基づいて、アプリケーションの印刷開始時における起動かどうかを判定する。アプリケーションの印刷開始時における起動ならばＳ１０３に移り、アプリケーションの印刷開始時における起動でないならばＳ１０５に移る。
【００６８】
Ｓ１０３では共通記憶領域から印刷時使用フラグを読み込み、印刷時使用フラグがＯＮかどうかを判定する。もしＯＮであればＳ１０５に移り、ＯＮでなければステータスモニタの処理を終了する。印刷時使用フラグは上述した「印刷時にステータスモニタを使用する」設定の設定内容に対応する。なお、プリンタドライバインストール時における印刷時使用フラグの初期値がＯＮであることは言うまでもない。
【００６９】
Ｓ１０５からＳ１１５がステータスモニタの処理ループとなっている。ここでは「印刷時にステータスモニタを使用する」設定に関してのみの処理を示す。Ｓ１０７ではユーザにより、「印刷時にステータスモニタを使用する」がＯＦＦに設定されたかどうかを判定する。ＯＦＦに設定された場合はＳ１０９に移り、それ以外の場合はＳ１１１に移る。Ｓ１０９では印刷時使用フラグをＯＦＦにする。
【００７０】
続いてＳ１１１では「印刷時にステータスモニタを使用する」がＯＮに設定されたかを判定する。ＯＮに設定された場合はＳ１１３に移り、それ以外の場合はＳ１１５に移る。Ｓ１１３では印刷時使用フラグをＯＮにする。
【００７１】
Ｓ１１５はステータスモニタの処理ループの終端であり、終了条件はステータスモニタが起動された条件により異なる。アプリケーションの印刷開始時にステータスモニタが起動された場合は、ユーザインタフェースドライバにより引数で指定された印刷ジョブの印刷処理が完了したことが終了条件となる。ユーザインタフェースドライバのメンテナンス画面から起動された場合は、ユーザによって明示的にステータスモニタの終了が指示されたことが終了条件となる。
【００７２】
続いてＳ１１７では印刷時使用フラグを、ファイルやレジストリ等の共通記憶領域に保存する。
【００７３】
このように、印刷時にステータスモニタを使用するかどうかの設定を、印刷時使用フラグとして保存することで、ステータスモニタだけではなくユーザインタフェースドライバも参照することができるようになる。なお、本実施例のステータスモニタは、Ｓ１０１とＳ１０３で印刷時にステータスモニタを使用するかどうかを判定しているが、この処理は必須ではない。なぜならば図８を用いて後述するように、本実施例ではユーザインタフェースドライバがステータスモニタを起動する前に判定を行うためである。ただし、従来のステータスモニタの処理を強調するために、図６のフローチャートもＳ１０１とＳ１０３の判定処理を入れ、従来の手順のままに示した。
【００７４】
＜ステータスモニタ起動処理＞
さて、以上説明したように、本実施例ではユーザインタフェースドライバがステータスモニタを起動する。ここで、ユーザインタフェースドライバを呼び出したプロセスが保護モードで動作している場合は、上述したようにステータスモニタを起動した時点で警告ダイアログが表示される。この警告ダイアログが表示される頻度を抑制するための、ユーザインタフェースドライバのステータスモニタの起動手順を図８のフローチャートに示す。ただし、図８ではアプリケーションが印刷を開始した際に着目したフローチャートとなっている。
【００７５】
まず、Ｓ２０１で印刷時にステータスモニタを使用する設定がされているかどうかを見るために、共通記憶領域から印刷時使用フラグを読み出しＯＮかどうかを判定する。印刷時使用フラグがＯＮであればＳ２０３に移り、ＯＮでなければ終了する。
【００７６】
Ｓ２０３では、ステータスモニタ起動用プログラムが印刷システムの記憶領域の中に存在するかどうかを判定する。ステータスモニタ起動用プログラムが存在しなければＳ２０５に移り、存在すればＳ２３１に移る。Ｓ２３１ではステータスモニタ起動用プログラムを介して、ステータスモニタのプロセスを作成した後に終了する。Ｓ２３１で作成するステータスモニタのプロセスには、ユーザ権限を与えると良い。ここで、ユーザインタフェースドライバを呼び出したプロセスが保護モードで動作している場合は、ユーザ権限で動作するステータスモニタのプロセスは保護モード（つまり低権限）ではないため、保護モードで動作するプロセスにより図７（Ａ）に例示される警告ダイアログが表示される。逆にユーザインタフェースドライバを呼び出したプロセスが保護モードで動作していない場合は、警告ダイアログは表示されない。
【００７７】
Ｓ２０５では、ユーザインタフェースドライバを呼び出したプロセスが保護モードかどうかを判定する。保護モードでなければＳ２０７に移り、保護モードであればＳ２２１に移る。Ｓ２２１ではＯＳ標準のＤＬＬ起動用プログラムのＲｕｎｄｌｌ３２．ｅｘｅを介して、ステータスモニタのプロセスをユーザインタフェースドライバを呼び出したプロセスと同じ権限で作成する。ここではユーザインタフェースドライバを呼び出したプロセスは保護モードではないから、警告ダイアログは表示されない。Ｓ２２１でステータスモニタを起動したあとは、ユーザインタフェースドライバのステータスモニタ起動処理を終了する。
【００７８】
Ｓ２０７では上述したＲｕｎｄｌｌ３２．ｅｘｅを介して、ステータスモニタのプロセスを低権限で作成した後に、ユーザインタフェースドライバのステータスモニタ起動処理を終了する。ここで低権限とは保護モードと等価であるから、警告ダイアログは表示されない。
【００７９】
このように、ユーザインタフェースドライバがステータスモニタのプロセスを作成するにあたり、ユーザインタフェースドライバを呼び出したプロセスが保護モードかどうかを判定し、また、ステータスモニタ起動用プログラムの存在を判定し、条件に応じて適切な権限を与えてステータスモニタを起動することにより、警告ダイアログの表示を最低限に抑えることができる。また、Ｓ２３１により図７（Ａ）で例示される警告ダイアログが表示されたとしても、上述したようにチェックボックス７１２をＯＮにして許可するボタン７２０を押下した後は、本警告ダイアログは表示されなくなる。
【００８０】
ここで、ユーザが図３のボタンを押下してステータスモニタを起動する場合においても、保護モードのプロセスによる警告ダイアログの表示頻度を抑制することが、快適な印刷環境をユーザに提供するうえで重要である。この場合は、図８のＳ２０３から処理を開始することで、表示頻度の抑制が実現できる。
【００８１】
さて、Ｓ２０７において低権限のプロセスとして作成されたステータスモニタは、書き込みが可能なセキュリティオブジェクト領域が限られているため、その動作の一部に制限が発生することがある。具体的には図４で例示したステータスモニタダイアログの印刷待ち一覧を表示ボタン４１３を押下することによって表示されるＯＳ標準のキューウィンドウもまた低権限で動作するため、キューウィンドウからの印刷中止の操作ができないといった副作用がある。しかし、本実施例ではステータスモニタの画面の印刷中止ボタン４１１を押下すれば、印刷中止要求をステータスモニタからランゲージモニタに通知し、ランゲージモニタが印刷中止を行えるので、上記の動作制限は問題にならないことは言うまでもない。
【００８２】
［実施例２］
以下、図９と図１０に示す実施例にもとづき本発明を詳細に説明する。本実施例は、ユーザインタフェースドライバがステータスモニタを起動する前に警告ダイアログの操作方法の説明を表示し、ユーザを正しく導くことで、警告ダイアログが表示される頻度を更に下げることを特徴とする。なお、図８以外の図は実施例１と同一であるため説明を省く。
【００８３】
＜ステータスモニタ起動処理＞
本実施例におけるユーザインタフェースドライバのステータスモニタ起動処理のフローチャートを図９に示す。実施例１の図８と図９（Ａ）の差異はＳ２３１におけるステータスモニタのプロセス作成の前に、Ｓ３０１でユーザに警告ダイアログの操作案内をすることだけである。Ｓ３０１の処理については図９（Ｂ）を用いて後述する。図９（Ａ）の他の説明は図８と同一であるため、ここでは記載を省略する。
【００８４】
図９（Ｂ）はユーザへの警告ダイアログの操作方法を案内するためのフローチャートであり、図９（Ａ）のＳ３０１の処理を詳細に示している。Ｓ３１１では、ユーザインタフェースドライバを呼び出したプロセスが保護モードかどうかを判定する。保護モードであればＳ３１３に移り、保護モードでなければ終了する。Ｓ３１３では、過去に図７（Ａ）の警告ダイアログのチェックボックス７１２がＯＮの状態で許可ボタン７１２が押下されたかどうかを調べる。警告ダイアログは、保護モードで動作するユーザインタフェースドライバを呼び出したプロセスで表示されており、チェックボックスがＯＮの状態でプロセスの作成が許可されたかどうかは、ユーザインタフェースドライバから参照かのうである。上述したように、ユーザが一度、チェックボックスをＯＮにした状態で許可するボタン７２０を押下していれば、警告ダイアログは二度と表示されないのであるから、ユーザへ警告ダイアログの操作方法を案内する必要は無い。従ってＳ３１３で、チェックボックス７１２がＯＮで許可するボタン７２０が押されていたと判断された場合は操作案内処理を終了し、チェックボックス７１２がＯＮで許可するボタン７２０が押されていたと判断されなかった場合はＳ３１４に移る。Ｓ３１４では、これから表示される、警告ダイアログでの操作方法を表示した後、操作案内処理を終了する。
【００８５】
Ｓ３１４の操作案内は、具体的には、次に表示される警告ダイアログで「常に許可する」チェックボックス７１２をＯＮにした状態で許可するボタンを押下するように促すメッセージを表示する。このメッセージの一例を図１０のダイアログに示す。操作案内ダイアログ１０００はメッセージ表示領域を持ち、文章で操作方法の説明を行う。ＯＫボタン１００２を押下すると操作案内ダイアログ１０００が閉じる。また、操作案内ダイアログ１０００では文章で操作説明を行っているが、グラフィカルに図７（Ａ）の模式図を表示して、より解りやすくユーザに説明することもできる。
【００８６】
ユーザは図１０のダイアログのメッセージを読みＯＫボタン１００２を押下すると、処理がＳ２３１に移り、ユーザインタフェースドライバはステータスモニタを起動しようとする。ステータスモニタが起動される前に、図７（Ａ）の警告ダイアログが表示され、ユーザは図１０で説明されたように警告ダイアログを操作することが可能になる。
【００８７】
以上説明したように、本実施例では、ユーザインタフェースドライバがステータスモニタを起動する前に警告ダイアログの操作方法の説明を表示し、ユーザを正しく導くことで、警告ダイアログが表示される頻度を更に下げることができる。
【００８８】
以上説明したこれらの実施形態によれば、保護モードのプロセスから呼び出されるプリンタドライバがステータスモニタを起動する場合において、次のような効果が得られる。
【００８９】
（１）保護モードで動作するプロセスから呼び出されたユーザインタフェースドライバから、保護モードの外で動作するステータスモニターのプロセスを作成する際に、保護モードのプロセスにより表示される警告ダイアログを抑制することが可能となり、快適な印刷環境をユーザに提供できる。
【００９０】
（２）保護モードのプロセスにより警告ダイアログが表示される場合には、警告ダイアログの操作方法を事前にユーザに案内することで、警告ダイアログが表示されないようにユーザを誘導することができ、快適な印刷環境をユーザに提供できる。
【００９１】
（３）印刷時にステータスモニタを使用するかどうかの判定を、ユーザインタフェースドライバがステータスモニタを起動する前に行うことで、印刷開始時のステータスモニタの起動を最低限に抑えることが可能になり、警告ダイアログが表示される頻度を抑えることが出来る。
【図面の簡単な説明】
【００９２】
【図１】保護モードと整合性レベルに関する概念図。
【図２】本発明の実施形態に係わるプリンタドライバのブロック図。
【図３】印刷設定ダイアログの一例を示す図。
【図４】ステータスモニタのダイアログの一例を示す図。
【図５】ステータスモニタ起動に関するタイミングチャート。
【図６】ステータスモニタの処理の一例を示すフローチャート。
【図７】保護モードのプロセスにより表示される警告ダイアログの一例を示す図。
【図８】本発明の実施形態に係わるステータスモニタ起動手順を示すフローチャート。
【図９】本発明の実施形態に係わるステータスモニタ起動手順を示すフローチャート。
【図１０】本発明の実施形態に係わる操作説明を行うダイアログの一例を示す図。
【図１】
2008102838.tif 000003
【図２】
2008102838.tif 000004
【図３】
2008102838.tif 000005
【図４】
2008102838.tif 000006
【図５】
2008102838.tif 000007
【図６】
2008102838.tif 000008
【図７】
2008102838.tif 000009
【図８】
2008102838.tif 000010
【図９】
2008102838.tif 000011
【図１０】
2008102838.tif 000012