(57)【要約】【課題】  複数のアプリケーションのそれぞれにおいて操作対象とされているデータの印刷情報を統合的に提供することのできる印刷情報処理装置の提供を目的とする。【解決手段】  アプリケーションにおいて操作対象とされているデータの印刷情報を生成する印刷情報生成手段と、前記印刷情報生成手段が第一のアプリケーションからの指示に応じて生成した前記印刷情報を取得し、該印刷情報の表示画面を表示させる印刷情報表示手段と、前記印刷情報生成手段が前記第一のアプリケーションとは別の第二のアプリケーションからの指示に応じて生成した前記印刷情報を取得し、前記印刷情報表示手段に引き渡す印刷情報送信手段とを有し、前記印刷情報表示手段は、前記印刷情報送信手段より受け取った前記第二のアプリケーションに係る前記印刷情報を、前記第一のアプリケーションに係る前記印刷情報と同一の表示画面において表示させることにより上記課題を解決する。【選択図】  図８
2006215805.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションからの指示に基づき、前記アプリケーションにおいて操作対象とされているデータの印刷情報を生成する印刷情報生成手段と、
前記印刷情報生成手段が第一のアプリケーションからの指示に応じて生成した前記印刷情報を取得し、該印刷情報の表示画面を表示させる印刷情報表示手段と、
前記印刷情報生成手段が前記第一のアプリケーションとは別の第二のアプリケーションからの指示に応じて生成した前記印刷情報を取得し、前記印刷情報表示手段に引き渡す印刷情報送信手段とを有し、
前記印刷情報表示手段は、前記印刷情報送信手段より受け取った前記第二のアプリケーションに係る前記印刷情報を、前記第一のアプリケーションに係る前記印刷情報と同一の表示画面において表示させることを特徴とする印刷情報処理装置。
【請求項２】
前記印刷情報表示手段は、前記印刷情報の受け取りが可能となったときに所定の記憶領域における第一の変数の値を更新し、
前記印刷情報送信手段は、前記印刷情報を引き渡す前に前記所定の記憶領域における前記第一の変数の値を参照し、該第一の変数の値に応じて前記印刷情報を前記印刷情報表示手段に引き渡すことを特徴とする請求項１記載の印刷情報処理装置。
【請求項３】
複数の前記印刷情報送信手段を有し、
それぞれの前記印刷情報送信手段は、前記印刷情報生成手段が、それぞれ別のアプリケーションからの指示に応じて生成した前記印刷情報を前記印刷情報表示手段に引き渡すことを特徴とする請求項２記載の印刷情報処理装置。
【請求項４】
それぞれの前記印刷情報送信手段には、それぞれが起動された順番に応じた識別子が割り当てられ、
前記印刷情報表示手段は、前記印刷情報の受け取りが可能となったとき、及び前記印刷情報を受け取るたびに前記識別子の順番に対応させて前記第一の変数の値を更新し、
前記印刷情報送信手段は、前記第一の変数の値が当該印刷情報送信手段に割り当てられている前記識別子の値に更新されたときに、前記印刷情報を前記印刷情報表示手段に引き渡すことを特徴とする請求項３記載の印刷情報処理装置。
【請求項５】
前記印刷情報送信手段は、前記印刷情報送信手段が起動されるたびに値が更新される、前記所定の記憶領域における第二の変数の値を参照して、当該印刷情報送信手段に前記識別子を割り当てることを特徴とする請求項４記載の印刷情報処理装置。
【請求項６】
前記第二の変数の値は、前記印刷情報送信手段が更新することを特徴とする請求項５記載の印刷情報処理装置。
【請求項７】
前記印刷情報表示手段は、前記印刷情報の表示の終了が指示されると、前記第一の変数の値を前記印刷情報の表示の終了を示す値に更新した後、前記印刷情報の表示を終了させ、
前記印刷情報送信手段は、前記第一の変数の値が前記印刷情報の表示の終了を示す値であったときは、前記印刷情報の表示の終了後に、前記印刷情報生成手段より取得した前記印刷情報の表示画面を表示させることを特徴とする請求項２乃至６いずれか一項記載の印刷情報処理装置。
【請求項８】
前記印刷情報送信手段は、前記第一の変数の値が前記印刷情報の表示の終了を示す値であった後に、他の前記印刷情報送信手段が前記表示画面を表示させたときは、当該他の印刷情報送信手段に前記印刷情報を送信することを特徴とする請求項７記載の印刷情報処理装置。
【請求項９】
コンピュータに、
アプリケーションにおいて操作対象とされているデータの印刷情報を取得する印刷情報取得手順と、
前記印刷情報を表示させる印刷情報表示画面が表示されているかを判定する判定手順と、
前記判定手順において前記印刷情報表示画面が表示されていないと判定された場合に、前記印刷情報取得手順において取得された前記印刷情報を表示対象として前記印刷情報表示画面を表示させる第一の画面表示手順と、
前記判定手順において前記印刷表示画面が表示されていると判定された場合に、前記印刷情報取得手順において取得された前記印刷情報を、前記第一の画面表示手順を実行した第一のプロセスに引き渡す印刷情報送信手順と、
前記第一プロセスが、前記印刷情報送信手順において受け取った前記印刷情報を、前記表示画面に追加表示させる追加表示手順とを実行させるための印刷情報処理プログラム。
【請求項１０】
前記第一のプロセスが、前記印刷情報の受け取りが可能となったときに所定の記憶領域における第一の変数の値を更新する第一変数更新手順を有し、
前記印刷情報送信手順は、前記印刷情報を引き渡す前に前記所定の記憶領域における前記第一の変数の値を参照し、該第一の変数の値に応じて前記印刷情報を前記第一のプロセスに引き渡すことを特徴とする請求項９記載の印刷情報処理プログラム。
【請求項１１】
前記印刷情報送信手順を実行する第二のプロセスには、それぞれが起動された順番に応じて識別子が割り当てられ、
前記第一のプロセスは、前記印刷情報の受け取りが可能となったとき、及び前記印刷情報を受け取るたびに前記識別子の順番に対応させて前記第一の変数の値を更新し、
前記第二のプロセスは、前記第一の変数の値が当該第二のプロセスに割り当てられている前記識別子の値に更新されたときに、前記印刷情報を前記第一のプロセスに引き渡すことを特徴とする請求項１０記載の印刷情報処理プログラム。
【請求項１２】
前記第二のプロセスは、前記第二のプロセスが起動されるたびに値が更新される、前記所定の記憶領域における第二の変数の値を参照して、当該第二のプロセスに前記識別子を割り当てることを特徴とする請求項１１記載の印刷情報処理プログラム。
【請求項１３】
前記第二の変数の値は、前記第二のプロセスが更新することを特徴とする請求項１２記載の印刷情報処理プログラム。
【請求項１４】
前記印刷情報の表示の終了の指示に応じて、前記第一のプロセスが前記第一の変数の値を前記印刷情報の表示の終了を示す値に更新した後、前記印刷情報の表示を終了させる表示終了手順と、
前記印刷情報送信手順を実行する第二プロセスが、前記第一の変数の値が前記印刷情報の表示の終了を示す値であったときに、前記表示終了手順の終了後に前記第一の画面表示手順を実行する第二の画面表示手順とを有することを特徴とする請求項９乃至１３いずれか一項記載の印刷情報処理プログラム。
【請求項１５】
前記第二のプロセスは、前記第一の変数の値が前記印刷情報の表示の終了を示す値であった後に、他の前記第二のプロセスが前記表示画面を表示させたときは、当該他の前記第二のプロセスに前記印刷情報を送信することを特徴とする請求項１４記載の印刷情報処理プログラム。
【請求項１６】
請求項９乃至１５いずれか一項記載の印刷情報処理プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷情報処理装置、印刷情報処理プログラム及び記録媒体に関し、特にアプリケーションにおいて操作対象とされているデータの印刷情報を表示させる印刷情報処理装置、印刷情報処理プログラム及び記録媒体に関する。
【背景技術】
【０００２】
一般的なワープロソフトや表計算ソフト等では、編集対象となっている文書を印刷する前に、その印刷イメージを画面上で確認することができる。このような機能は、印刷プレビューとも呼ばれている。印刷プレビューによれば、ユーザは、各種の印刷設定の結果をも含めて、印刷イメージを確認することができる。印刷プレビューによって、印刷イメージを確認することで、ユーザは、印刷前に印刷設定のミス等に気付くことができ、用紙の無駄等を回避することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、印刷プレビューの画面は、各アプリケーションごとに表示されるため、複数のアプリケーションから同時に起動された場合は、複数のプレビュー画面が表示されてしまうという問題がある。
【０００４】
本発明は、上記の点に鑑みてなされたものであって、複数のアプリケーションのそれぞれにおいて操作対象とされているデータの印刷情報を統合的に提供することのできる印刷情報処理装置、印刷情報処理プログラム及び記録媒体の提供を目的とする。
【課題を解決するための手段】
【０００５】
そこで上記課題を解決するため、本発明は、請求項１に記載されるように、アプリケーションからの指示に基づき、前記アプリケーションにおいて操作対象とされているデータの印刷情報を生成する印刷情報生成手段と、前記印刷情報生成手段が第一のアプリケーションからの指示に応じて生成した前記印刷情報を取得し、該印刷情報の表示画面を表示させる印刷情報表示手段と、前記印刷情報生成手段が前記第一のアプリケーションとは別の第二のアプリケーションからの指示に応じて生成した前記印刷情報を取得し、前記印刷情報表示手段に引き渡す印刷情報送信手段とを有し、前記印刷情報表示手段は、前記印刷情報送信手段より受け取った前記第二のアプリケーションに係る前記印刷情報を、前記第一のアプリケーションに係る前記印刷情報と同一の表示画面において表示させることを特徴とする。
【０００６】
このような印刷情報処理装置では、それぞれ別のアプリケーションからの印刷情報であっても同一の表示画面に表示させることができるため、複数のアプリケーションのそれぞれにおいて操作対象とされているデータの印刷情報を統合的に提供することができる。
【０００７】
また、上記課題を解決するため、本発明は、上記印刷情報処理装置における機能をコンピュータに実行させるための印刷情報処理プログラム、又は前記印刷情報処理プログラムを記録した記録媒体としてもよい。
【発明の効果】
【０００８】
本発明によれば、複数のアプリケーションのそれぞれにおいて操作対象とされているデータの印刷情報を統合的に提供することのできる印刷情報処理装置、印刷情報処理プログラム及び記録媒体を提供することができる。
【発明を実施するための最良の形態】
【０００９】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、本発明の実施の形態における印刷システムの構成例を示す図である。図１に示されるように、本実施の形態における印刷システム１は、端末１０と、プリンタ２０ａ、２０ｂ及び２０ｃ（以下、総称する場合「プリンタ２０」という。）と等より構成されている。
【００１０】
プリンタ２０は、一般的なプリンタであり、端末１０からの指示に応じ印刷処理を実行する。なお、プリンタ２０ａ及び２０ｂは、例えば、ＬＡＮ（Local Area Network）等のネットワーク３０（有線又は無線の別は問わない。）によって端末１０と接続されている。プリンタ２０ｃは、例えば、ＲＳ−２３２Ｃケーブル又はＵＳＢケーブル等のケーブル４０によって端末１０と接続されている。
【００１１】
端末１０は、ユーザが文書データの生成や文書データの印刷指示等を行うために利用する、ＰＣ（Personal Computer）、ＰＤＡ（Personal Digital(Data) Assistants）、又は携帯電話等の端末である。端末１０は、例えば、Ｗｉｎｄｏｗｓ（登録商標）等のＯＳ（Operating System）上で、各種のソフトウェアを実行する。
【００１２】
図２は、本発明の実施の形態における端末のハードウェア構成例を示す図である。図２の端末１０は、それぞれバスBで相互に接続されているドライブ装置１００と、補助記憶装置１０２と、メモリ装置１０３と、演算処理装置１０４と、インタフェース装置１０５と、表示装置１０６と、入力装置１０７とを有するように構成される。
【００１３】
端末１０での処理を実現するプログラムは、CD―ROM等の記録媒体１０１によって提供される。プログラムを記録した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００１４】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。演算処理装置１０４は、メモリ装置１０３に格納されたプログラムに従って端末１０に係る機能を実現する。インタフェース装置１０５は、図２のネットワーク３０に接続するためのインタフェースとして用いられる。表示装置１０６はプログラムによるＧＵＩ（Graphical User Interface）等を表示する。入力装置１０７はキーボード及びマウス等で構成され、様々な操作指示を入力するために用いられる。
【００１５】
なお、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワーク３０を介して他のコンピュータよりダウンロードするようにしてもよい。
【００１６】
図３は、本発明の実施の形態における端末の印刷機能に関する機能構成例を示す図である。図３において、端末１０は、文書データ等の作成及び印刷に関する機能として、アプリケーション１１、グラフィックエンジン１２、プリンタドライバ１３、スプーラ１４及び印刷ジョブ管理モジュール１５等を有している。
【００１７】
アプリケーション１１は、文書データ等、プリンタ２０に印刷させる情報の生成等に利用されるワープロソフト又は表計算ソフト等のアプリケーションである。グラフィックエンジン１２は、プリンタやディスプレイ等のデバイスの種別による差違を吸収した描画用の関数インタフェースをアプリケーション１１に提供するモジュールである。アプリケーション１１は、操作対象となっている文書データの印刷が指示されると、グラフィックエンジン１２の関数を呼び出すことにより、アプリケーション固有の形式による文書データを、アプリケーション非依存のデータ形式によるデータへと変換する。
【００１８】
グラフィックエンジン１２は、アプリケーション１１からの関数呼び出しに応じ、文書データをアプリケーション非依存の形式のデータ（例えば、ＥＭＦ形式等のデータ、以下「描画データ」という。）に変換し、生成された描画データをプリンタドライバ１３に出力する。なお、グラフィックエンジン１２は、例えば、Ｗｉｎｄｏｗｓ（登録商標）環境においてはＧＤＩ（Graphics Device Interface）が相当する。
【００１９】
プリンタドライバ１３は、グラフィックエンジン１２より出力された描画データを、当該プリンタドライバ１３が対応するプリンタ（プリンタ２０）に解釈可能な形式（例えば、ＰＤＬ（Page Description Language））の印刷データへ変換する。但し、本実施の形態におけるプリンタドライバ１３は、描画データを印刷データに変換する過程において、描画データを印刷データにする前段階の印刷中間データと呼ばれるデータを生成し、当該印刷中間データをファイル（印刷中間ファイル１３１）として保存する。印刷中間データの保存が完了すると、プリンタドライバ１３は、その印刷中間ファイル１３１のファイル名（以下「印刷中間ファイル名」という。）を引数として、印刷ジョブ管理モジュール１５を起動する。なお、印刷中間データは、印刷対象とされたデータの印刷イメージや印刷設定等の印刷情報を識別できるものであれば、どのような形式でもよい。
【００２０】
印刷ジョブ管理モジュール１５は、引数として渡された印刷中間ファイル名に係る印刷中間ファイル１３１を読み込み、当該印刷中間データに基づくプレビュー画像の表示や、当該印刷中間データに対する各種の印刷設定を行わせるためのＧＵＩ（Graphical User Interface）（以下「印刷ジョブ管理画面」という。）を提供するモジュールである。
【００２１】
図４は、印刷ジョブ管理モジュールによって提供される印刷ジョブ管理画面の表示例を示す図である。図４に示されるように、印刷ジョブ管理画面１５０は、プレビュー表示領域１５０１、印刷設定領域１５０２、及びジョブ一覧表示領域１５０３等を有し、これらの各領域において印刷中間ファイル１３１に含まれている印刷情報を表示する画面である。
【００２２】
ジョブ一覧領域１５０３は、一つの印刷中間ファイル１３１から読み込まれた印刷中間データを一つのジョブとして、各ジョブを一行に割り当てて表示するリスト形式の領域である。プレビュー表示領域１５０１は、ジョブ一覧領域１５０３において選択されているジョブ（以下「カレントジョブ」という。）に係る印刷中間データのプレビュー画像を表示する領域である。印刷設定領域１５０２は、カレントジョブに対する各種印刷設定を行わせるための領域である。例えば、原稿サイズ、原稿の向き、印刷用紙サイズ、印刷部数、及びカラー若しくは白黒の別等を設定させることができる。
【００２３】
なお、印刷中間データに対する印刷設定をユーザに行わせたり、印刷中間データに基づいてプレビューを表示したりする技術については、例えば、特開２００４−９４９５５号
公報に詳しい。
【００２４】
印刷ジョブ管理モジュール１５は、印刷ボタン１５０４がクリックされると、印刷ジョブ管理画面１５０において設定された各種印刷設定に対応する印刷設定コマンドを印刷中間データに付加し、印刷設定コマンドが付加された印刷中間データをプリンタドライバ１３に出力する。プリンタドライバ１３は、印刷ジョブ管理モジュール１５より出力された印刷中間データをスプーラ１４に対して出力する。スプーラ１４に出力された印刷データは、プリンタ２０へ送信され、印刷される。
【００２５】
なお、プリンタドライバ１３が、印刷ジョブ管理モジュール１５を起動するか否かは、印刷設定時（アプリケーション１１の印刷メニューが選択された際）に、プリンタドライバ１３が表示させる印刷ダイアログにおける設定による。すなわち、プリンタドライバ１３は、印刷ダイアログにおいて印刷ジョブ管理モジュール１５によるプレビュー表示を行うか否かを選択させるためのボタン（以下「プレビューボタン」という。）を表示させ、当プレビュータンがクリックされた場合に、印刷ジョブ管理モジュール１５を起動する。この場合は、直ちに印刷は実行されず、印刷ジョブ管理画面１５０における操作を経て、印刷が実行される。
【００２６】
一方、プレビューボタンがクリックされず、一般的に行われているように、印刷ダイアログにおいて印刷設定が行われ、印刷指示がされた場合は、プリンタドライバ１３は、印刷ジョブ管理モジュール１５を起動することなく、印刷データをスプーラ１４に出力する。したがって、この場合は、一般的に行われている印刷処理と同様の処理が行われる。
【００２７】
ところで、印刷ジョブ管理モジュール１５は、例えば、Ｗｉｎｄｏｗｓ（登録商標）環境では、一つのＥＸＥファイルに該当し、起動されると一つのプロセスを構成する。したがって、複数のアプリケーション１１のそれぞれからプレビューが実行されると、通常であれば、複数の印刷ジョブ管理モジュール１５が起動されてしまい、各アプリケーションからの印刷情報を統合的に提供することはできない。すなわち、別々に起動されたそれぞれの印刷ジョブ管理画面１５０のジョブ一覧領域１５０３には、各アプリケーション１１からの印刷中間データが一つ表示されることとなる。
【００２８】
以下、一つの印刷ジョブ管理モジュール１５のプロセスで、複数のアプリケーションからの印刷中間データを統合的に管理する方法について記述する。ここで、統合的に管理するとは、例えば、それぞれ異なるアプリケーションからの印刷中間データに係るジョブを、一つの印刷ジョブ管理画面１５０のジョブ一覧領域１５０３において同時に表示させることにより、例えば、ジョブの結合や、ジョブの順番の入れ替え等を可能とすることをいう。
【００２９】
図５は、印刷ジョブ管理モジュールの起動処理を説明するためのフローチャートである。図５の処理は、グラフィックエンジン１２より描画データを受け取ったプリンタドライバ１３が、描画データに基づいて印刷中間ファイル１３１を生成した後の時点から開始される。
【００３０】
ステップＳ１０１において、印刷ジョブ管理モジュール１５は、印刷先のプリンタのプリンタ名と、プリンタドライバ１０１によって生成された印刷中間ファイル１３１のファイル名（印刷中間ファイル名）とを引数としてプリンタドライバ１３によって起動される。ステップＳ１０１に続いてステップＳ１０２に進み、印刷ジョブ管理モジュール１５は、印刷先のプリンタ名に基づいて文字列Ｓを生成する。文字列Ｓは、後述されるように、複数のプロセスによって共有できる記憶領域を識別するための名前として用いられる。複数のプロセスによって共有できる記憶領域としては、例えば、ファイルシステム上のファイルや、共有メモリ、又はレジストリ等が挙げられるが、本実施の形態においては、共有メモリを例として説明する。したがって、文字列Ｓは、共有メモリの名前として用いられる。
【００３１】
なお、プリンタ名をそのまま文字列Ｓとしてもよいが、印刷ジョブ管理モジュール１５と関係の無い他のプログラムが利用する共有メモリの名前と重複する可能性を低減させるためにできるだけ特有の文字列とすることが望ましい。例えば、印刷ジョブ管理モジュール１５のモジュール名（ファイル名）とプリンタ名とを結合した名前としてもよい。具体的には、印刷ジョブ管理モジュール１５の名前が、「ＰｒｅｖｉｅｗＰｒｉｎｔ」で、プリンタ名が「ＰｒｉｎｔｅｒＡ」である場合は、文字列Ｓは、「ＰｒｅｖｉｅｗＰｒｉｎｔ＿ＰｒｉｎｔｅｒＡ」といった具合となる。
【００３２】
ステップＳ１０２に続いてステップＳ１０３に進み、印刷ジョブ管理モジュール１５は、文字列Ｓを名前として共有メモリの生成を試みる。共有メモリの生成に成功した場合は、ステップＳ１０４に進む。この場合、印刷ジョブ管理モジュール１５の他のプロセス起動されていないと判断することができる。すなわち、後述からも明らかなように、共有メモリの生成に成功したプロセスは、当該プロセスが終了するまで共有メモリを保持し続けるところ、同時に同じ名前の共有メモリの生成はＯＳによって許可されないからである。なお、共有メモリの生成に成功したプロセスを、以下「メインプロセス」という。
【００３３】
ステップＳ１０４において、メインプロセスは、印刷ジョブ管理モジュール１５の各プロセスを制御するための情報（以下「プロセス制御情報」という。）の初期値を書き込む。
【００３４】
図６は、プロセス制御情報の例を示す図である。図６においては、プロセス制御情報をＣ言語又はＣ＋＋に従った表記の構造体ＭｅｍＤａｔａとして表現している。構造体ＭｅｍＤａｔａは、Ａ、Ｂ、及びｐｒｏｃｅｓｓＩＤの３つのメンバ変数を持つ。各メンバ変数の意味については、処理の説明と共に説明する。なお、プロセス制御情報は、必ずしも構造体である必要はなく、例えば、変数Ａ、Ｂ、ｐｒｏｃｅｓｓＩＤがそれぞれ独立した変数として、共有メモリに割り当てられてもよい。
【００３５】
プロセス制御情報の初期値として、メインプロセスは、変数Ａ及びＢには０を、変数ｐｒｏｃｅｓｓＩＤには、自分（メインプロセス）のプロセスＩＤを書き込む。すなわち、変数ｐｒｏｃｅｓｓＩＤは、他のプロセスに、メインプロセスのプロセスＩＤを識別させるための変数である。なお、以下において、単に、変数Ａ、変数Ｂ、又は変数ｐｒｏｃｅｓｓＩＤという場合、共有メモリ内における領域を意味する。したがって、変数Ａ、Ｂ、又はｐｒｏｃｅｓｓＩＤに値を書き込むといった場合、共有メモリ内の値が変化することを意味する。
【００３６】
ステップＳ１０４に続いてステップＳ１０５に進み、メインプロセスは、起動時の初期化処理を行う。初期化処理とは、例えば、印刷中間ファイル１３１の読み込みや、印刷ジョブ管理画面１５０の表示等、プロセスが定常状態に入るまでに必要とされる処理をいう。初期化処理が終わり、ユーザからの入力や、他のプロセスからの入力等（例えば、後述するように、印刷中間ファイル名の送信等）を受け付けられるようになると、ステップＳ１０６に進み、メインプロセスは、現在の変数Ｂの値に１を追加した値を変数Ｂに代入する（変数Ｂのインクリメント）。したがって、このタイミングにおいて、プロセス制御情報の値は、Ａ＝０、Ｂ＝１、ｐｒｏｃｅｓｓＩＤ＝＜メインプロセスのプロセスＩＤ＞となる。なお、メインプロセスは、印刷ジョブ管理画面１５０において、ユーザから終了指示があるまで存続し続ける。
【００３７】
一方、ステップＳ１０３において共有メモリの生成に失敗した場合は、ステップＳ１０７に進む。この場合は、既にメインプロセスが起動中であると判断することができる。共有メモリの生成に失敗したプロセスを、以下「サブプロセス」という。なお、サブプロセスは、共有メモリの生成に失敗した際に、共有メモリへアクセスするための情報（ハンドル等）を入手することができ、出力先のプリンタが同一のメインプロセスと同じ共有メモリへアクセスすることができる。
【００３８】
ステップＳ１０７において、サブプロセスは、現在の変数Ａの値に１を追加した値を変数Ａに代入すると共に（変数Ａのインクリメント）、変数Ａの値を自らが管理するメモリ空間内における変数Ａ’に記憶する。説明を容易にするため、図５においては、当該サブプロセスは、メインプロセスの次に起動された２番目のプロセスであるとする。そうすると、ステップＳ１０７が実行される前の時点では、メインプロセスのステップＳ１０４の処理により、少なくとも変数Ａの値は「０」である。したがって、サブプロセスが、ステップＳ１０７を実行することにより、変数Ａ＝１、変数Ａ’＝１となる。なお、”少なくとも変数Ａの値は「０」”と記述したのは、変数Ｂの値は、サブプロセスが起動されたタイミングによって異なるからである。すなわち、サブプロセスが、メインプロセスの起動直後に起動された場合等、サブプロセスが、ステップＳ１０７の処理を実行する時点において、メインプロセスの処理がステップＳ１０６まで進んでいない場合は、変数Ｂの値は「０」であり、既にメインプロセスの処理がステップＳ１０６まで進んでいる場合は、変数Ｂの値は「１」であるからである。
【００３９】
ステップＳ１０７に続いてステップＳ１０８に進み、サブプロセスは、変数Ａ’の値と変数Ｂの値とが同一であるか否かを判定する。この判定処理は、メインプロセスが定常状態にあるか否かを判定していることとなる。すなわち、ステップＳ１０７により、変数Ａ’の値は「１」であるところ、変数Ｂの値は、メインプロセスが定常状態（Ｓ１０６）になるまで「０」のままであるからである。
【００４０】
変数Ａ’の値と変数Ｂとの値が一致した場合（Ｓ１０８でＹＥＳ）は、メインプロセスは定常状態であると判断できるため、サブプロセスは、変数ｐｒｏｃｅｓｓＩＤに基づいてメインプロセスのプロセスＩＤを識別し、自らが起動される際に引数に渡された印刷中間ファイル名をプロセス間通信によってメインプロセスに送信する（Ｓ１０９）。その後、サブプロセスは、自らのプロセスを終了させる。
【００４１】
一方、変数Ａ’の値と変数Ｂとの値が一致しない場合（Ｓ１０８でＮＯ）は、サブプロセスは、定期的に共有メモリにアクセスして、変数Ａ’の値と変数Ｂの値との比較を繰り返す。すなわち、メインプロセスが定常状態になるまで待機する。
【００４２】
続いて、図７は、サブプロセスより印刷中間ファイルのファイル名の送信を受けたメインプロセスの処理を説明するためのフローチャートである。すなわち、図５のステップＳ１０９に応じてメインプロセスで実行される処理である。
【００４３】
サブプロセスから印刷中間ファイル名を受信すると（Ｓ１１１）、メインプロセスは、受信した印刷中間ファイル名に係る印刷中間ファイル１３１の読み込み等、新たに追加された印刷中間ファイル１３１についての初期化処理を行う。当該初期化処理が終了し、定常状態となると、メインプロセスは、変数Ｂの値をインクリメントする（Ｓ１１３）。
【００４４】
図５及び図７より、メインプロセスは、起動時において定常状態となったとき、及びサブプロセスより印刷中間ファイル名を受信するたびに変数Ｂの値をインクリメントする。また、各サブプロセスは、変数Ａの値をインクリメントすると共に、インクリメントされた変数Ａの値を変数Ａ’に保持する。また、メインプロセスが存続している間、変数Ａ及び変数Ｂの値が減少することはない。更に、各サブプロセスは、変数Ｂの値が、自らの変数Ａ’の値と同値になるまで、メインプロセスへの印刷中間ファイ名の送信を待機する。すなわち、変数Ａは、各サブプロセスに対して、サブプロセス間の順番を示す識別子（ここでは、番号）割り当てるための変数（第二の変数）であり、変数Ｂは、変数Ａによって制御される順番において、何番目のサブプロセスが印刷中間ファイル名の送信を許可されるかを示す変数（第一の変数）である。
【００４５】
図を用いて説明する。図８は、変数Ａ及び変数Ｂの意義を説明するための図である。図８において、各矢印に付されているステップ番号は、図５又は図７におけるステップ番号に対応している。但し、異なるプロセス又はタイミングにおいて実行される同一ステップを区別するため、必要に応じて枝番号が付されている。また、サブプロセス１５２、１５３、及び１５４は、この順番で起動された印刷ジョブ管理モジュール１５のプロセスであるとする。
【００４６】
サブプロセス１５２、１５３、１５４は、それぞれが起動後に、変数Ａの値をインクリメントし（Ｓ１０７−１、Ｓ１０７−２、Ｓ１０７−３）、インクリメントされた変数Ａの値をそれぞれの変数Ａ’に保持する。その結果、メインプロセス１５１、１５２、１５４のそれぞれの変数Ａ’の値は、「１」、「２」、「３」となる。そして、変数Ｂの値が自らの変数Ａ’の値と同じになるまで待機する。
【００４７】
一方、サブプロセス１５２、１５３、及び１５４より先に起動されているメインプロセス１５１は、初期化処理が終了すると変数Ｂの値を「１」とする（Ｓ１０６）。サブプロセス１５２は、Ｂの値が「１」、すなわち、自らの変数Ａ’の値と同じになったことを検知すると（Ｓ１０８−１）、メインプロセス１５１に対して印刷中間ファイル名を送信する（Ｓ１１９−１）（印刷情報の引渡し）。
【００４８】
サブプロセス１５２から受信した印刷中間ファイル名に係る印刷中間ファイル１３１に対する処理を終えると、メインプロセス１５１は、変数Ｂの値を「２」とする（Ｓ１１３−１）。サブプロセス１５３は、Ｂの値が「２」、すなわち、自らの変数Ａ’の値と同じになったことを検知すると（Ｓ１０８−２）、メインプロセス１５１に対して印刷中間ファイル名を送信する（Ｓ１１９−２）。
【００４９】
サブプロセス１５３から受信した印刷中間ファイル名に係る印刷中間ファイル１３１に対する処理を終えると、メインプロセス１５１は、変数Ｂの値を「３」とする（Ｓ１１３−２）。サブプロセス１５４は、Ｂの値が「３」、すなわち、自らの変数Ａ’の値と同じになったことを検知すると（Ｓ１０８−３）、メインプロセス１５１に対して印刷中間ファイル名を送信する（Ｓ１１９−３）。
【００５０】
このように、変数Ａと変数Ｂとによって、各サブプロセスがメインプロセスに対して印刷中間ファイル名を送信するタイミングを制御することで、メインプロセスが受信する印刷中間ファイル名の順番をサブプロセスが起動された順番（ユーザによってプレビューが指示された順番）に整合させることができる。また、メインプロセスが印刷中間ファイル名を受信できないときに、サブプロセスから印刷中間ファイル名が送信されるのを防止することができる。
【００５１】
なお、各サブプロセスから印刷中間ファイル名を受信したメインプロセスは、それぞれの印刷中間ファイル名に基づいて、各印刷中間ファイル１３１にアクセスすることができる。すなわち、各印刷中間ファイル１３１に含まれている印刷情報を一つの印刷ジョブ管理画面１５０に表示させることが可能となる。その際に、サブプロセスの起動順で印刷ファイル名が受信されるため、ジョブ一覧表示領域１５０３等においても、サブプロセスの起動順で、ジョブ一覧を表示させることができる。
【００５２】
一方で、各サブプロセスは、メインプロセスに対して印刷中間ファイル名を送信した後に終了してしまう。したがって、ユーザから見ると、あるアプリケーションからプレビューを実行し、印刷ジョブ管理画面１５０を表示させた後、更に、別のプロセスに係るアプリケーションからプレビューを実行した場合であっても、新たな印刷ジョブ管理画面１５０は表示されずに、既に表示されている印刷ジョブ管理画面１５０において、他のプロセスに係るアプリケーションからの印刷中間データと共に、印刷設定等を行うことができる。なお、共有メモリの名前は、出力先のプリンタ名に基づいて生成されるため、印刷ジョブ管理画面１５０は、出力先のプリンタごとに表示されることとなる。
【００５３】
次に、メインプロセスが終了する際の処理について説明する。図９は、メインプロセスが終了する際の処理を説明するためのフローチャートである。
【００５４】
例えば、印刷ジョブ管理画面１５０より印刷が指示されると、メインプロセスは、変数Ｂに「−１」を代入しておき（Ｓ１２１）、印刷処理の実行後、終了化処理を実行する（Ｓ１２２）。ここで、終了化処理とは、メモリ等の資源を開放したり、印刷ジョブ管理画面１５０を非表示としたりといったような、一般的なプログラムが終了時に行う処理である。続いて、メインプロセスは、自らが生成した共有メモリを削除し（Ｓ１２３）、メインプロセスを終了させる。
【００５５】
図９において、終了化処理を実行する前に、メインプロセスが変数Ｂに「−１」を代入するのは、例えば、メインプロセスの終了が指示された直後に起動されたサブプロセス等、これからメインプロセスに対して印刷中間ファイル名を送信しようとしているサブプロセスに対して、メインプロセスが終了しようとしていることを通知するためのである。メインプロセスが終了しようとしていることを検知したサブプロセスの振舞いは、図１０に示される。
【００５６】
図１０は、メインプロセスの終了化処理を考慮した場合の印刷ジョブ管理モジュールの起動処理を説明するためのフローチャートである。すなわち、図１０は、図５と同様、印刷ジョブ管理モジュール１５の起動時の処理を示すフローチャートであるが、更に、メインプロセスが終了する際に変数Ｂに「−１」が代入される場合があることも考慮して、図５を書き直したものである。したがって、図１０中、図５と同一ステップには同一符号を付し、その説明は適宜省略する。
【００５７】
図１０においては、ステップＳ１０３−１とステップＳ１０３−２とが更に追加されている。すなわち、共有メモリの生成（Ｓ１０３）に失敗した場合は、サブプロセスは、変数Ｂの値が「−１」であるか否かを判定する。変数Ｂの値が「−１」でない場合（Ｓ１０３−１でＮＯ）は、サブプロセスは、図５において説明したように、ステップＳ１０７以降の処理を実行する。
【００５８】
変数Ｂの値が「−１」であった場合（Ｓ１０３−１でＹＥＳ）は、図９において説明したようにメインプロセスは終了化処理に入っており、いずれ共有メモリが削除されることとなる。したがって、サブプロセスは、共有メモリが削除されるのを待機した後（Ｓ１０３−２）、再び共有メモリの生成を試みる（Ｓ１０３）。ここで、共有メモリの削除の待機（Ｓ１０３−２）は、例えば、共有メモリに定期的にアクセスし、アクセスに失敗することで共有メモリが削除されたことを検知してもよいし、共有メモリの生成を定期的に試み、生成が成功したことで、共有メモリが削除されたことを検知してもよい。後者の場合は、ステップＳ１０３−２とステップＳ１０３とが、一つのステップとなる。
【００５９】
共有メモリの生成に成功すると、これまでサブプロセスであったプロセスは、メインプロセスとして、ステップＳ１０４〜Ｓ１０６の処理を実行する。
【００６０】
なお、複数のサブプロセスがステップＳ１０３−２において共有メモリの削除を待機していた場合は、いずれか一つのサブプロセスが共有メモリの生成に成功することとなる。したがって、共有メモリの生成に成功したサブプロセスが、新たなメインプロセスとしてステップＳ１０４〜Ｓ１０６の処理を実行し、他のサブプロセスは、新たなメインプロセスに対するサブプロセスとしてステップＳ１０７〜Ｓ１０９の処理を実行する。
【００６１】
ところで、終了時以外においても、メインプロセスは、所定の処理の都合により一時的に他のプロセスから印刷中間ファイル名を送信されると都合が悪い状況になる場合が考えられる。かかる状況になった場合は、メインプロセスは、サブプロセスに対して印刷中間ファイル名を受信できない旨を通知する必要がある。そのための処理を図１１に示す。
【００６２】
図１１は、メインプロセスが印刷中間ファイル名を一時的に受信できなくなる際の処理を説明するためのフローチャートである。
【００６３】
例えば、印刷ジョブ管理画面１５０より印刷等が指示されると、メインプロセスは、変数Ｂの値を退避しておき、変数Ｂに「０」を代入する（Ｓ１３１）。続いて、印刷等の処理を実行する（Ｓ１３２）。処理が終了すると、メインプロセスは、退避しておいた変数Ｂの元の値を変数Ｂに代入する。
【００６４】
変数Ｂが「０」とされることで、メインプロセスに印刷中間ファイル名を送信しようとするサブプロセスは、ステップＳ１０８（図５又は図１０）で待機することとなる。各サブプロセスの変数Ａ’の値と「０」とが一致することはないからである。メインプロセスによる所定の処理の終了後、変数Ｂの値が元に戻されることで、サブプロセスは、順番にメインプロセスに対して印刷中間ファイル名を送信することが可能となる。
【００６５】
ところで、複数のプロセスによる共有メモリへのアクセスが同時に発生することも有りうるところ、複数のサブプロセスが同時に変数Ａの値を変更した場合は、各サブプロセス間の順番が維持されないという問題がある。かかる事態の発生を防止するためには、共有メモリに対する排他制御を実装すればよい。
【００６６】
排他制御の仕組みとしてセマフォ（semaphore）を用いてもよい。セマフォとは一種の共有フラグで、名前を指定して生成することができる。名前を指定することで既にこの共有フラグがあるかどうかを知ることができる。共有メモリと同じ名前のセマフォを生成できたプロセスのみが共有メモリをアクセスすることができ、アクセスが終了したらセマフォもリリースするようにしておく。そうすれば、複数のプロセスから同時に同じ共有メモリにアクセスされることはない。
【００６７】
Ｗｉｎｄｏｗｓ（登録商標）においてはセマフォもオブジェクトとして存在しており、シグナル状態と非シグナル状態の二つの状態を持つ。セマフォを生成して所持しているプロセスがある場合はそのセマフォは非シグナル状態であり、セマフォを所持していたプロセスがセマフォをリリースするとシグナル状態となる。あるプロセスがセマフォを既に生成している場合、別のプロセスが同じ名前のセマフォを生成しようとすると、生成には失敗するが、生成されているセマフォの状態を取得するためのハンドルが返される。このハンドルを指定して待機関数（ｗａｉｔ  ｆｕｎｃｔｉｏｎｓ）を呼び出すことで、非シグナル状態からシグナル状態になるまで待つことができる。非シグナル状態からシグナル状態になって待機関数から制御が返されると、そのプロセスはセマフォを所持したことになり、セマフォの状態は非シグナル状態となる。
【００６８】
また、ミューテックス（ｍｕｔｅｘ：ｍｕｔｕａｌ  ｅｘｃｌｕｓｉｏｎ  ｓｅｒｖｉｃｅ）を排他制御の仕組みとして用いてもよい。ミューテックスもセマフォと同様な動きをする。すなわち、名前を指定してミューテックスオブジェクトを生成する。また名前を指定することでミューテックスオブジェクトが既に存在するかを判定することができる。オブジェクトの状態としてシグナル状態と非シグナル状態があり、各プロセスは、待機関数を使ってシグナル状態になるまで待つことができる。
【００６９】
図１２は、ミューテックスを用いた排他制御処理を説明するためのフローチャートである。図１２の処理は、共有メモリにアクセスするメインプロセス又はサブプロセスが、変数Ａ又は変数Ｂの値を変更する際等、共有メモリにアクセスする際に実行される。
【００７０】
まず、共有メモリと同じ名前の文字列Ｓでミューテックスオブジェクトを生成する（Ｓ１４１）。生成に成功したら（Ｓ１４１で「成功」）共有メモリにアクセスし（Ｓ１４３）、アクセス終了後にミューテックスオブジェクトを削除する（Ｓ１４４）。共有メモリの生成に失敗したら、ミューテックスオブジェクトがシグナル状態になるまで待機した後（Ｓ１４２）、共有メモリにアクセスする。
【００７１】
本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図面の簡単な説明】
【００７２】
【図１】本発明の実施の形態における印刷システムの構成例を示す図である。
【図２】本発明の実施の形態における端末のハードウェア構成例を示す図である。
【図３】本発明の実施の形態における端末の印刷機能に関する機能構成例を示す図である。
【図４】印刷ジョブ管理モジュールによって提供される印刷ジョブ管理画面の表示例を示す図である。
【図５】印刷ジョブ管理モジュールの起動処理を説明するためのフローチャートである。
【図６】プロセス制御情報の例を示す図である。
【図７】サブプロセスより印刷中間ファイルのファイル名の送信を受けたメインプロセスの処理を説明するためのフローチャートである。
【図８】変数Ａ及び変数Ｂの意義を説明するための図である。
【図９】メインプロセスが終了する際の処理を説明するためのフローチャートである。
【図１０】メインプロセスの終了化処理を考慮した場合の印刷ジョブ管理モジュールの起動処理を説明するためのフローチャートである。
【図１１】メインプロセスが印刷中間ファイル名を一時的に受信できなくなる際の処理を説明するためのフローチャートである。
【図１２】ミューテックスを用いた排他制御処理を説明するためのフローチャートである。
【符号の説明】
【００７３】
１            印刷システム
１０          端末
１１          アプリケーション
１２          グラフィックエンジン
１３          プリンタドライバ
１４          スプーラ
１５          印刷ジョブ管理モジュール
２０、２０ａ、２０ｂ、２０ｃ        プリンタ
３０          ネットワーク
４０          ケーブル
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        メモリ装置
１０４        演算処理装置
１０５        インタフェース装置
１０６        表示装置
１０７        入力装置
１３１        印刷中間ファイル
Ｂ    バス
【図１】
2006215805.tif 000003
【図２】
2006215805.tif 000004
【図３】
2006215805.tif 000005
【図４】
2006215805.tif 000006
【図５】
2006215805.tif 000007
【図６】
2006215805.tif 000008
【図７】
2006215805.tif 000009
【図８】
2006215805.tif 000010
【図９】
2006215805.tif 000011
【図１０】
2006215805.tif 000012
【図１１】
2006215805.tif 000013
【図１２】
2006215805.tif 000014