(57)【要約】【課題】ログインプログラムで異常が発生した場合、そのログインプログラムを強制終了すると、ログインプログラムが行っている機能の制限が作動しなくなり、全てのユーザが全メニューを使用できるようになってしまう。【解決手段】  ファームウェア上で動作するログインプログラムによりユーザの認証を行う画像形成装置であって、ログインプログラムの異常を検知すると、ログインプログラムを終了させることなくジョブの実行を禁止し、そのジョブの実行を禁止している間、操作部を介したユーザによる操作を受付ける受付手段を介して前記ログインプログラムを無効にする操作を受付け可能にし、当該無効にする操作に応じて、禁止されたジョブを実行させるように制御する。【選択図】  図７
2018079675.tif 000002
【特許請求の範囲】
【請求項１】
ファームウェア上で動作するログインプログラムによりユーザの認証を行う画像形成装置であって、
操作部を介したユーザによる操作を受付ける受付手段と、
前記ログインプログラムの異常を検知すると、前記ログインプログラムを終了させることなくジョブの実行を禁止する禁止手段と、
前記ジョブの実行を禁止している間、前記受付手段を介して前記ログインプログラムを無効にする操作を受付け可能にし、当該無効にする操作に応じて前記禁止手段により禁止されたジョブを実行させるように制御する制御手段と、
を有することを特徴とする画像形成装置。
【請求項２】
前記ログインプログラムを無効にする操作は、前記画像形成装置が有する認証機能により認証された管理者権限を有するユーザの操作であることを特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記操作部は表示部を有し、前記禁止手段は、前記画像形成装置の電源の立ち上げ直しを促す画面を前記表示部に表示することを特徴とする請求項１に記載の画像形成装置。
【請求項４】
前記禁止手段は更に、前記ジョブの実行を禁止している間、前記表示部の画面の遷移を禁止することを特徴とする請求項３に記載の画像形成装置。
【請求項５】
ユーザによる操作を受付ける受付手段を有し、ファームウェア上で任意のアプリケーションプログラムを動作させる画像形成装置であって、
前記ファームウェアは、当該ファームウェア上で動作する前記アプリケーションプログラムの異常を検知し、当該異常を検出したアプリケーションプログラムがログインプログラムの場合に、前記ログインプログラムを終了させることなくジョブの実行を禁止し、
前記ジョブの実行を禁止している間、前記受付手段を介して前記ログインプログラムを無効にする操作を受付け可能にし、当該無効にする操作に応じて前記ジョブを実行させることを特徴とする画像形成装置。
【請求項６】
前記ログインプログラムを無効にする操作は、前記画像形成装置が有する認証機能により認証された管理者権限を有するユーザの操作であることを特徴とする請求項５に記載の画像形成装置。
【請求項７】
前記操作部は表示部を有し、前記ファームウェアは、前記画像形成装置の電源の立ち上げ直しを促す画面を前記表示部に表示させることを特徴とする請求項５に記載の画像形成装置。
【請求項８】
前記ファームウェアは更に、前記ジョブの実行を禁止している間、前記表示部の画面の遷移を禁止することを特徴とする請求項７に記載の画像形成装置。
【請求項９】
前記ファームウェアは、前記無効にする操作に応じて、前記表示部の画面の遷移の禁止を解除することを特徴とする請求項８に記載の画像形成装置。
【請求項１０】
前記ファームウェアは、前記異常を検出したアプリケーションプログラムがログインプログラムでない場合に、当該異常を検出したアプリケーションプログラムを強制的に停止することを特徴とする請求項５乃至９のいずれか１項に記載の画像形成装置。
【請求項１１】
前記アプリケーションプログラムの異常は、前記ファームウェアがイベントの発生に応じて前記アプリケーションプログラムへ送信したメッセージに対する応答が所定時間内にないことにより検出されることを特徴とする請求項５乃至１０のいずれか１項に記載の画像形成装置。
【請求項１２】
前記ログインプログラムは、前記任意のアプリケーションプログラムの一つとして前記ファームウェアに実装されていることを特徴とする請求項５乃至１１のいずれか１項に記載の画像形成装置。
【請求項１３】
前記受付手段或いは前記ファームウェアからの描画要求に応じて前記表示部への表示を制御するＵＩデバイス制御手段を、更に有し、
前記ＵＩデバイス制御手段は、前記受付手段から描画要求があると、前記ファームウェア上で動作するアプリケーションプログラムが前記表示部の画面を占有していない場合に前記受付手段から描画要求に応じた表示を行うことを特徴とする請求項７乃至９のいずれか１項に記載の画像形成装置。
【請求項１４】
前記ＵＩデバイス制御手段は、前記ファームウェア上で動作するアプリケーションプログラムから描画要求があると、当該アプリケーションプログラムよりも優先度の低いアプリケーションが前記表示部の画面を占有していない場合に当該描画要求に応じた表示を行うことを特徴とする請求項１３に記載の画像形成装置。
【請求項１５】
ファームウェア上で動作するログインプログラムによりユーザの認証を行う画像形成装置を制御する制御方法であって、
操作部を介したユーザによる操作を受付ける受付工程と、
前記ログインプログラムの異常を検知すると、前記ログインプログラムを終了させることなくジョブの実行を禁止する禁止工程と、
前記ジョブの実行を禁止している間、前記受付工程で前記ログインプログラムを無効にする操作を受付け可能にし、当該無効にする操作に応じて前記禁止工程で禁止されたジョブを実行させるように制御する制御工程と、
を有することを特徴とする画像形成装置の制御方法。
【請求項１６】
コンピュータに、請求項１５に記載の制御方法の各工程を実行させるためのプログラム。
【請求項１７】
ユーザのログインを条件としてジョブを実行する画像形成装置において、
ファームウェアの上で動作するログインアプリケーションであって、前記ユーザのログインを受け付けるログインアプリケーションにおいて異常が発生したことに応じて、前記ファームウェアの制御の下でジョブを実行させる指示を受け付けないように制御する制御手段を有することを特徴とする画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置及びその制御方法とプログラムに関する。
【背景技術】
【０００２】
昨今、ファームウェア上で任意のアプリケーションを動作させることができる画像形成装置が広く使われている。また、比較的廉価な画像形成装置においても、画面の描画に関わる複雑な画面管理処理（ウィンドウマネージャ）を備えることなく、ファームウェア上で任意のアプリケーションを動作させることができるようになっている。
【０００３】
一方、認証されたユーザにだけ画像形成装置の使用を認めるデバイスログイン機能が知られている（例えば特許文献１参照）。上記のファームウェア上で任意のアプリケーションを動作させることができる画像形成装置でも、デバイスログイン機能が任意のアプリケーションの一つとして実現されている。以降、このようなログイン機能を備えたアプリケーションをログインプログラムと呼ぶ。このようなデバイスログイン機能を使用することにより、ログインしたユーザごとに、使用できる機能の制限を実現することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−１２２７７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一般的に、アプリケーションに異常が発生した場合は、そのアプリケーションを強制終了させることが多い。しかし、ログインプログラムで異常が発生した場合、そのログインプログラムを強制終了すると、ログインプログラムが行っている機能の制限が作動しなくなり、全てのユーザが全メニューを使用できるようになってしまう。特に管理者メニューには、管理者のみがアクセスすべき設定（例えばセキュリティの設定など）もあり、全てのユーザが全メニューを使用できるようになるのは、様々な不具合を発生させるおそれがある。
【０００６】
本発明の目的は、上記従来技術の課題を解決することにある。
【０００７】
本発明の目的は、ログインプログラムで異常が発生した場合であっても、実行できる機能を制限しながら、正常に動作できる状態にする技術を提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するために本発明の一態様に係る画像形成装置は以下のような構成を備える。即ち、
ファームウェア上で動作するログインプログラムによりユーザの認証を行う画像形成装置であって、
操作部を介したユーザによる操作を受付ける受付手段と、
前記ログインプログラムの異常を検知すると、前記ログインプログラムを終了させることなくジョブの実行を禁止する禁止手段と、
前記ジョブの実行を禁止している間、前記受付手段を介して前記ログインプログラムを無効にする操作を受付け可能にし、当該無効にする操作に応じて前記禁止手段により禁止されたジョブを実行させるように制御する制御手段と、を有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、ログインプログラムで異常が発生した場合であっても、実行できる機能を制限しながら、正常に動作する状態にできるという効果がある。
【００１０】
本発明のその他の特徴及び利点は、添付図面を参照とした以下の説明により明らかになるであろう。なお、添付図面においては、同じ若しくは同様の構成には、同じ参照番号を付す。
【図面の簡単な説明】
【００１１】
添付図面は明細書に含まれ、その一部を構成し、本発明の実施形態を示し、その記述と共に本発明の原理を説明するために用いられる。
【図１】本発明の実施形態に係るＭＦＰのハードウェア構成を説明するブロック図。
【図２】実施形態に係るＭＦＰのソフトウェア構成を説明するブロック図。
【図３】実施形態に係るＭＦＰにおける、拡張アプリケーションによるプログラムの起動処理を説明するフローチャート。
【図４】実施形態に係るＭＦＰにおける、画面占有要求受付モジュールの動作を説明するフローチャート。
【図５】実施形態に係るＭＦＰにおける、描画要求受付モジュールの動作を説明するフローチャート。
【図６】実施形態に係るＭＦＰにおける、画面解放要求受付モジュールの動作を説明するフローチャート。
【図７】実施形態に係るＭＦＰのＶＭ／ＦＷによる、拡張アプリケーションにインストールされたプログラムの異常検出処理を示すフローチャート。
【図８】実施形態に係るＵＩデバイス制御部における表示に関わるモジュールの詳細を説明するソフトウェア構成図。
【図９】図５のＳ５０７で転送されるログイン画面の一例を示す図。
【図１０】実施形態に係るＭＦＰにおいて、ユーザによる操作部の操作を検出する処理を示すフローチャート。
【図１１】実施形態に係るＵＩロック画面の画面例を示す図。
【図１２】実施形態に係るプログラム強制終了の確認画面の一例を示す図。
【発明を実施するための形態】
【００１２】
以下、図面を参照して本発明の実施の形態を詳しく説明する。なお、以下の実施の形態は特許請求の範囲に係る発明を限定するものでなく、また実施の形態で説明されている特徴の組み合わせの全てが発明の解決手段に必須のものとは限らない。尚、本実施形態では、本発明の画像形成装置に係る実施形態を多機能処理装置（ＭＦＰ）を例に説明するが、本発明はこのようなＭＦＰに限定されない。
【００１３】
図１は、本発明の実施形態に係るＭＦＰ１００のハードウェア構成を説明するブロック図である。
【００１４】
ＭＦＰ１００は、ＣＰＵ１０１，ＲＯＭ１０２，ＲＡＭ１０３、表示コントローラ１０４、表示部１０５、操作コントローラ１０６、操作部１０７を備える。またＭＦＰ１００は、ｅＭＭＣホストコントローラ１０８、ｅＭＭＣ１０９、読取コントローラ１１０、読取部１１１、記録コントローラ１１２、記録部１１３を備える。更に、ＭＦＰ１００は、ＵＳＢホストコントローラ１１４、モデム１１５、網制御ユニット（ＮＣＵ）１１６、ネットワークインタフェースカード（ＮＩＣ）１１７を備えている。
【００１５】
ＣＰＵ１０１は、システムバス１１８に接続される各デバイスを総括的に制御する。ＣＰＵ１０１は、電源が供給されると、ＲＯＭ１０２に記憶されたブートプログラムを実行する。通常、ブートプログラムは、ストレージ（例えばｅＭＭＣ１０９）に保存されているメインプログラムをＲＡＭ１０３に展開し、その展開されたメインプログラムの先頭にジャンプする。ＲＡＭ１０３は、メインプログラムのロード場所としてだけでなく、メインプログラムのワークエリアなどとしても機能する。ＣＰＵ１０１は、フローチャートを参照して後述する制御を実行して、本実施形態に係る各種処理を実行する。
【００１６】
表示コントローラ１０４は、表示部１０５への描画を制御する。表示部１０５は、ＷＶＧＡサイズのフルビットマップの表示部である。操作コントローラ１０６は、操作部１０７からの入力を制御する。操作部１０７は、表示部１０５に重畳されたタッチパネル、及び各種ハードキー等を含む。読取部１１１は原稿の読み取りを行う。読取部１１１には、オプションとしてオートドキュメントフィーダ（不図示）が装着されており、複数枚の原稿を自動的に給紙して読み取ることができる。読取部１１１は読取コントローラ１１０に接続されており、ＣＰＵ１０１は、読取コントローラ１１０を介して読取部１１１とやり取りする。
【００１７】
記録部１１３は、例えば電子写真方式で記録紙（シート）に画像を形成（印刷）する。記録部１１３は記録コントローラ１１２に接続されており、ＣＰＵ１０１は記録コントローラ１１２を介して記録部１１３とやり取りする。ＵＳＢホストコントローラ１１４は、ＵＳＢのプロトコル制御を受け持ち、ＵＳＢメモリ（不図示）などＵＳＢデバイスに対するアクセスを仲介する。モデム１１５は、ファクシミリ通信に必要な信号の変調・復調を行う。このモデム１１５はＮＣＵ１１６に接続されている。モデム１１５で変調された信号は、ＮＣＵ１１６を介して公衆回線網（ＰＳＴＮ）へ送出される。ＮＩＣ１１７は、ＬＡＮを介して、メールやファイルなどを、サーバなどと双方向にやり取りする。
【００１８】
実施形態に係るＭＦＰ１００は、ストレージとしてｅＭＭＣ１０９を備える。ＣＰＵ１０１は、ｅＭＭＣホストコントローラ１０８を介してｅＭＭＣ１０９にアクセスしてデータの読み書きを行う。
【００１９】
図２は、実施形態に係るＭＦＰ１００のソフトウェア構成を説明するブロック図である。尚、図２において実線で示した各部は、ＣＰＵ１０１が前述したブートプログラムでＲＡＭ１０３に展開したプログラムを実行することにより実現されるソフトウェアモジュールである。また図２において、図１と共通する部分は同じ参照番号で示している。
【００２０】
ＯＳ（オペレーティングシステム）２０１によって、メインプログラムの後述するそれぞれのモジュールの実行が管理・制御されている。ＯＳ２０１には、デバイスドライバ２０８が組み合わされている。デバイスドライバ２０８は、表示コントローラ１０４、操作コントローラ１０６、読取コントローラ１１０などのハードウェアデバイスとのやり取りを仲介する。
【００２１】
ＵＩ（ユーザインターフェース）２０２は、表示部１０５及び操作部１０７を介して各種情報をユーザに提供するとともに、ユーザからの各種指示を受け付ける。ジョブ制御部２０３は、コピーやプリント、ファックスなどのジョブを受け付け、受け付けたジョブの実行を制御する。記憶部２０６は、例えばファクシミリ送受信する画像やユーザ設定などのデータを、物理的にｅＭＭＣ１０９へ格納して管理するソフトウェアモジュールである。例えば、本実施形態に係るＭＦＰ１００において、ジョブ制御部２０３がファックスジョブを受け付けると、スキャン部２０７はそのジョブを受けて読取部１１１を制御して原稿を読み取る。そして、その原稿の読み取りにより作成した画像データを記憶部２０６へ格納する。記憶部２０６に格納された画像データは、ファクシミリ部２０４によって読み出され、モデム１１５、ＮＣＵ１１６を介して相手先にファクシミリ送信される。また、モデム１１５、ＮＣＵ１１６を介して相手先からファクシミリ受信した画像データは、ファクシミリ部２０４によって取り込まれ、記憶部２０６へ格納される。また送信部２０５は、記憶部２０６に記憶している画像データをファイル転送プロトコルにより送信し、また受信した画像データを記憶部２０６へ格納する。
【００２２】
本実施形態に係るＭＦＰ１００は、ファームウェア上で任意のアプリケーションプログラム（拡張アプリケーション）を動作させることができるＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）／ＦＷ（Ｆｒａｍｅｗｏｒｋ）２０９を備える。なお、ＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）／ＦＷ（Ｆｒａｍｅｗｏｒｋ）２０９は、ファームウェアの一部である。拡張アプリケーション２１０は、スクリプト言語で記述された任意のプログラム等であり、例えば、バイトコードを解釈して実行するインタープリタであるＪａｖａ（登録商標）や、Ｌｕａなどの言語系を用いてもよい。ＶＭ／ＦＷ２０９は、スクリプト言語や所定の高級言語で記述された任意のプログラムを拡張アプリケーション２１０としてインストールする。また或いは、拡張アプリケーション２１０からアンインストールする役割を受け持つ。またＶＭ／ＦＷ２０９は、拡張アプリケーション２１０としてインストールされた任意のプログラムで実現される機能と既存機能との調停等も受け持つ。そして、ＶＭ／ＦＷ２０９は、記述されているスクリプト言語を解釈して実行する。またＶＭ／ＦＷ２０９は、拡張アプリケーション２１０としてインストールされた任意のプログラムに関連のあるイベントの発生時に、拡張アプリケーション２１０に対してメッセージを送信する。ここでイベントとは、例えばＵＩ２０２で検知されたキー入力や、ＶＭ／ＦＷ２０９が管理するタイマの満了などである。ＶＭ／ＦＷ２０９は、拡張アプリケーション２１０に送信したメッセージに対する応答がない場合など、拡張アプリケーション２１０としてインストールされた任意のプログラムの異常を検知した場合、そのプログラムを強制終了する。
【００２３】
こうして実施形態に係るＭＦＰ１００は、機能の着脱性を維持しつつ、ログインアプリケーションやスライドショーといった任意の機能を容易に実現することができる。
【００２４】
ＵＩデバイス制御部２１１は、ＵＩ２０２及び拡張アプリケーション２１０による表示部１０５への各種情報の出力や、操作部１０７によるユーザ操作に基づく制御を行うＵＩ２０２及び拡張アプリケーション２１０への伝達を仲介する。詳細は後述する。
【００２５】
図８は、実施形態に係るＵＩデバイス制御部２１１における表示に関わるモジュールの詳細を説明するソフトウェア構成図である。尚、図８において、図２と共通する部分は同じ参照番号で示している。
【００２６】
ＵＩデバイス制御部２１１は、画面占有要求受付モジュール８０１、描画要求受付モジュール８０２、画面解放要求受付モジュール８０３を備える。また、高優先度のディスプレイ・コンテクスト（ＤＣ）８０４、低優先度のＤＣ８０５、転送モジュール８０６を備える。高優先度ＤＣ８０４及び低優先度ＤＣ８０５は、ＲＡＭ１０３上に割り当てられ、表示部１０５を模する仮想ビデオＲＡＭ（ＶＲＡＭ）や占有状態を保持できるように構成されている。
【００２７】
画面占有要求受付モジュール８０１は、ＶＭ／ＦＷ２０９を介して送られる拡張アプリケーション２１０からの画面占有要求を受け付け、その要求元に応じて高優先度ＤＣ８０４又は低優先度ＤＣ８０５を割り当てる。逆に、画面解放要求受付モジュール８０３は、ＶＭ／ＦＷ２０９を介して送られる拡張アプリケーション２１０からの画面解放要求を受け付け、割り当てられているＤＣを解放する。
【００２８】
描画要求受付モジュール８０２は、ＵＩ２０２による画面描画、又はＶＭ／ＦＷ２０９を介して送られる拡張アプリケーション２１０からの画面描画の要求を受け付ける。そして、画面の占有状態に応じて、ＤＣをＶＲＡＭに描画したり、ＵＩ２０２による描画又はＶＲＡＭの内容を転送モジュール８０６、デバイスドライバ２０８、表示コントローラ１０４を順に介して表示部１０５に転送する。それぞれの詳細は後述する。
【００２９】
図３は、実施形態に係るＭＦＰ１００における、拡張アプリケーション２１０によるプログラムの起動処理を説明するフローチャートである。この図３に示すプログラム起動処理は、図２のＶＭ／ＦＷ２０９を構成する処理の一部である。この処理は、ＣＰＵ１０１が前述したブートプログラムでＲＡＭ１０３に展開したプログラムを実行することにより実現されるため、ここでは処理の主体を、拡張アプリケーション２１０を実行するＣＰＵ１０１として説明する。
【００３０】
実施形態に係るＭＦＰ１００では、拡張アプリケーション２１０は、３つの種別の中のいずれか、或いは、全ての種別のプログラムを含む。一つは、ログインプログラムである。このログインプログラムは、ＭＦＰ１００の電源オン、或いは、ログインプログラムがインストールされて、それが有効にされることにより起動が要求され、ＭＦＰ１００を使用する際にユーザの認証を求める。このログインプログラムは一度起動されると、ユーザが無効にしない限り動作し続ける。もう一つはスライドショープログラムである。このスライドショープログラムは、表示部１０５に表示されるボタンが選択されたとき、又は、同種別のプログラムが未起動状態のまま、予め設定された所定時間が経過する間、無操作の場合に、その起動が要求される。このスライドショープログラムは、例えば、画面の焼き付けを防止するスクリーンセーバーを表示するためのプログラムである。スライドショープログラムが動作中にユーザが操作部１０７を操作すると、このスライドショープログラムはＶＭ／ＦＷ２０９によって終了させられる。残る一つは汎用プログラムである。この汎用プログラムは、表示部１０５に表示される機能ボタンが選択されたとき起動が要求される。また、この汎用プログラムは、所定の処理が完了したら直ちに終了するように実装されている。
【００３１】
まずＳ３０１でＣＰＵ１０１は、起動の要求が、どの種別のプログラムの起動要求かを判定する。ここで汎用プログラムに対する要求であればＳ３０２に、スライドショープログラムに対する要求であればＳ３０５に、ログインプログラムに対する要求であればＳ３０６に、それぞれ進む。
【００３２】
起動要求が汎用プログラムに対するものであればＳ３０２でＣＰＵ１０１は、ログインプログラムが画面占有要求モジュール８０１を呼び出して、画面を占有中かどうか判定する。もしログインプログラムによって画面が占有されていなければＳ３０３に進み、画面が占有されていれば、その要求を無視してプログラム起動の処理を終了する。Ｓ３０３でＣＰＵ１０１は、他の汎用プログラムが実行中かどうか判定する。もし、ここで他の汎用プログラムが実行中でなければＳ３０４に進み、ＣＰＵ１０１は、Ｓ３０１で要求された汎用プログラムを起動して、この処理を終了する。
【００３３】
また起動要求が、スライドショープログラムに対するものであればＳ３０５に進みＣＰＵ１０１は、要求されたスライドショープログラムを起動して、この処理を終了する。
【００３４】
また起動要求がログインプログラムに対するものであればＳ３０６でＣＰＵ１０１は、汎用プログラムが実行中かどうか判定する。ここで汎用プログラムが実行中ならばＳ３０７に進み、そうでなければＳ３０８に進む。Ｓ３０７でＣＰＵ１０１は、実行中の汎用プログラムを強制的に停止してＳ３０８に進む。Ｓ３０８でＣＰＵ１０１は、要求されたログインプログラムを起動して、この処理を終了する。こうして起動されたログインプログラムは画面を直ちに占有する。
【００３５】
以上説明したように実施形態に係るＭＦＰ１００では、汎用プログラムは一つしか動作しないように制御される。また、汎用プログラムの起動時、ログインプログラムが画面を占有しているときは、その汎用プログラムを起動しないように制御される。更に、汎用プログラムを実行中にログインプログラムの起動が指示されると、その実行中の汎用プログラムは強制的に停止されて、ログインプログラムのみが起動される。
【００３６】
図４は、実施形態に係るＭＦＰ１００における、画面占有要求受付モジュール８０１の動作を説明するフローチャートである。この処理は、ＣＰＵ１０１が前述したブートプログラムでＲＡＭ１０３に展開したプログラムを実行することにより実現されるため、ここでは処理の主体を、画面占有要求受付モジュール８０１として機能するＣＰＵ１０１として説明する。
【００３７】
この処理は、拡張アプリケーション２１０の任意のアプリケーションプログラムが、ＶＭ／ＦＷ２０９を介して画面の占有を要求することにより開始される。
【００３８】
まずＳ４０１でＣＰＵ１０１は、画面占有の要求元であるプログラムの種別が何かを判別する。ここで、その要求元のプログラムがスライドショープログラム（スクリーンセーバー）であると判定するとＳ４０２に進み、そうでない、即ち、ログインプログラム又は汎用プログラムであると判定するとＳ４０３に進む。スライドショープログラムの場合、Ｓ４０２でＣＰＵ１０１は、高優先度ＤＣ８０４による画面占有を受け付ける。そしてＶＭ／ＦＷ２０９を介して、画面占有を許可した高優先度ＤＣ８０４を識別する識別子を、画面占有を要求した拡張アプリケーション２１０のスライドショープログラムに返して、この処理を終了する。
【００３９】
一方、ログインプログラム又は汎用プログラムの場合はＳ４０３でＣＰＵ１０１は、低優先度ＤＣ８０５による画面占有を受け付ける。そしてＶＭ／ＦＷ２０９を介して、画面の占有を許可した低優先度ＤＣ８０５を識別する識別子を、その画面占有を要求した拡張アプリケーション２１０のログインプログラム又は汎用プログラムに返して、この処理を終了する。
【００４０】
この処理により、スクリーンセーバーとして機能するスライドショープログラムには、最も優先度の高い高優先度ＤＣ８０４の識別子が付与され、ログインプログラム又は汎用プログラムには、優先度の低い低優先度ＤＣ８０５の識別子が付与される。
【００４１】
図５は、実施形態に係るＭＦＰ１００における、描画要求受付モジュール８０２の動作を説明するフローチャートである。この処理は、ＣＰＵ１０１が前述したブートプログラムでＲＡＭ１０３に展開したプログラムを実行することにより実現されるため、ここでは処理の主体を、描画要求受付モジュール８０２として機能するＣＰＵ１０１として説明する。
【００４２】
この処理は、ＵＩ２０２、又は、拡張アプリケーション２１０の任意のアプリケーションプログラムが、ＶＭ／ＦＷ２０９を介して画面の描画を要求することにより開始される。
【００４３】
まずＳ５０１でＣＰＵ１０１は、この描画要求の発行元がどのモジュールであるか判別する。ここで描画の要求元がＵＩ２０２であればＳ５０２に進み、拡張アプリケーション２１０のプログラムであればＳ５０４に進む。Ｓ５０２でＣＰＵ１０１は、拡張アプリケーション２１０のプログラムが画面を占有しているか否かを判定する。ここで拡張アプリケーション２１０のプログラムにより画面が占有されていると判定すると、ＵＩ２０２による描画要求を無視して、この処理を終了する。一方、拡張アプリケーション２１０のプログラムにより画面が占有されていないと判定するとＳ５０３に進み、ＵＩ２０２による描画内容を表示部１０５に転送するように転送モジュール８０６に要求して、この処理を終了する。
【００４４】
これにより、ＵＩからの描画要求は、拡張アプリケーション２１０のプログラムにより画面が占有されていないときにのみ受け付けられて、それに対する表示がなされる。
【００４５】
Ｓ５０４でＣＰＵ１０１は、拡張アプリケーション２１０のプログラムによって指定されたＤＣのＶＲＡＭに描画内容を記録する。次にＳ５０５に進みＣＰＵ１０１は、指定されたＤＣよりも高い優先度のＤＣによる画面の占有があるか否かを判定する。ここで高い優先度のＤＣによる画面の占有がなければＳ５０６に進むが、高い優先度のＤＣによる画面の占有があれば、即ち、スライドショープログラムによって画面が占有されていれば、何も表示せずに、この処理を終了する。
【００４６】
Ｓ５０６でＣＰＵ１０１は、拡張アプリケーション２１０のプログラムによって指定されたＤＣが低優先度ＤＣかどうか判定する。ここで、低優先度ＤＣであると判定するとＳ５０７に進み、高優先度ＤＣであると判定するとＳ５０８に進む。Ｓ５０７でＣＰＵ１０１は、低優先度ＤＣ８０５のＶＲＡＭの一部を除く内容を表示部１０５に転送するように転送モジュール８０６に要求して、この処理を終了する。一方、高優先度ＤＣの場合はＳ５０８に進みＣＰＵ１０１は、高優先度ＤＣ８０４のＶＲＡＭの全ての内容を表示部１０５に転送するように転送モジュール８０６に要求して、この処理を終了する。
【００４７】
図９は、図５のＳ５０７で転送されるログイン画面の一例を示す図である。図９は、例えば、ＵＩ２０２によって画面が占有されているとき、拡張アプリケーション２１０のログインプログラムからの描画要求が合った場合を示している。
【００４８】
ここでは拡張アプリケーション２１０のログインプログラムによる描画要求に応じて、ログイン画面が表示されている。領域９０１がＳ５０７で表示部１０５に転送される領域であり、領域９０２は、ＵＩ２０２によって描画された内容が表示される領域である。
【００４９】
以上説明したように、描画の要求元がＵＩであれば、拡張アプリケーションのプログラムが画面を占有していないときにのみ、ＵＩによる描画内容を表示部に表示する。
【００５０】
一方、拡張アプリケーションからの描画要求のときは、スライドショープログラム（高い優先度）によって画面が占有されていれば、その描画要求を受付けない。一方、ＵＩ、ログインプログラム又は汎用プログラム等の低優先度ＤＣによる画面占有のときは、拡張アプリケーションのプログラムによって指定されたＤＣが低優先度ＤＣであれば、その低優先度ＤＣのＶＲＡＭの一部を除く内容を表示部に表示する。一方、Ｓ５０４で、指定されたＤＣが高優先度ＤＣであれば、それまでに表示されていた表示内容に代わって、描画要求を行ったプログラムによる高優先度ＤＣ（ここではスクリーンセーバー）を表示する。
【００５１】
図６は、実施形態に係るＭＦＰ１００における、画面解放要求受付モジュール８０３の動作を説明するフローチャートである。この処理は、ＣＰＵ１０１が前述したブートプログラムでＲＡＭ１０３に展開したプログラムを実行することにより実現されるため、ここでは処理の主体を、画面解放要求受付モジュール８０３として機能するＣＰＵ１０１として説明する。
【００５２】
この処理は、拡張アプリケーション２１０の任意のプログラムが、ＶＭ／ＦＷ２０９を介して画面の解放を要求することにより開始される。
【００５３】
まずＳ６０１でＣＰＵ１０１は、拡張アプリケーション２１０のプログラムによって指定されたＤＣの占有を解除する。次にＳ６０２に進みＣＰＵ１０１は、拡張アプリケーション２１０のプログラムによる画面の占有があるか否かを判定する。ここで画面の占有が無いと判定するとＳ６０３に進む。Ｓ６０３でＣＰＵ１０１は、ＵＩ２０２に再描画を要求して、この処理を終了する。
【００５４】
一方、Ｓ６０２で拡張アプリケーション２１０のプログラムによる画面の占有があると判定するとＳ６０４に進む。Ｓ６０４でＣＰＵ１０１は、解放されたＤＣより低い優先度のＤＣによる画面の占有があるか否か判定する。ここで低い優先度のＤＣによる画面の占有がないと判定すると、この処理を終了する。一方、Ｓ６０４でＣＰＵ１０１は、解放されたＤＣより低い優先度のＤＣによる画面の占有があると判定するとＳ６０５に進む。Ｓ６０５でＣＰＵ１０１は、解放されたＤＣより低い低優先度ＤＣ８０５のＶＲＡＭの一部を除く内容を表示部１０５に転送するように転送モジュール８０６に要求して、この処理を終了する。
【００５５】
この処理により、例えば、スライドショープログラムが画面の占有を解放したとき、ログインプログラムが画面を占有していれば、ログインプログラムが描画していた画面の内容が表示部１０５に復元される。
【００５６】
図７は、実施形態に係るＭＦＰ１００のＶＭ／ＦＷ２０９による、拡張アプリケーション２１０にインストールされたプログラムの異常検出処理を示すフローチャートである。この処理は、ＣＰＵ１０１が前述したブートプログラムでＲＡＭ１０３に展開したプログラムを実行することにより実現されるため、ここでは処理の主体をＣＰＵ１０１として説明する。
【００５７】
この異常検出処理は、ＶＭ／ＦＷ２０９として機能するＣＰＵ１０１が拡張アプリケーション２１０の任意のプログラムの異常を監視して異常を検出する処理である。尚、実施形態では、異常検出のトリガとしてＶＭ／ＦＷ２０９が送信したメッセージに対して応答がなかった場合を例に説明するが、異常検出のトリガはこの例に限定されない。
【００５８】
まずＳ７０１でＣＰＵ１０１は、拡張アプリケーション２１０で起動しているプログラムがあるかどうか判別する。ここで、起動しているプログラムがなければ、異常を検出する処理は不要であるため、この処理を終了する。Ｓ７０１でＣＰＵ１０１が、起動しているプログラムがあると判定するとＳ７０２に進む。Ｓ７０２でＣＰＵ１０１は、起動しているプログラムに関連するイベントの発生を監視し、ここで起動しているプログラムに関連するイベントの発生を検知しなかった場合はＳ７０２に留まって、イベントの発生を引き続き監視する。こうしてＳ７０２でＣＰＵ１０１が、起動しているプログラムに関連するイベントの発生を検知するとＳ７０３に進む。
【００５９】
Ｓ７０３でＣＰＵ１０１は、拡張アプリケーション２１０に対して、検知したイベントの発生を通知するメッセージを送信する。このときＣＰＵ１０１は、メッセージの送信時に、そのメッセージに対する応答のタイムアウトを監視するためのタイマをセットする。そしてＳ７０４でＣＰＵ１０１は、そのメッセージに対する応答を所定時間内に受信して、異常を検出しなかった場合はＳ７０１に戻るが、所定時間内に応答がないと異常を検出したと判断してＳ７０５に進む。
【００６０】
Ｓ７０５でＣＰＵ１０１は、異常を検出したプログラムがログインプログラムかどうか判定する。ここでは、各プログラムの起動時に各プログラムを管理する専用スレッドを生成し、各プログラムとの通信をそのスレッドで行うようにする。こうすることにより、どのスレッドで異常を検出したかで、その異常が発生したプログラムを一意に特定できる。尚、本実施形態では、専用スレッドを生成することにより、異常を検出したプログラムがログインプログラムかどうか判定する例で説明したが、別の方法でもよい。例えば、各プログラムの起動時にプログラムを識別する識別ＩＤをプログラムに付与し、ＶＭ／ＦＷ２０９は、異常を検出したプログラムの識別ＩＤからログインプログラムかどうか判定するようにしてもよい。
【００６１】
Ｓ７０５でＣＰＵ１０１は、異常を検出したプログラムがログインプログラムであると判定するとＳ７０６に進む。Ｓ７０６でＣＰＵ１０１は、ジョブ制御部２０３に対してジョブの実行を禁止するよう指示する。この指示を受けたジョブ制御部２０３は、全てのジョブを実行しないよう制御する。次にＳ７０７に進みＣＰＵ１０１は、ＵＩデバイス制御部２１１を経由して、ＵＩ２０２にＵＩロック画面の表示を指示してＳ７０８に進む。
【００６２】
図１１は、実施形態に係るＵＩロック画面の一例を示す図である。
【００６３】
図１１（Ａ）の画面１１０１では、ログインプログラムが正しく動作していないため、電源の立ち上げ直し、即ち、オフしてオンするよう促すメッセージを表示し、通常のコピーなどの操作は実行できないようにする。また、図１１（Ａ）の「管理設定」メニューボタン１１０２を選択すると、不図示のシステム管理者権限の認証画面に遷移し、その画面でパスワードを入力すると図１１（Ｂ）の画面１１０３を表示する。ここで、このシステム管理者権限の認証はログインプログラムではなく、ＭＦＰ１００が持つ機能により実行される。画面１１０３には「ログインアプリケーション管理」メニューボタン１１０４と、「もどる」ボタン１１０５が表示されている。ここでユーザが、「ログインアプリケーション管理」メニューボタン１１０４を選択すると、更に図１１（Ｃ）の画面１１０６が表示される。「もどる」ボタン１１０５を選択すると図１１（Ａ）の画面１１０１に遷移する。
【００６４】
図１１（Ｃ）の画面１１０６の「有効」チェックボックス１１０７を外し、「無効」チェックボックス１１０８にチェックを入れてＯＫボタン１１０９を選択すると、ログインプログラムの機能を無効に変更することができる。
【００６５】
このようにログインプログラムの異常を検知したとき、システム管理者がログインプログラムの機能を無効にできるようにすることにより、システム管理者の許可の下で、ＭＦＰ１００の機能を再び使用できるようになる。具体的には、ログインプログラムが無効に変更されると、ＶＭ／ＦＷ２０９はＵＩ２０２にＵＩロック画面の解除とジョブ制御部２０３へジョブ実行許可を指示する。ここで、図１１（Ｃ）で「もどる」ボタン１１１０を選択すると、図１１（Ｂ）の画面１１０３に遷移する。
【００６６】
本実施形態では、ＭＦＰ１００がシステム管理者権限の認証機能を有しており、システム管理者であればログインプログラムを無効に変更できる構成としている。しかし、ＭＦＰ１００が認証機能を持っていない場合は、図１１（Ａ）の画面１１０１のみを表示し、「管理設定」メニューボタン１１０２は表示しないようにしてもよい。
【００６７】
Ｓ７０８でＣＰＵ１０１は、図１１（Ｃ）の画面１１０６でログインプログラムが、管理画面におけるユーザの入力等に基づき、無効に変更されたか判定する。Ｓ７０８でＣＰＵ１０１が、ログインプログラムが無効に変更されたと判定するとＳ７０９に進む。Ｓ７０９でＣＰＵ１０１は、ジョブ制御部２０３に対して、ジョブの実行を許可するよう指示してＳ７１０に進む。この指示を受けたジョブ制御部２０３は、全てのジョブの禁止を解除する。Ｓ７１０でＣＰＵ１０１は、ＵＩデバイス制御部２１１を経由してＵＩ２０２にＵＩロック画面の解除を指示して、この処理を終了する。
【００６８】
一方、Ｓ７０５で、異常を検出したプログラムがログインプログラム以外であると判定したときはＳ７１１に進む。Ｓ７１１でＣＰＵ１０１は、ＵＩデバイス制御部２１１を経由して、ＵＩ２０２にプログラム強制終了の確認画面の表示を指示してＳ７１２に進む。これにより表示部１０５に、例えば図１２に示すようなプログラムを強制終了するかどうかを確認する画面が表示される。
【００６９】
図１２は、実施形態に係るプログラム強制終了の確認画面の一例を示す図である。
【００７０】
この画面では、プログラムの強制終了を行ってよいかを確認するメッセージ１２０１を表示する。ここではいボタン１２０２が選択されるとＳ７１３に進み、プログラムを強制終了する。いいえボタン１２０３が選択されたら何もせずに、この処理を終了する。
【００７１】
図１０は、実施形態に係るＭＦＰ１００において、ユーザによる操作部１０７の操作を検出する処理を示すフローチャートである。この処理は、ＣＰＵ１０１が前述したブートプログラムでＲＡＭ１０３に展開したプログラムを実行することにより実現されるため、ここでは処理の主体をＣＰＵ１０１として説明する。この処理は、ＵＩデバイス制御部２１１を構成する処理の一部である。
【００７２】
Ｓ１００１でＣＰＵ１０１は、デバイスドライバ２０８及び操作コントローラ１０６を介して、ユーザによる操作部１０７での操作を周期的に監視して、タッチ位置などの操作内容を検出する。次にＳ１００２に進みＣＰＵ１０１は、拡張アプリケーション２１０のプログラムによる画面の占有があるか否かを判定する。ここで画面の占有が無いと判定するとＳ１００３に進む。Ｓ１００３でＣＰＵ１０１は、Ｓ１００１で検出した検出内容をＵＩ２０２に通知して、この処理を終了する。
【００７３】
一方、Ｓ１００２でＣＰＵ１０１は、拡張アプリケーション２１０のプログラムによる画面の占有があると判定するとＳ１００４に進む。Ｓ１００４でＣＰＵ１０１は、高優先度ＤＣにより画面が占有された状態にあるか否かを判定する。ここで高優先度ＤＣによる画面占有状態にあると判定するとＳ１００５に進む。Ｓ１００５でＣＰＵ１０１は、拡張アプリケーション２１０のプログラムに対して検出内容を通知して、この処理を終了する。
【００７４】
一方、Ｓ１００４でＣＰＵ１０１は、高優先度ＤＣが画面を占有している状態ではないと判定するとＳ１００６に進む。Ｓ１００６でＣＰＵ１０１は、操作位置が、例えば図９の領域９０１か、領域９０２かを判定する。ここで領域９０１、即ち、拡張アプリケーション２１０のプログラムによる描画領域内と判定するとＳ１００５に進んで、拡張アプリケーション２１０のプログラムに対して検出内容を通知して、この処理を終了する。一方、領域９０２、即ち、拡張アプリケーション２１０のプログラムによる描画領域内でないと判定するとＳ１００３に進み、ＵＩ２０２に検出内容を通知して、この処理を終了する。
【００７５】
以上説明したように実施形態によれば、ユーザのログインを条件としてジョブを実行するＭＦＰにおいて、ログインプログラムで異常が発生した場合であっても、実行できる機能を制限し、ログインプログラムを含めてデバイスが正常に動作する状態になるように、ユーザを誘導する画面を表示することが可能となる。
【００７６】
＜その他の実施の形態＞
前述の実施形態では、図７のＳ７０６で全てのジョブ実行を禁止するよう制御する例を記載した。しかし、本来、ログインプログラムでログインすることによってジョブの実行を制限する対象は、特定のユーザや部門のみである。ログインプログラムに異常が発生した場合に全てのジョブを制限すると、通常時、ジョブの実行の制限がないユーザや部門もジョブの実行を制限されてしまう。
【００７７】
そこで、全てのジョブ実行を禁止するのではなく、ジョブの実行を制限しないユーザや部門からのジョブは実行できるようにしてもよい。その方法の一例を以下に示す。
【００７８】
ジョブの実行の制限はジョブ制御部２０３で行う。ジョブの実行を制限する特定のユーザや部門からのジョブには、そのユーザや部門を特定するための識別情報がジョブに付与されるのが一般的である。そこで、そのような識別情報がない、又は、ジョブ実行の制限をしないことを示す所定のＩＤを有するジョブの場合は、ログインプログラムに異常が発生しても実行できるようにジョブ制御部２０３で制御する。
【００７９】
こうすることにより、通常、ジョブの実行の制限がないユーザや部門は、ログインプログラムの異常が発生した時であっても、そのジョブの実行を制限されることなく、ＭＦＰ１０を使用することが可能となる。
【００８０】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００８１】
本発明は上記実施形態に制限されるものではなく、本発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、本発明の範囲を公にするために、以下の請求項を添付する。
【符号の説明】
【００８２】
１００…ＭＦＰ，１０１…ＣＰＵ、１０３…ＲＡＭ、１０５…表示部、１０７…操作部、２０２…ＵＩ，２０３…ジョブ制御部、２０８…デバイスドライバ、２０９…ＶＭ／ＦＷ、２１０…拡張アプリケーション、２１１…ＵＩデバイス制御部
【図１】
2018079675.tif 000003
【図２】
2018079675.tif 000004
【図３】
2018079675.tif 000005
【図４】
2018079675.tif 000006
【図５】
2018079675.tif 000007
【図６】
2018079675.tif 000008
【図７】
2018079675.tif 000009
【図８】
2018079675.tif 000010
【図９】
2018079675.tif 000011
【図１０】
2018079675.tif 000012
【図１１】
2018079675.tif 000013
【図１２】
2018079675.tif 000014