JP5891794B2 - 情報処理装置及びプログラム - Google Patents

情報処理装置及びプログラム Download PDF

Info

Publication number
JP5891794B2
JP5891794B2 JP2012001429A JP2012001429A JP5891794B2 JP 5891794 B2 JP5891794 B2 JP 5891794B2 JP 2012001429 A JP2012001429 A JP 2012001429A JP 2012001429 A JP2012001429 A JP 2012001429A JP 5891794 B2 JP5891794 B2 JP 5891794B2
Authority
JP
Japan
Prior art keywords
plug
unit
ins
setting
calling
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2012001429A
Other languages
English (en)
Other versions
JP2012181823A (ja
Inventor
由登 西原
由登 西原
大輔 玉島
大輔 玉島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2012001429A priority Critical patent/JP5891794B2/ja
Priority to EP12153087.7A priority patent/EP2509297B1/en
Priority to US13/362,200 priority patent/US9037760B2/en
Priority to CN201210027626.2A priority patent/CN102693101B/zh
Publication of JP2012181823A publication Critical patent/JP2012181823A/ja
Application granted granted Critical
Publication of JP5891794B2 publication Critical patent/JP5891794B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/00127Connection or combination of a still picture apparatus with another apparatus, e.g. for storage, processing or transmission of still picture signals or of information associated with a still picture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • G06F13/26Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • Accessory Devices And Overall Control Thereof (AREA)

Description

本発明は、情報処理装置及びプログラムに関する。
従来、複合機等のプリンタにPC(Personal Computer)等の情報処理装置を接続し、情報処理装置からの制御の下でプリンタでの印刷を行うシステムが知られている。この情報処理装置は、プリンタドライバ等のプログラムを実行することで、プリンタの制御を行っている。このプリンタドライバは、コア部分とプラグイン部分とに分けられたプラグイン機構を有しており、プラグインを追加・削除することで、インストール後に機能の追加・削除が可能となっている。
ところで、プリンタドライバは、印刷シーケンスにおいて、印刷の処理の開始、文書印刷の開始・終了、ページ印刷の開始・終了などの所定のタイミングで処理をフックする機能を有している。例えば、米国マイクロソフト社が開発したOS(Operating System)であるWindows(登録商標)では、「DocumentEvent」と呼ばれる機能として提供されている。しかしながら、従来のプリンタドライバでは、所定のタイミングで処理をフックする「DocumentEvent」にかかる処理はコア部分でのみ行われている。したがって、「DocumentEvent」にかかる処理に変更・差異がある場合は、プラグイン部分だけでなくコア部分の再開発も必要であり、開発負担が大きかった。
本発明は、上記に鑑みてなされたものであって、開発コストの抑止を可能とする情報処理装置及びプログラムを提供することを目的とする。
上述した課題を解決し、目的を達成するために、本発明の情報処理装置は、通信可能に接続する外部機器を制御するコア手段と、実現させる機能ごとに異なるプラグインを複数有するプラグイン部と、を備え、前記コア手段は、前記外部機器を制御する際に、前記外部機器に所定の機能を実現させるプラグインを呼び出す呼出手段を備え、前記呼出手段は、複数の前記プラグインを順番に呼び出す場合、呼び出し済みのプラグインに基づいて次のプラグインを呼び出すか否かを判定し、前記プラグインは、前記呼出手段により特定のタイミングで呼び出された場合、前記コア手段による前記外部機器の制御にかかる処理に前記所定の機能にかかる処理を割り込ませること、を特徴とする。
また、本発明のプログラムは、通信可能に接続する外部機器を制御するコア手段と、実現させる機能ごとに異なるプラグインを複数有するプラグイン部としてコンピュータを機能させ、前記コア手段は、前記外部機器を制御する際に、前記外部機器に所定の機能を実現させるプラグインを呼び出す呼出手段を含み、前記呼出手段は、複数の前記プラグインを順番に呼び出す場合、呼び出し済みのプラグインに基づいて次のプラグインを呼び出すか否かを判定し、前記プラグインは、前記呼出手段により特定のタイミングで呼び出された場合、前記コア手段による前記外部機器の制御にかかる処理に前記所定の機能にかかる処理を割り込ませること、を特徴とする。
本発明によれば、開発コストの抑止を可能とする、という効果を奏する。
図1は、第1実施形態のプリンタシステムの全体構成を示すブロック図である。 図2は、第1実施形態のPCの機能的構成を模式的に示すブロック図である。 図3は、第1実施形態のコアドライバとプラグインとの関係を例示するブロック図である。 図4は、第1実施形態のプリンタドライバの具体的な構成の一例を示すブロック図である。 図5は、第1実施形態のプリンタドライバによる動作の一例を示すシーケンス図である。 図6は、第1実施形態のプリンタドライバの具体的な構成の一例を示すブロック図である。 図7は、第1実施形態のプリンタドライバによる動作の一例を示すシーケンス図である。 図8は、第2実施形態のPCの機能的構成を模式的に示すブロック図である。 図9は、第2実施形態の優先度ファイルの一例を示す図である。 図10は、第2実施形態のプリンタドライバによる動作の一例を示すフローチャートである。 図11は、呼び出し済みのプラグインの設定を次のプラグインに反映する例の説明図である。 図12は、呼び出し済みのプラグインの設定を次のプラグインに反映する例の説明図である。 図13は、呼び出し済みのプラグインの設定を次のプラグインに反映する例の説明図である。 図14は、第3実施形態のPCの機能的構成を模式的に示すブロック図である。 図15は、第3実施形態の設定ファイルの一例を示す図である。 図16は、第4実施形態のPCの機能的構成を模式的に示すブロック図である。 図17は、第4実施形態のプリンタドライバによる動作の一例を示すフローチャートである。 図18は、第5実施形態のPCの機能的構成を模式的に示すブロック図である。 図19は、第5実施形態のプリンタドライバによる動作の一例を示すフローチャートである。 図20は、PCのハードウェア構成の一例を示すブロック図である。
以下に添付図面を参照して、この発明にかかる情報処理装置及びプログラムの一実施形態を詳細に説明する。以下の説明では、情報処理装置にPC(Personal Computer)を適用し、外部機器にプリンタを適用したプリンタシステムを例示する。
(第1実施形態)
図1は、一実施形態にかかるプリンタシステムの全体構成を示すブロック図である。図1に示すように、プリンタシステムでは、情報処理装置としてのPC100と、外部機器としてのプリンタ150とがネットワーク160を介して接続されているものとする。プリンタシステムでは、プリンタ150はPC100の制御の下で動作し、例えばPC100からの印刷要求に応じてプリンタ150が印刷処理を行う。なお、本実施形態では外部機器としてプリンタ150を例示するが、外部機器の種別はスキャナなどであってもよく、特に限定しない。
図2は、PC100の機能的構成を模式的に示すブロック図である。図2に示すように、PC100は、処理部101と、記憶部102と、通信部103とを備えている。具体的には、PC100は、キーボードやマウスなどの入力装置やディスプレイなどの表示装置等を備える通常のコンピュータを利用したハードウェア構成を有する(図20参照)。処理部101は、CPU(Central Processing Unit)と、ROM(Read Only Memory)及びメインメモリとなるRAM(Random Access Memory)を有するメモリ群と、を含んで構成されている。PC100の起動・実行時には、ROM及び記憶部102からアプリケーション104、OS105、及び各種ドライバ(図2においては、プリンタドライバ106のみ記載)のプログラムが、メインメモリ上にロードされて展開され、これらがCPUにより実行される。
記憶部102は、例えば、HDD(Hard Disk Drive)などであり、様々な情報を記憶する記憶手段である。記憶部102に記憶される情報には、プリンタドライバ106のコア部111の他、プラグイン部130の各プラグイン(図2では、プラグイン131〜133を例示)が有する所定の機能を実現するための処理に関する情報(処理に用いる設定値や、設定値を変更するための表示情報など、処理に必要なあらゆる情報)を定義した設定情報がある。この設定情報の例としては、機能情報102a、レイアウト情報102b、及びプラグイン情報102cなどが挙げられる。なお、プラグイン情報102cは、設定情報に含まなくてもよい。
機能情報102aは、例えば各設定値の設定可能な範囲や、各設定間の禁則など、プリンタドライバ106の機能にかかる情報が記述されている。レイアウト情報102bは、各設定の表示方法や表示位置等が記述されている。具体的には、レイアウト情報102bには、設定画面に表示されるGUI(Graphical User Interface)コンポーネントのレイアウトが記述されている。プラグイン情報102cは、各プラグインの名称、各プラグインが提供する機能を示す情報、プラグイン内部の構成情報、プラグイン内で参照する情報など、プラグイン部130の各プラグインにかかる情報が記載されている。プラグイン情報102cには、例えば、「両面印刷プラグイン」、「ユーザIDプラグイン」などの名称と、「両面への印刷」、「ユーザIDの設定」等の機能を示すコードとが記載されている。
通信部103は、図1に示したネットワーク160を介して接続されたプリンタ150との間で情報の送受信を行う。具体的には、処理部101の制御のもと、LAN(Local Area Network)などのネットワーク160を介して所定の通信プロトコルを用いたデータ通信を行う。
アプリケーション104は、ユーザが印刷指示をすることができるソフトウェアとする。ユーザは、アプリケーション104で編集したデータを印刷したい場合、アプリケーション104が、ユーザによる印刷指示を受け付ける。この場合、アプリケーション104は、単体でプリンタ150に対する印刷データの生成を行わず、上記印刷指示に応じた印刷要求とともに、印刷対象の情報をOS105に渡す。
OS105(Operating System)は、PC100のハードウェアとソフトウェアとを管理するソフトウェアである。OS105は、プログラムの起動、情報の読み込みや保存の制御等を行う。OSのうち代表的なものとしては、MS Windows(登録商標)やUNIX(登録商標)等が知られている。本実施形態では、OS105は、米国マイクロソフト社が開発したWindows(登録商標)とする。なお、プリンタドライバ106を組み込み可能なOSであれば、他のOSを用いてもよいことは言うまでもないことである。
プリンタドライバ106は、通信部103によりネットワーク160を介して通信接続するプリンタ150を制御するソフトウェアである。プリンタドライバ106は、コア部111と、プラグイン部130とを、備えている。
コア部111は、委譲部121、描画部122、画面部123、印刷設定部124、及び呼出部112を備え、プリンタドライバ106としての標準機能を提供する。委譲部121、描画部122、画面部123、及び印刷設定部124は、プリンタドライバ106としての標準機能を提供するモジュール群である。コア部111には、機種・PDL(Page Description Language)等の相違によって処理の違いが発生しない汎用的な処理が実装される。
呼出部112は、プラグイン部130のプラグイン131、132、133等の各プラグインを呼び出す。呼出部112は、コア部111(委譲部121、描画部122、画面部123、又は印刷設定部124)の命令に従って、プラグイン131、132、133等の各プラグインに問い合わせを行い、その命令を実現する機能を有するプラグインを特定した後に、特定したプラグインを呼び出してその命令を通知する。具体的には、プラグイン131、132、133がサポートしているインターフェイスから、命令に対応するインターフェイスを有するプラグインを特定し、そのインターフェイスを介して命令を通知している。なお、呼出部112は、プラグイン情報102cを参照して、その命令を実現する機能を有するプラグインを特定し、特定したプラグインを呼び出してその命令を通知してもよい。
プラグイン部130のプラグイン131、132、133等の各プラグインは、コア部111に対して機能を追加するためのダイナミック・リンク・ライブラリ(DLL)などにより実現される。具体的には、記憶部102の所定領域にプラグイン用のDLLファイルを格納しておくことでプラグイン部130の各プラグインの実現が可能となる。プラグイン131、132、133等の各プラグインは、プリンタ150に所定の機能を実現させるために、コア部111と同様に一つ以上のモジュールで構成されている。図2では、プラグイン131が、割込部141、描画部142、画面部143、及び印刷設定部144の4つのモジュールで構成されている場合を例示しており、プラグイン132、133もいずれか一つ以上のモジュールで構成されているものとする。また、プラグイン部130のプラグインがプリンタ150に実現させる機能としては、プリンタ150に強制的に両面印刷を実行させる機能(図4の両面強制プラグイン134参照)及び、プリンタ150にユーザIDを設定して印刷を実行させる機能(図6のユーザIDプラグイン135参照)などがある。
プラグイン部130は、プラグイン131、132、133の如く、複数のプラグインを有することができる。図2に示す例では、プラグイン部130は、プラグイン131〜133の3つのプラグインを有している。従って、プリンタドライバ106は、コア部111が有する標準機能に加え、プラグイン131〜133が有する機能を提供する。すなわち、プリンタドライバ106では、記憶部102の所定領域にプラグイン用のDLLファイルを追加(例えば、インストール)することでプラグイン部130にプラグインを追加でき、コア部111が行う汎用的な処理機能以外の機能も提供できる。
ここで、コア部111及びプラグイン部130に例示したモジュール群(委譲部121,割込部141、描画部122,142、画面部123,143、及び印刷設定部124,144)の詳細について説明する。
委譲部121,割込部141は、プラグイン情報102cなどのデータを元に、プリンタドライバ106の処理シーケンス(印刷シーケンス)において、所定のタイミング(印刷の処理の開始、文書印刷の開始・終了、及びページ印刷の開始・終了など)で処理をフックする「DocumentEvent」の処理を行う。具体的には、コア部111の委譲部121は、呼出部112を介してプラグイン131の割込部141に上述した処理を委譲する。プラグイン131の割込部141は、コア部111の委譲部121より呼出部112を介して呼び出されると、「DocumentEvent」の処理によりコア部111の処理が委譲される。そして割込部141は、委譲部121より処理が委譲されたタイミングが、プラグイン131が提供する機能を実行するタイミング(特定のタイミングの一例)であれば、当該機能に関わる処理を割り込ませる。これにより、プラグイン131は、自身が提供する機能をプリンタ150に実現させるための処理を実行することができる。
描画部122,142は、機能情報102a及びプラグイン情報102cなどのデータを元に、プリンタドライバ106における描画にかかる処理を行う。具体的には、描画部122,142は、アプリケーション104から印刷を要求されたデータをプリンタ150が解釈可能な印刷命令に変換し、変換した印刷命令を、通信部103を介してプリンタ150に送信する。なお、描画部122は、例えば、プラグイン131が実現する機能に依存する場合は、呼出部112を介してプラグイン131を呼び出し、描画部142に描画にかかる処理を行わせる。描画部142は、呼出部112から呼び出しを受けたタイミングが、プラグイン131が提供する機能を実行するタイミングであれば、描画部122と同様な描画にかかる処理を行う。なお、描画部142が行う処理には、描画部142自身が印刷命令を生成する場合と、描画部122に相当するAPIを呼び出して(コールバックして)、描画部122が印刷命令を生成する場合とがある。コールバックする例として、例えば線を引きたい場合は、描画部122のLineTo関数を実行して文書に線を引くことが可能である。
画面部123,143は、レイアウト情報102b及びプラグイン情報102cなどのデータを元に、ユーザに対する印刷設定のためのGUIとなる印刷設定画面等を表示する。具体的には、コア部111の画面部123は、プリンタドライバ106における汎用的な機能の設定値を操作するためのGUIを表示する。なお、画面部123は、例えば、プラグイン131が実現する機能にかかる設定値を操作するGUIを表示する場合は、呼出部112を介してプラグイン131を呼び出し、画面部143にそのGUIの表示を依頼する。画面部143は、呼出部112からの呼び出しに応じて、GUIの表示を行う。
印刷設定部124,144は、機能情報102a及びプラグイン情報102cなどのデータを元に、プリンタドライバ106がプリンタ150に印刷を行わせる際の印刷設定を行う。具体的には、印刷設定部124,144は、印刷設定の設定値の保存、取り出し、及び禁則処理などを行う。なお、印刷設定部124は、コア部111でサポートする汎用的な機能の設定値の保存、取り出し、及び禁則処理を行う。また、印刷設定部124は、例えば、プラグイン131が実現する機能にかかる印刷設定を行う場合は、呼出部112を介してプラグイン131を呼び出し、印刷設定部144に設定を依頼する。印刷設定部144は、呼出部112からの呼び出しに応じて、プラグイン131が実現する機能にかかる印刷設定の設定値の保存、取り出し、及び禁則処理などを行う。
図3は、コア部111とプラグイン131との関係を例示するブロック図である。図3において、実線の矢印は、コア部111から呼出部112を介して行われるプラグイン131の呼び出しを示している。また、点線の矢印は、コア部111の内部の呼び出し、プラグイン131からコア部111への呼び出しを示している。
図3に示すように、コア部111がプリンタ150を制御する際には、呼出部112を介してプラグイン131のモジュール(割込部141、描画部142、画面部143、又は印刷設定部144)が呼び出される。また、コア部111の印刷設定部124は、印刷設定の取得や設定の窓口であるため、ほぼすべてのモジュールからの呼び出しが可能となっている。なお、呼び出しの詳細については上述したとおりである。
ここで、コア部111の委譲部121は、プラグイン131にかかる処理については、割込部141を呼び出して処理を委譲するため、印刷設定部124への呼び出しを行わない。また、プラグイン131の印刷設定部144では、プラグイン131が提供する機能の禁則処理を行うために、コア部111が提供する汎用的な機能の設定値、あるいは他のプラグインの機能の設定値が必要な場合がある。したがって、プラグイン131の印刷設定部144は、コア部111の印刷設定部124への呼び出しを行う場合がある。
また、プラグイン131内部もコア部111と同様に、割込部141、描画部142、画面部143、及び印刷設定部144の各モジュールが論理的にそれぞれ独立している。このため、プラグイン131内のモジュールであっても、プラグイン131の印刷設定部144へ直接操作を行うことは望ましくない。このため、プラグイン131の全てのモジュールからコア部111の印刷設定部124を呼び出し可能となっている。プラグイン131の各モジュールは、印刷設定の取得及び設定等を行う場合は、プラグイン131自身が提供する機能の設定値であっても、コア部111の印刷設定部124を通して設定値の取得及び設定を行う。
ここで、プリンタドライバ106の具体例を説明する。図4は、プリンタドライバ106の具体的な構成の一例を示すブロック図である。図4に示すように、プリンタドライバ106は、プラグイン部130に両面強制プラグイン134を有している。ここで、両面強制プラグイン134がプリンタ150に実現させる機能は次のとおりである。
・強制的に両面で印刷を行う。
・両面印刷がオフの場合は、印刷開始時にユーザへ警告を表示する。
・警告画面でユーザに、両面で印刷を行うか否か、印刷を終了するかを決定させる。
両面強制プラグイン134は、上述した機能を実現させるため、少なくともプリンタドライバ106の処理をフックするための割込部145を有している。
次に、両面強制プラグイン134を有するプリンタドライバ106の動作を説明する。図5は、プリンタドライバ106による動作の一例を示すシーケンス図である。図5に示すように、先ずOS105により印刷処理の開始を受けて(S10)、コア部111が印刷処理を開始する(S11)。次いで、OS105より「DocumentEvent」(印刷処理の開始)の通知を受けて(S20)、コア部111の委譲部121は、呼出部112を介して「DocumentEvent」(印刷の開始)の処理を両面強制プラグイン134に委譲する(S21、22)。これにより、両面強制プラグイン134の割込部145には、コア部111から印刷の開始の処理が委譲されるが、印刷の開始時は、両面強制プラグイン134が何らかの処理を行うタイミングでないことから、割込部145は、印刷の開始の処理をフックすることなく(印刷の開始の処理に処理を割り込ませることなく)何も処理を行わない(S23)。
次いで、OS105より文書印刷の開始を受けて(S30)、コア部111が文書印刷の開始処理を行う(S31)。次いで、OS105より「DocumentEvent」(文書印刷の開始)の通知を受けて(S40)、コア部111の委譲部121は、呼出部112を介して「DocumentEvent」(文書印刷の開始)の処理を両面強制プラグイン134に委譲する(S41、S42)。これにより、両面強制プラグイン134の割込部145に、コア部111から文書印刷の開始の処理が委譲され、文書印刷の開始時は、両面強制プラグイン134が強制的に両面で印刷を行うための処理を行うタイミングであることから、割込部145は、警告ダイアログの表示処理と、両面で印刷を行うか否か、印刷を終了するかの決定をユーザから受け付ける処理とを、割り込ませる(フックする)(S43)。ここで、両面で印刷を行わない決定が受け付けられた場合は、割込部145によりコア部111の印刷設定部124が呼び出されて両面印刷がOFFに設定される(S44)。
次いで、OS105よりページ印刷の開始を受けて(S50)、コア部111は、描画処理を描画部122で実行し(S51)、描画処理により生成された印刷命令(コマンド)をプリンタ150に送信する(S52)。以下、「DocumentEvent」(ページ印刷の開始)に続くページ印刷処理(S60、S61、S62)が実行されることとなる。
ここで、上述した両面強制プラグイン134を有する場合とは別のプリンタドライバ106の具体例を説明する。図6は、プリンタドライバ106の具体的な構成の一例を示すブロック図である。図6に示すように、プリンタドライバ106は、プラグイン部130にユーザIDプラグイン135を有している。ここで、ユーザIDプラグイン135がプリンタ150に実現させる機能は次のとおりである。
・印刷開始時にユーザIDの入力を促すダイアログを表示する。
・入力されたユーザIDをプリンタ150へコマンド(印刷命令)として送信する。
ユーザIDプラグイン135は、上述した機能を実現させるため、少なくともプリンタドライバ106の処理をフックするための割込部146を有している。また、ユーザIDプラグイン135は、割込部146の他、描画部147及び印刷設定部148を有する構成である。
次に、ユーザIDプラグイン135を有するプリンタドライバ106の動作を説明する。図7は、プリンタドライバ106による動作の一例を示すシーケンス図である。図7に示すように、先ずOS105により印刷処理の開始を受けて(S110)、コア部111が印刷処理を開始する(S111)。次いで、OS105より「DocumentEvent」(印刷処理の開始)の通知を受けて(S120)、コア部111の委譲部121は、呼出部112を介して「DocumentEvent」(印刷の開始)の処理をユーザIDプラグイン135に委譲する(S121、122)。これにより、ユーザIDプラグイン135の割込部146には、コア部111から印刷の開始の処理が委譲され、印刷の開始時は、ユーザIDプラグイン135がユーザIDにかかる処理を行うタイミングであることから、割込部146は、ユーザID入力のダイアログの表示処理と、ユーザIDの入力をユーザから受け付ける処理とを、割り込ませる(フックする)(S124)。
次いで、ユーザIDプラグイン135の割込部146は、コア部111の印刷設定部124を呼び出してユーザIDの設定を依頼する(S125)。次いで、コア部111の印刷設定部124は、呼出部112を介してユーザIDプラグイン135の印刷設定部148を呼び出してユーザIDの設定を依頼する(S126)。これにより、ユーザIDプラグイン135内で直接印刷設定部148が呼び出されることを防止している。
次いで、OS105より文書印刷の開始を受けて(S130)、コア部111が文書印刷の開始処理を行う(S131)。次いで、コア部111の描画部122は、呼出部112を介して文書印刷の開始処理をユーザIDプラグイン135に依頼する(S132、S133)。次いで、ユーザIDプラグイン135の描画部147は、コア部111の印刷設定部124にユーザIDの値取得を依頼する(S134)。次いで、コア部111の印刷設定部124は、呼出部112を介してユーザIDプラグイン135の印刷設定部148にユーザIDの値取得を依頼する(S135)。これにより、ユーザIDプラグイン135の描画部147は、印刷設定部148により取得されたユーザIDでユーザID送信用のコマンドを生成する(S136)。次いで、「DocumentEvent」(文書印刷の開始)に続く印刷処理(S140、S141、S142)が実行される。この文書印刷の開始時は、ユーザIDプラグイン135が何らかの処理を行うタイミングでないことから、割込部146は、文書印刷の開始処理をフックすることなく(文書印刷の開始処理に処理を割り込ませることなく)何も処理を行わない(S144)。
以上のように、PC100は、通信可能に接続するプリンタ150を制御するコア部111を備え、コア部111は、プリンタ150を制御する際に、プリンタ150に所定の機能を実現させるプラグインを呼び出す呼出部112を備えている。そして、プラグインは、呼出部112により所定のタイミングで呼び出された場合、コア部111によるプリンタ150の制御にかかる処理に所定の機能にかかる処理を割り込ませる。したがって、プリンタドライバ106で「DocumentEvent」にかかる処理に変更・差異がある場合は、プラグインを差し替えるだけでよく、コア部111の再開発の手間を省くことができ、開発負担や開発コストを低減できる。
(第2実施形態)
第2実施形態では、複数のプラグインを順番に呼び出して処理をフックする場合に、呼び出し済みのプラグインに基づいて次のプラグインを呼び出すか否かを判定する例について説明する。なお以下では、第1実施形態との相違点の説明を主に行い、第1実施形態と同様の機能を有する構成要素については、第1実施形態と同様の名称・符号を付し、その説明を省略する。
図8は、第2実施形態のPC200の機能的構成を模式的に示すブロック図である。図8に示すように、第2実施形態のPC200は、処理部201のプリンタドライバ206及び記憶部202が第1実施形態のPC100と相違する。
プリンタドライバ206は、コア部211と、プラグイン部230とを、備えている。コア部211は、委譲部221、印刷設定部224、呼出部212、及び整合部213を備える。第2実施形態では、描画部及び画面部の図示を省略しているが、コア部211は、描画部及び画面部を備えていてもよい。プラグイン部230は、プラグイン231〜234を有する。但し、プラグイン部230が有するプラグインは、プラグイン231〜234に限定されるものではない。
記憶部202には、優先度ファイル202d(優先度情報の一例)が更に記憶される。優先度ファイル202dは、プラグイン部230のプラグイン231〜234それぞれの優先度を定義したファイルである。
図9は、優先度ファイル202dの一例を示す図である。図9に示す例では、Plugin1〜Plugin4のpriorityがJSON形式で定義されている。Plugin1〜Plugin4は、それぞれプラグイン231〜234を示し、priorityの値が大きいほど優先度が高いものとする。
委譲部221は、プリンタドライバ206の処理シーケンス(印刷シーケンス)において、所定のタイミング(印刷の処理の開始、文書印刷の開始・終了、及びページ印刷の開始・終了など)になると、プラグインの呼出命令を呼出部212に送る。そして、委譲部221は、呼出部212により呼び出されたプラグインに上述した処理を委譲する。
また委譲部221は、呼出部212からプラグインの呼出命令の完了通知を受け取ると、整合部213に印刷設定の反映を指示する。
呼出部212は、委譲部221からプラグインの呼出命令が送られると、その命令を実現する機能を有するプラグインを特定する。ここでは、呼出部212は、プラグイン231〜234を特定し、更に、プラグイン231〜234の順番で呼び出すことを特定するものとする。呼出部212は、このように、複数のプラグインを順番に呼び出す場合、呼び出し済みのプラグインに基づいて次のプラグインを呼び出すか否かを判定する。
具体的には、呼出部212は、呼び出し済みのプラグインがキャンセルされたか否かを示すキャンセル情報及び優先度ファイル202dの少なくともいずれかに基づいて、次のプラグインを呼び出すか否かを判定する。キャンセル情報は、プラグイン231〜234によりRAMに保存される情報であり、詳細は後述する。
例えば、次のプラグインの優先度が、キャンセルされた呼び出し済みのプラグインの優先度よりも高ければ、呼出部212は、次のプラグインを呼び出すと判定し、呼び出す。一方、次のプラグインの優先度が、キャンセルされた呼び出し済みのプラグインの優先度よりも低ければ、呼出部212は、次のプラグインを呼び出さないと判定し、呼び出さない。
ここで、呼出部212がプラグイン231〜234の順番で呼び出す場合において、プラグイン232でキャンセルされたとする。この場合、呼出部212は、プラグイン233については、優先度は“30”であり、キャンセルされた呼び出し済みのプラグイン232の優先度は“50”であるため(図9参照)、プラグイン233を呼び出さないと判定する。一方、呼出部212は、プラグイン234については、優先度は“70”であり、キャンセルされた呼び出し済みのプラグイン232の優先度は“50”であるため(図9参照)、プラグイン234を呼び出すと判定する。
そして呼出部212は、委譲部221からのプラグインの呼出命令を完了すると、委譲部221に完了通知を送る。
プラグイン231〜234は、委譲部221より呼出部212を介して呼び出され、割込処理を行うタイミングであれば、印刷設定に対してOK又はキャンセルの選択が可能な印刷設定画面(例えば、図11参照)の表示処理と、ユーザによる選択内容(OK又はキャンセル)に応じた印刷設定を整合部213に保持させる処理と、キャンセル情報をRAMに保存する処理とを、割り込ませる(フックする)。キャンセル情報は、ユーザによりOKが選択されれば、キャンセルされなかったことを示し、ユーザによりキャンセルが選択されれば、キャンセルされたことを示す。なお、プラグイン231〜234は、キャンセル情報をRAMに保存するのではなく、戻り値として呼出部212に返却するようにしてもよい。
整合部213は、プラグイン231〜234による設定を保持する。そして整合部213は、委譲部221から印刷設定の反映が指示されると、保持している印刷設定を印刷設定部224に反映する。
図10は、プリンタドライバ206による動作の一例を示すフローチャートである。
まず、呼出部212は、委譲部221からプラグインの呼出命令が送られると、その命令を実現する機能を有するプラグインを特定し、次の呼出対象のプラグインがあるか否かを判定する(ステップS200)。
呼出対象のプラグインがある場合(ステップS200でYes)、呼出部212は、RAMからキャンセル情報を取得するとともに(ステップS202)、記憶部202から優先度ファイル202dを取得する(ステップS204)。
次いで、呼出部212は、キャンセル情報及び優先度ファイル202dを参照し、キャンセルされたプラグインの優先度と呼出対象のプラグインの優先度とに基づいて、呼出対象のプラグインを呼び出すか否かを判定する(ステップS206)。
呼出部212は、呼出対象のプラグインを呼び出さないと判定した場合(ステップS208でNo)、ステップS200へ戻る。一方、呼出部212は、呼出対象のプラグインを呼び出すと判定した場合(ステップS208でYes)、当該呼出対象のプラグインを呼び出す(ステップS210)。
次いで、呼び出されたプラグインは、印刷設定画面を表示し、ユーザによりOKが選択されると(ステップS212でNo)、OKされた印刷設定を整合部213に保持させるとともに(ステップS214)、自身がキャンセルされなかったことを示すキャンセル情報をRAMに保存し(ステップS216)、ステップS200に戻る。
一方、呼び出されたプラグインは、ユーザによりキャンセルが選択されると(ステップS212でYes)、自身がキャンセルされたことを示すキャンセル情報をRAMに保存し(ステップS216)、ステップS200に戻る。この場合、呼び出されたプラグインの印刷設定は整合部213に保持されない。
そして呼出部212は、呼出対象のプラグインがない場合(ステップS200でNo)、委譲部221に完了通知を送り、委譲部221は、整合部213に印刷設定の反映を指示し、整合部213は、保持している印刷設定を印刷設定部224に反映する(ステップS218)。
以上のように、第2実施形態によれば、特定のタイミングに複数のプラグインを順番に呼び出して処理をフックする場合に、いずれかのプラグインがキャンセルされた場合であっても、残りのプラグインのうち条件に合致したプラグインを呼び出すことができる。これにより複数のプラグインによる設定の整合を図ることができる。
なお第2実施形態では、次のプラグインの優先度が、キャンセルされた呼び出し済みのプラグインの優先度よりも高ければ、次のプラグインを呼び出す例について説明したが、これに限定されるものではない。
例えば、呼び出し済みのプラグインの中にキャンセルされたものがある場合、以降のプラグインの呼び出し及び印刷を中止するようにしてもよい。この場合、呼出部212は、キャンセル情報を参照し、キャンセルされたことを示していれば、以降のプラグインの呼び出しを中止し、印刷の中止を委譲部221に通知すればよい。この例の場合、PC200は、記憶部202に優先度ファイル202dを記憶しておかなくてもよい。
また例えば、呼び出し済みのプラグインの中にキャンセルされたものがある場合、以降のプラグインの呼び出しを中止し、この時点までのプラグインによる設定で印刷を行うようにしてもよい。この場合、呼出部212は、キャンセル情報を参照し、キャンセルされたことを示していれば、以降のプラグインの呼び出しを中止し、委譲部221に完了通知を送るようにすればよい。この例の場合も、PC200は、記憶部202に優先度ファイル202dを記憶しておかなくてもよい。
また例えば、呼び出し済みのプラグインの中にキャンセルされたものがある場合、以降のプラグインの呼び出しを中止し、この時点までのプラグインによる設定を無効化(初期化)して印刷を行うようにしてもよい。この場合、呼出部212は、キャンセル情報を参照し、キャンセルされたことを示していれば、以降のプラグインの呼び出しを中止し、委譲部221に完了通知を送り、委譲部221は、整合部213に印刷設定の破棄を指示するようにすればよい。この例の場合も、PC200は、記憶部202に優先度ファイル202dを記憶しておかなくてもよい。
また例えば、呼び出し済みのプラグインの中にキャンセルされたものがあっても、以降の以降のプラグインを順番に呼び出してもよい。この場合、呼出部212は、プラグインを順番に呼び出せばよい。この例の場合も、PC200は、記憶部202に優先度ファイル202dを記憶しておかなくてもよいし、プラグインはキャンセル情報をRAMに保存しなくてもよい。
(第3実施形態)
第3実施形態では、複数のプラグインを順番に呼び出して処理をフックする場合に、呼び出し済みのプラグインの設定を次のプラグインに反映する例について説明する。なお以下では、第2実施形態との相違点の説明を主に行い、第2実施形態と同様の機能を有する構成要素については、第2実施形態と同様の名称・符号を付し、その説明を省略する。
図11〜図13は、呼び出し済みのプラグインの設定を次のプラグインに反映する例の説明図である。ここでは、2つのプラグインが連続して呼び出されるものとする。1つ目のプラグインが呼び出されると、当該プラグインは、図11に示すように、ユーザID及び設定1を設定する印刷設定画面を表示し、ユーザによる設定を受け付ける。続いて、2つ目のプラグインが呼び出されると、当該プラグインは、図12に示すように、ユーザID及び設定2を設定する印刷設定画面を表示するが、通常であれば、1つ目のプラグインにより設定されたユーザIDは反映されない。これに対し、第3実施形態では、2つ目のプラグインが呼び出されると、当該プラグインは、図13に示すように、1つ目のプラグインにより設定されたユーザIDを反映して、ユーザID及び設定2を設定する印刷設定画面を表示する。
図14は、第3実施形態のPC300の機能的構成を模式的に示すブロック図である。図14に示すように、第3実施形態のPC300は、処理部301のプリンタドライバ306及び記憶部302が第2実施形態のPC200と相違する。
プリンタドライバ306のプラグイン部330は、プラグイン331〜334を有している。但し、プラグイン部330が有するプラグインは、プラグイン331〜334に限定されるものではない。
記憶部302には、設定ファイル302e(設定反映情報の一例)が更に記憶される。設定ファイル302eは、プラグイン部330のプラグイン331〜334それぞれに、呼び出し済みのプラグインによる設定を反映するかしないかを定義したファイルである。
図15は、設定ファイル302eの一例を示す図である。図15に示す例では、Plugin1〜Plugin4のdisplay(呼び出し済みのプラグインによる設定を反映して表示するかしないか)がJSON形式で定義されている。Plugin1〜Plugin4は、それぞれプラグイン331〜334を示し、displayの値がdefaultの場合、呼び出し済みのプラグインによる設定を反映せずデフォルトの表示を行うことを示し、displayの値がstoreの場合、呼び出し済みのプラグインによる設定を反映して表示を行うことを示すものとする。
プラグイン331〜334は、委譲部221より呼出部212を介して呼び出され、割込処理を行うタイミングであれば、呼び出し済みのプラグインによる設定を反映して所定の機能にかかる処理を割り込ませる(フックする)。
具体的には、プラグイン331〜334は、設定ファイル302eを参照して、自身のプラグインのdisplayの値がstoreの場合、整合部213に保持されている設定を取得し、取得した設定を反映した印刷設定画面の表示処理と、ユーザによる選択内容に応じた印刷設定を整合部213に保持させる処理と、キャンセル情報をRAMに保存する処理とを、割り込ませる(フックする)。例えば、プラグイン331〜334は、図13に示すように、整合部213に保持されているユーザIDの設定を取得し、取得したユーザIDの設定を反映した印刷設定画面を表示する。
一方、プラグイン331〜334は、設定ファイル302eを参照して、自身のプラグインのdisplayの値がdefaultの場合、整合部213に保持されている設定を反映しない印刷設定画面の表示処理と、ユーザによる選択内容に応じた印刷設定を整合部213に保持させる処理と、キャンセル情報をRAMに保存する処理とを、割り込ませる(フックする)。例えば、プラグイン331〜334は、図12に示すように、整合部213に保持されているユーザIDの設定を反映しない印刷設定画面を表示する。
以上のように、第3実施形態によれば、特定のタイミングに複数のプラグインを順番に呼び出して処理をフックする場合に、呼び出し済みのプラグインの設定を次のプラグインに反映したりしなかったりすることができる。
(第4実施形態)
第4実施形態では、複数のプラグインを順番に呼び出して処理をフックする場合に、複数のプラグインによる同一の機能に対する設定を整合する例について説明する。なお以下では、第2実施形態との相違点の説明を主に行い、第2実施形態と同様の機能を有する構成要素については、第2実施形態と同様の名称・符号を付し、その説明を省略する。
図16は、第4実施形態のPC400の機能的構成を模式的に示すブロック図である。図16に示すように、第4実施形態のPC400は、処理部401のプリンタドライバ406が第2実施形態のPC200と相違する。
プリンタドライバ406は、コア部411と、プラグイン部430とを、備えている。コア部211は、委譲部221、印刷設定部224、呼出部412、及び整合部413を備える。プラグイン部430は、プラグイン431〜434を有する。但し、プラグイン部430が有するプラグインは、プラグイン431〜434に限定されるものではない。
呼出部412は、委譲部221からプラグインの呼出命令が送られると、その命令を実現する機能を有するプラグインを特定する。ここでは、呼出部412は、プラグイン431〜434を特定し、更に、プラグイン431〜434の順番で呼び出すことを特定し、プラグイン431〜434を順番に呼び出すものとする。そして呼出部412は、委譲部221からのプラグインの呼出命令を完了すると、委譲部221に完了通知を送る。
プラグイン431〜434は、委譲部221より呼出部412を介して呼び出され、割込処理を行うタイミングであれば、所定の機能に対する設定を行い、設定を整合部413に保持させる処理を割り込ませる(フックする)。ここで、プラグイン431〜434は、いずれも同一の機能に対する印刷設定を行うものであり、ここでは、プラグイン431〜434は、いずれもユーザIDを設定するものであるとする。つまり、プラグイン431〜434は、委譲部221より呼出部112を介して呼び出され、割込処理を行うタイミングであれば、ユーザIDを設定する印刷設定画面の表示処理と、設定されたユーザIDを整合部213に保持させる処理とを、割り込ませる(フックする)。
整合部413は、プラグイン431〜434それぞれによる設定を整合して保持する。具体的には、整合部413は、優先度ファイル202dに基づいて、プラグイン431〜434それぞれによる設定を整合して保持する。
例えば、整合部413は、呼出部412により呼び出されたプラグインの優先度が、設定を保持しているプラグインの優先度よりも高ければ、呼出部412により呼び出されたプラグインによる設定で、保持している設定を上書きする。一方、整合部413は、呼出部412により呼び出されたプラグインの優先度が、設定を保持しているプラグインの優先度よりも低ければ、保持している設定をそのまま保持する。
ここで、呼出部412がプラグイン431〜434の順番で呼び出す場合、整合部413は、まず、プラグイン431のユーザIDの設定を保持する。整合部413は、次に、プラグイン432については、優先度は“50”であり、ユーザIDの設定が保持されているプラグイン431の優先度は“30”であるため(図9参照)、保持しているユーザIDの設定をプラグイン431のユーザIDの設定で上書きする。整合部413は、次に、プラグイン433については、優先度は“30”であり、ユーザIDの設定が保持されているプラグイン432の優先度は“50”であるため(図9参照)、ユーザIDの設定をそのまま保持する。整合部413は、次に、プラグイン434については、優先度は“70”であり、ユーザIDの設定が保持されているプラグイン432の優先度は“50”であるため(図9参照)、保持しているユーザIDの設定をプラグイン434のユーザIDの設定で上書きする。この結果、優先度の最も高いプラグイン434によるユーザIDの設定に整合される。
そして整合部413は、委譲部221から印刷設定の反映が指示されると、整合した印刷設定を印刷設定部224に反映する。
図17は、プリンタドライバ406による動作の一例を示すフローチャートである。
まず、呼出部412は、委譲部221からプラグインの呼出命令が送られると、その命令を実現する機能を有するプラグインを特定し、次の呼出対象のプラグインがあるか否かを判定する(ステップS300)。
呼出対象のプラグインがある場合(ステップS300でYes)、呼出部412は、呼出対象のプラグインを呼び出す(ステップS302)。
次いで、呼び出されたプラグインは、印刷設定画面を表示し、ユーザにより印刷設定が変更(例えば、ユーザIDが設定)されると(ステップS304)、整合部413に印刷設定の保持を依頼する(ステップS306)。
次いで、整合部413は、記憶部202から優先度ファイル202dを取得し(ステップS308)、呼び出されたプラグインの優先度と印刷設定を保持しているプラグインの優先度とに基づいて、呼び出されたプラグインの印刷設定を保持するか否か(呼び出されたプラグインの印刷設定で上書きするか否か)を判定する(ステップS310)。
呼び出されたプラグインの印刷設定を保持しない場合(ステップS312でNo)、ステップS300へ戻る。一方、呼び出されたプラグインの印刷設定を保持する場合(ステップS312でYes)、整合部413は、呼び出されたプラグインの印刷設定を保持し(ステップS314)、ステップS300へ戻る。
そして呼出部412は、呼出対象のプラグインがない場合(ステップS300でNo)、委譲部221に完了通知を送り、委譲部221は、整合部413に印刷設定の反映を指示し、整合部413は、保持している印刷設定を印刷設定部224に反映する(ステップS316)。
以上のように、第4実施形態によれば、特定のタイミングに複数のプラグインを順番に呼び出して処理をフックする場合に、複数のプラグインが同一の機能に対して設定を行う場合であっても設定を整合することができる。
なお第4実施形態では、呼び出されたプラグインの優先度が、設定が保持されているプラグインの優先度よりも高ければ、呼び出されたプラグインの設定を保持する例について説明したが、これに限定されるものではない。
例えば、後に呼び出されたプラグインの設定を保持するようにしてもよい。この場合、整合部413は、プラグインの設定が行われる毎に、当該プラグインの設定で、保持している設定を上書きすればよい。この例の場合、PC400は、記憶部202に優先度ファイル202dを記憶しておかなくてもよい。
また例えば、最初に呼び出されたプラグインの設定を保持するようにしてもよい。この場合、整合部413は、2つ目以降のプラグインの設定を破棄すればよい。この例の場合も、PC400は、記憶部202に優先度ファイル202dを記憶しておかなくてもよい。
また例えば、異なるプラグインで設定が行われた場合、デフォルトの設定に戻すようにしてもよい。この場合、整合部413は、プラグインの設定を既に保持している状態で他のプラグインの設定の保持依頼があれば(他のプラグインが呼び出されれば)、保持している設定をデフォルトの設定に戻せばよい。
(第5実施形態)
第5実施形態では、複数のプラグインを順番に呼び出して処理をフックする場合に、複数のプラグインによる排他関係にある機能に対する設定を整合する例について説明する。なお以下では、第2実施形態との相違点の説明を主に行い、第2実施形態と同様の機能を有する構成要素については、第2実施形態と同様の名称・符号を付し、その説明を省略する。
図18は、第5実施形態のPC500の機能的構成を模式的に示すブロック図である。図18に示すように、第5実施形態のPC500は、処理部501のプリンタドライバ506が第2実施形態のPC200と相違する。
プリンタドライバ506は、コア部511と、プラグイン部530とを、備えている。コア部511は、委譲部221、印刷設定部224、呼出部412、整合部513、及び禁則処理部514を備える。プラグイン部530は、プラグイン531〜534を有する。但し、プラグイン部530が有するプラグインは、プラグイン531〜534に限定されるものではない。
呼出部412は、委譲部221からプラグインの呼出命令が送られると、その命令を実現する機能を有するプラグインを特定する。ここでは、呼出部412は、プラグイン531〜534を特定し、更に、プラグイン531〜534の順番で呼び出すことを特定し、プラグイン531〜534を順番に呼び出すものとする。そして呼出部412は、委譲部221からのプラグインの呼出命令を完了すると、委譲部221に完了通知を送る。
プラグイン531〜534は、委譲部221より呼出部412を介して呼び出され、割込処理を行うタイミングであれば、所定の機能に対する設定を行い、設定を整合部513に保持させる処理を割り込ませる(フックする)。ここで、プラグイン531〜534は、排他関係にある機能に対する印刷設定を行うものであり、ここでは、プラグイン531〜534は、排他関係にあるステープル機能及びパンチ機能に対する印刷設定を行うものであるとする。つまり、プラグイン531〜534のうち少なくとも1つは、委譲部221より呼出部412を介して呼び出され、割込処理を行うタイミングであれば、ステープル機能を設定する印刷設定画面の表示処理と、ステープル機能の設定を整合部513に保持させる処理とを、割り込ませる(フックする)。同様に、プラグイン531〜534のうち少なくとも1つ(但し、ステープル機能を設定するプラグインとは異なるプラグイン)は、委譲部221より呼出部412を介して呼び出され、割込処理を行うタイミングであれば、パンチ機能を設定する印刷設定画面の表示処理と、パンチ機能の設定を整合部513に保持させる処理とを、割り込ませる(フックする)。
整合部513は、プラグイン531〜534それぞれによる設定を整合して保持する。具体的には、整合部513は、保持している設定と保持を依頼された設定とを禁則処理部514に送り、禁則処理部514による禁則処理が施された設定を保持する。そして整合部513は、委譲部221から印刷設定の反映が指示されると、保持している印刷設定を印刷設定部224に反映する。
禁則処理部514は、所定の禁則ルールに従って複数のプラグインそれぞれによる設定に対して禁則処理を施す。具体的には、禁則処理部514は、整合部513から、保持している設定と保持を依頼された設定とが送られると、禁則処理を施し、禁則処理を施こした設定を整合部513に返す。ここで、禁則処理部514は、プラグイン531〜534が提供する機能に予め優先度を付けており、この優先度に基づいて禁則処理を行う。
例えば、禁則処理部514は、ステープル機能の優先度がパンチ機能の優先度よりも高く、整合部513から、保持している設定としてステープル機能:ON(パンチ機能:OFF)、保持を依頼された設定としてパンチ機能:ON(ステープル機能:OFF)が送られたとする。この場合、禁則処理部514は、保持している設定と保持を依頼された設定とに禁則処理を施し、禁則処理が施された設定としてステープル機能:ON(パンチ機能:OFF)を整合部513に返す。
図19は、プリンタドライバ506による動作の一例を示すフローチャートである。
まず、呼出部412は、委譲部221からプラグインの呼出命令が送られると、その命令を実現する機能を有するプラグインを特定し、次の呼出対象のプラグインがあるか否かを判定する(ステップS400)。
呼出対象のプラグインがある場合(ステップS400でYes)、呼出部412は、呼出対象のプラグインを呼び出す(ステップS402)。
次いで、呼び出されたプラグインは、印刷設定画面を表示し、ユーザにより印刷設定が変更(例えば、ステープル機能やパンチ機能が設定)されると(ステップS404)、整合部513に印刷設定の保持を依頼する(ステップS406)。
次いで、整合部513は、保持している印刷設定と保持を依頼された印刷設定とを禁則処理部514に送り、禁則処理を依頼する(ステップS408)。
次いで、禁則処理部514は、保持している印刷設定と保持を依頼された印刷設定とに禁則処理を施し、整合部513は、禁則処理が施こされた印刷設定を保持し(ステップS410)、ステップS400へ戻る。
そして呼出部412は、呼出対象のプラグインがない場合(ステップS400でNo)、委譲部221に完了通知を送り、委譲部221は、整合部513に印刷設定の反映を指示し、整合部513は、保持している印刷設定を印刷設定部224に反映する(ステップS412)。
以上のように、第5実施形態によれば、特定のタイミングに複数のプラグインを順番に呼び出して処理をフックする場合に、複数のプラグインが排他関係にある機能に対して設定を行う場合であっても設定を整合することができる。
なお第5実施形態では、禁則処理において優先度が高い機能を優先する例について説明したが、これに限定されるものではない。
例えば、後に呼び出されたプラグインの機能を優先するようにしてもよい。この場合、禁則処理部514は、整合部513から送られた保持している印刷設定と保持を依頼された印刷設定とに対して、保持を依頼された印刷設定を優先する禁則処理を施せばよい。
また例えば、最初に呼び出されたプラグインの機能を優先するようにしてもよい。この場合、禁則処理部514は、整合部513から送られた保持している印刷設定と保持を依頼された印刷設定とに対して、保持している印刷設定を優先する禁則処理を施せばよい。
また例えば、排他関係にある機能の設定が行われた場合、デフォルトの設定に戻すようにしてもよい。この場合、整合部413は、整合部513から送られた保持している印刷設定と保持を依頼された印刷設定とが排他関係にあれば、保持している設定をデフォルトの設定に戻せばよい。
(変形例)
なお、本発明は、上記実施形態に限定されるものではなく、種々の変形が可能であり、上記各実施形態を組み合わせたり、上記各実施形態で説明した内容の一部を他の実施形態に組み合わせたりしてもよい。例えば、第3実施形態を第4実施形態や第5実施形態と組み合わせてもよい。また例えば、第2実施形態のプラグインの呼び出しをキャンセルする内容を第4実施形態や第5実施形態に組み合わせたりしてもよい。
(ハードウェア構成)
図20は、上記各実施形態のPCのハードウェア構成を示した図である。図20に示すようにPCは、CPU3101と、ROM3102と、RAM3103と、HDD3104(Hard Disk Drive)と、ディスプレイ装置などの表示装置3105と、キーボードやマウスなどの入力装置3106と、通信I/F3107と、これらを接続するバス3108と、を備えており、通常のコンピュータを利用したハードウェア構成となっている。
上記各実施形態にかかるPCで実行されるプリンタドライバ(プログラム)は、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記憶媒体に記録されて提供される。
また、上記各実施形態にかかるPCで実行されるプリンタドライバを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、上記各実施形態にかかるPCで実行されるプリンタドライバをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
また、上記各実施形態にかかるPCで実行されるプリンタドライバを、ROM等に予め組み込んで提供するように構成してもよい。
上記各実施形態にかかるPCで実行されるプリンタドライバは、上述した各部(コア部111及び各種プラグイン)を含むモジュール構成となっており、実際のハードウェアとしてはCPU3101が上記記憶媒体からプリンタドライバを読み出して実行することにより上記各部がRAM3103上にロードされ、コア部111及び各種プラグインがRAM3103上に生成されるようになっている。
100、200、300、400、500 PC
101、201、301、401、501 処理部
102、202、302 記憶部
102a 機能情報
102b レイアウト情報
102c プラグイン情報
103 通信部
104 アプリケーション
105 OS
106、206、306、406、506 プリンタドライバ
111、211、411、511 コア部
112、212、412 呼出部
121、221 委譲部
122 描画部
123 画面部
124、224 印刷設定部
130、230、330、430、530 プラグイン部
131、132、133、231、232、233、234、331、332、333、334、431、432、433、434、531、532、533、534 プラグイン
134 両面強制プラグイン
135 ユーザIDプラグイン
141、145、146 割込部
142、147 描画部
143 画面部
144、148 印刷設定部
150 プリンタ
160 ネットワーク
202d 優先度ファイル
302e 設定ファイル
213、413、513 整合部
514 禁則処理部
3101 CPU
3102 ROM
3103 RAM
3104 HDD
3105 表示装置
3106 入力装置
3107 通信I/F
3108 バス
特許第3745344号公報 特開2009−171579号公報

Claims (9)

  1. 通信可能に接続する外部機器を制御するコア手段と、
    実現させる機能ごとに異なるプラグインを複数有するプラグイン部と、を備え、
    前記コア手段は、前記外部機器を制御する際に、前記外部機器に所定の機能を実現させるプラグインを呼び出す呼出手段を備え、
    前記呼出手段は、複数の前記プラグインを順番に呼び出す場合、呼び出し済みのプラグインに基づいて次のプラグインを呼び出すか否かを判定し、
    前記プラグインは、前記呼出手段により特定のタイミングで呼び出された場合、前記コア手段による前記外部機器の制御にかかる処理に前記所定の機能にかかる処理を割り込ませること、
    を特徴とする情報処理装置。
  2. 前記プラグインは、前記外部機器が出力する画像を生成する機能、前記外部機器の設定にかかる操作入力をユーザから受け付ける機能、入力された設定を保存する機能の中の少なくとも一つの機能を有すること、
    を特徴とする請求項1に記載の情報処理装置。
  3. 前記呼出手段は、複数の前記プラグインへ問い合わせを行い、前記所定の機能を実現するプラグインを特定し、当該プラグインを呼び出すこと、
    を特徴とする請求項1又は2に記載の情報処理装置。
  4. 複数の前記プラグインそれぞれが実現する機能にかかるプラグイン情報を記憶するプラグイン情報記憶手段を更に備え、
    前記呼出手段は、前記プラグイン情報をもとに、前記所定の機能を実現するプラグインを呼び出すこと、
    を特徴とする請求項1又は2に記載の情報処理装置。
  5. 前記呼出手段は、呼び出し済みのプラグインがキャンセルされたか否かに基づいて次のプラグインを呼び出すか否かを判定すること、
    を特徴とする請求項1〜4のいずれか1つに記載の情報処理装置。
  6. 複数の前記プラグインそれぞれの優先度を定義した優先度情報を記憶する優先度情報記憶手段を更に備え、
    前記呼出手段は、更に、前記優先度情報に基づいて次のプラグインを呼び出すか否かを判定すること、
    を特徴とする請求項に記載の情報処理装置。
  7. 複数の前記プラグインは、前記コア手段による前記外部機器の制御にかかる処理に、呼び出し済みのプラグインによる設定を反映して前記所定の機能にかかる処理を割り込ませること、
    を特徴とする請求項1〜6のいずれか1つに記載の情報処理装置。
  8. 複数の前記プラグインそれぞれに、呼び出し済みのプラグインによる設定を反映するかしないかを定義した設定反映情報を記憶する設定反映情報記憶手段を更に備え、
    複数の前記プラグインは、前記設定反映情報を参照し、自身のプラグインに反映するが定義されている場合、前記コア手段による前記外部機器の制御にかかる処理に、呼び出し済みのプラグインによる設定を反映して前記所定の機能にかかる処理を割り込ませ、自身のプラグインに反映しないが定義されている場合、前記コア手段による前記外部機器の制御にかかる処理に、呼び出し済みのプラグインによる設定を反映せずに前記所定の機能にかかる処理を割り込ませること、
    を特徴とする請求項に記載の情報処理装置。
  9. 通信可能に接続する外部機器を制御するコア手段と、
    実現させる機能ごとに異なるプラグインを複数有するプラグイン部としてコンピュータを機能させ、
    前記コア手段は、前記外部機器を制御する際に、前記外部機器に所定の機能を実現させるプラグインを呼び出す呼出手段を含み、
    前記呼出手段は、複数の前記プラグインを順番に呼び出す場合、呼び出し済みのプラグインに基づいて次のプラグインを呼び出すか否かを判定し、
    前記プラグインは、前記呼出手段により特定のタイミングで呼び出された場合、前記コア手段による前記外部機器の制御にかかる処理に前記所定の機能にかかる処理を割り込ませること、
    を特徴とするプログラム。
JP2012001429A 2011-02-09 2012-01-06 情報処理装置及びプログラム Active JP5891794B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2012001429A JP5891794B2 (ja) 2011-02-09 2012-01-06 情報処理装置及びプログラム
EP12153087.7A EP2509297B1 (en) 2011-02-09 2012-01-30 Information processing apparatus and program
US13/362,200 US9037760B2 (en) 2011-02-09 2012-01-31 Information processing apparatus and computer program product
CN201210027626.2A CN102693101B (zh) 2011-02-09 2012-02-08 信息处理装置

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2011026559 2011-02-09
JP2011026559 2011-02-09
JP2012001429A JP5891794B2 (ja) 2011-02-09 2012-01-06 情報処理装置及びプログラム

Publications (2)

Publication Number Publication Date
JP2012181823A JP2012181823A (ja) 2012-09-20
JP5891794B2 true JP5891794B2 (ja) 2016-03-23

Family

ID=45562770

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012001429A Active JP5891794B2 (ja) 2011-02-09 2012-01-06 情報処理装置及びプログラム

Country Status (4)

Country Link
US (1) US9037760B2 (ja)
EP (1) EP2509297B1 (ja)
JP (1) JP5891794B2 (ja)
CN (1) CN102693101B (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5919925B2 (ja) 2012-03-19 2016-05-18 株式会社リコー プログラム、情報処理装置、記憶媒体
CN105637848B (zh) * 2013-10-31 2020-03-31 索尼公司 由移动装置执行的方法及移动装置
JP6028776B2 (ja) * 2014-09-19 2016-11-16 コニカミノルタ株式会社 Uiプログラム、印刷制御装置及びその制御方法
CN105094810B (zh) * 2015-06-26 2017-12-12 深圳市腾讯计算机系统有限公司 基于通用网关接口插件的数据处理方法和装置
JP7006301B2 (ja) * 2018-01-23 2022-01-24 ブラザー工業株式会社 制御プログラム及びプログラム群
JP7052484B2 (ja) * 2018-03-29 2022-04-12 ブラザー工業株式会社 制御プログラム及びプログラム群
CN110377249B (zh) * 2019-07-30 2021-02-12 广东印萌科技有限公司 单个文件的快速打印方法、装置以及终端设备
JP7322116B2 (ja) * 2019-10-08 2023-08-07 キヤノン株式会社 印刷設定uiを表示するためのアプリケーション

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08286572A (ja) * 1995-04-14 1996-11-01 Ricoh Co Ltd 画像形成装置
JP2001229157A (ja) * 2000-02-17 2001-08-24 Ricoh Co Ltd 文書ファイル処理装置及び記録媒体
US20030043396A1 (en) * 2001-08-29 2003-03-06 Klosterman Elliot L. Printer driver access interface
US7284246B2 (en) 2002-04-23 2007-10-16 Canon Kabushiki Kaisha Extensible device driver
JP4276909B2 (ja) * 2002-09-13 2009-06-10 株式会社リコー 画像形成装置およびアプリ起動制御方法
JP2005208894A (ja) * 2004-01-22 2005-08-04 Canon Inc 周辺装置制御方法、制御プログラム及びその装置
JP4590341B2 (ja) * 2004-11-15 2010-12-01 キヤノン株式会社 データ処理装置および設定処理方法および情報処理装置および制御プログラム
DE102004060301A1 (de) * 2004-12-15 2006-06-22 Robert Bosch Gmbh Verfahren zum Initialisieren eines elektronischen Systems umfassend mehrere Plug-Ins
JP2007219576A (ja) 2006-02-14 2007-08-30 Ricoh Co Ltd プリンタドライバ選択プログラム及び記録媒体
JP2008153949A (ja) * 2006-12-18 2008-07-03 Ricoh Co Ltd 画像処理装置及び画像処理方法
US20080228983A1 (en) 2007-03-14 2008-09-18 Nishihara Yoshito Electronic device to which an option device can be mounted and a recording medium
JP2009048485A (ja) * 2007-08-21 2009-03-05 Ricoh Co Ltd 情報処理装置、情報処理方法、情報処理プログラム、及び情報処理プログラムを記録する記録媒体
US8723963B2 (en) * 2008-01-11 2014-05-13 Ricoh Company, Ltd. Dynamic print driver installation on cameras
JP4945479B2 (ja) * 2008-02-25 2012-06-06 株式会社リコー 印刷処理装置、印刷処理方法、印刷処理プログラム及び記録媒体
JP5332627B2 (ja) 2009-01-13 2013-11-06 株式会社リコー プリンタドライバプログラム、情報処理装置及び記録媒体
JP5391748B2 (ja) * 2009-03-10 2014-01-15 株式会社リコー 画像処理装置
JP5343643B2 (ja) * 2009-03-17 2013-11-13 株式会社リコー プリンタドライバ、記憶媒体、及び情報処理装置
JP5478937B2 (ja) 2009-05-19 2014-04-23 キヤノン株式会社 情報処理装置、制御方法、プログラム
JP5391844B2 (ja) 2009-06-05 2014-01-15 株式会社リコー 印刷制御プログラム、記憶媒体および情報処理装置
JP2011060154A (ja) 2009-09-11 2011-03-24 Ricoh Co Ltd プリンタドライバ、情報処理装置、及びコンピュータ読み取り可能な記憶媒体
JP5581793B2 (ja) 2010-04-30 2014-09-03 株式会社リコー 情報処理装置、プログラムおよび記憶媒体

Also Published As

Publication number Publication date
CN102693101A (zh) 2012-09-26
US9037760B2 (en) 2015-05-19
JP2012181823A (ja) 2012-09-20
EP2509297B1 (en) 2018-10-24
EP2509297A1 (en) 2012-10-10
CN102693101B (zh) 2015-09-30
US20120203940A1 (en) 2012-08-09

Similar Documents

Publication Publication Date Title
JP5891794B2 (ja) 情報処理装置及びプログラム
CN110321086B (zh) 非暂时性计算机可读记录介质以及控制信息处理装置的方法
US10956095B2 (en) Server system that improves availability of a plurality of printers, print controller, information processing apparatus, and print service system
JP5458909B2 (ja) 情報処理装置、印刷制御プログラム、コンピュータ読み取り可能な記憶媒体、画像処理装置、及びプリントシステム
US8730490B2 (en) Printer driver, information processing apparatus, and computer program product
US20160231970A1 (en) Image forming apparatus, method of controlling printing and printing system
US20160004482A1 (en) Printing system, image processing apparatus, information processing apparatus, information processing method, and program
JP2012003664A (ja) 通信制御装置、通信制御方法およびプログラム
KR101688531B1 (ko) 인쇄제어장치, 인쇄제어장치의 셧다운 방법, 및 인쇄 시스템
JP6085982B2 (ja) プログラム、情報処理装置およびシステム
JP2017068339A (ja) 印刷設定支援装置及びプログラム
US9917968B2 (en) Image processing device and terminal device using application programming interface corresponding to specific function
JP2009053789A (ja) 情報処理装置とプログラムとコンピュータ読み取り可能な記録媒体
US10277765B2 (en) Information processing device, control method, and program
JP2017184156A (ja) 情報処理装置、情報処理システム、情報処理装置の制御方法、及び、プログラム
US11079986B2 (en) Printing apparatus having print setting control, method of controlling the same, and computer-readable storage medium
JP7351126B2 (ja) 情報処理システム、サーバ装置及び情報処理方法
US11064088B2 (en) Non-transitory computer-readable recording medium, information processing apparatus and printing method
JP2007087130A (ja) サーバ装置、サーバ装置の印刷処理方法、記憶媒体およびプログラム
US10602011B2 (en) Image forming apparatus, information processing method, and program
US10310780B2 (en) System and control method for installing printer driver
JP2006121577A (ja) 画像形成装置及び画像形成システム
WO2018142695A1 (ja) サーバー装置、情報処理システム及び画像形成装置
US20230393792A1 (en) Image forming apparatus that produces print for delivery, method of controlling image forming apparatus, and storage medium
JP7247780B2 (ja) 画像形成装置、情報処理装置およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141217

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151030

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151110

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160112

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160126

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160208

R151 Written notification of patent or utility model registration

Ref document number: 5891794

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151