JP2005050307A - プログラム間通信装置、プログラム間通信方法、コンピュータ読み取り可能な記録媒体およびプログラム - Google Patents

プログラム間通信装置、プログラム間通信方法、コンピュータ読み取り可能な記録媒体およびプログラム Download PDF

Info

Publication number
JP2005050307A
JP2005050307A JP2004150737A JP2004150737A JP2005050307A JP 2005050307 A JP2005050307 A JP 2005050307A JP 2004150737 A JP2004150737 A JP 2004150737A JP 2004150737 A JP2004150737 A JP 2004150737A JP 2005050307 A JP2005050307 A JP 2005050307A
Authority
JP
Japan
Prior art keywords
program
information
inter
media object
image
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.)
Granted
Application number
JP2004150737A
Other languages
English (en)
Other versions
JP4458929B2 (ja
Inventor
Takuya Kotani
拓矢 小谷
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2004150737A priority Critical patent/JP4458929B2/ja
Priority to US10/887,781 priority patent/US7434233B2/en
Priority to CNB2004100709387A priority patent/CN1329826C/zh
Publication of JP2005050307A publication Critical patent/JP2005050307A/ja
Application granted granted Critical
Publication of JP4458929B2 publication Critical patent/JP4458929B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/545Gui

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Facsimiles In General (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】 より少ない処理負荷でプログラム間通信を実現することができるプログラム間通信装置、プログラム間通信方法およびそのプログラムを提供する。
【解決手段】 画像補正プログラムと画像印刷プログラムは、初期化フェイズ51において一対の通信経路を確立する。この時、画像補正プログラムは、画像印刷プログラムと共有する共有メモリのメモリ領域を確保する。次に、接続フェイズ52において、画像印刷プログラムは、画像データを特定するファイル番号および画像データのデコード処理を要求する要求情報を、確立した通信経路を用いて画像補正プログラムへ通知する。これにより、画像補正プログラムは、通知されたファイル番号で特定される画像データに対して要求情報に応じたデコード処理を行った場合に、デコード処理後の画像データ本体のデータおよび画像データに付属する付属情報を共有メモリに格納する。
【選択図】 図1

Description

本発明は、対象となるメディア・オブジェクトを扱う複数のプログラムが相互に通信し、全体としてまとまった処理を行うプログラム間通信装置、プログラム間通信方法、コンピュータ読み取り可能な記録媒体およびプログラムに関するものである。
従来、プログラム間通信のうち機能を補い合うために用いられるものは、プログラムに用意されていない機能を持つプログラムを検索し、検索されたプログラムにその処理の実行を完全に任せるものであった(特許文献1参照。)。例えば、画像印刷ソフトで未対応のデータ形式の画像データを印刷しようとした場合、そのデータ形式の画像データを扱えるプログラムを検索し、そのプログラムにその画像データを画像印刷ソフトで処理可能なデータ形式にデコードするよう処理を任せるという連携を実現するためのプログラム間通信がある。
上述したような複数のプログラムの連携を実現するためには、あるプログラムに備えられていない機能を実現するためのプログラムが何なのかを検索/推定しなくてはならない。また、どのような機能を補うためにプログラム間通信が行われるか分からないので、プログラム間通信の手順が複雑になってしまい、プログラムの連携に非常に気を使って実装しなくてはならない。例えば、連携先のアプリケーション毎に異なる実装をしなくてはならないようなことが考えられる。
特開平6−175831号公報
しかしながら、従来のプログラム間通信では、あるプログラムにおいて、自ら処理できない機能を補ってくれる連携に最適な他のプログラムを検索する処理の負荷に加えて、連携に必要なプログラム間通信を制御する複雑さ・厳密さによる処理の負荷が非常に高いという問題点があった。
本発明は、上述した事情を考慮してなされたもので、より少ない処理負荷でプログラム間通信を実現することができるプログラム間通信装置、プログラム間通信方法およびコンピュータ読み取り可能な記録媒体およびプログラムを提供することを目的とする。
この発明は、上述した課題を解決すべくなされたもので、本発明によるプログラム間通信装置においては、共通のメディア・オブジェクトを連携して処理可能な第1のプログラムと第2のプログラムの間におけるプログラム間通信を行うプログラム間通信装置であって、第1のプログラムと第2のプログラム間に一対の通信経路を確立する通信経路確立手段と、第1のプログラムおよび第2のプログラムが共有する共有メモリのメモリ領域を確保する共有メモリ確保手段と、メディア・オブジェクトを特定する特定情報および特定情報により特定したメディア・オブジェクトの処理を要求する要求情報を、通信経路確立手段が確立した通信経路を用いて第1のプログラムから第2のプログラムへ通知する通知手段と、第2のプログラムが通知手段により通知された特定情報で特定されるメディア・オブジェクトに対して要求情報に応じた処理を行った場合に、処理後のメディア・オブジェクト本体のデータおよびメディア・オブジェクトに付属する付属情報を共有メモリ確保手段が確保した共有メモリに格納することで第2のプログラムから第1のプログラムへ処理後のメディア・オブジェクト本体のデータおよび付属情報を転送する転送手段とを具備することを特徴とする。
ここで、メディア・オブジェクトとは、画像データ、映像データ、音声データ、文字データ、音楽データなど、マルチメディアに含まれる処理対象となる各種データを示すものである。また、一対の通信経路とは、第1のプログラムから第2のプログラムへコマンドやデータを送信する第1の通信経路と第2のプログラムから第1のプログラムへコマンドやデータを送信する第2の通信経路とが対を成すものである。この通信経路は所定の通信プロトコルにより管理される。
また、本発明によるプログラム間通信装置の一態様例においては、上記通信経路確立手段は、第1のプログラムおよび第2のプログラムのウインドウを制御するウインドウシステムにおけるウインドウ識別情報とウインドウ処理関数を特定するメッセージ識別子とを利用することを特徴とする。
これにより、各プログラムが管理するウインドウの制御コマンドを通じて通信を行うことができる。ここで、例えば上述した「ウインドウシステム」がOSであるウィンドウズ(登録商標)である場合には、上述した「ウインドウ識別情報」とはウインドウハンドルであり、「ウインドウ処理関数を特定するメッセージ識別子」とはウインドウプロシージャのメッセージIDである。
また、本発明によるプログラム間通信方法においては、共通のメディア・オブジェクトを連携して処理可能な第1のプログラムと第2のプログラムの間におけるプログラム間通信を行うプログラム間通信装置を用いたプログラム間通信方法であって、第1のプログラムと第2のプログラム間に一対の通信経路を確立する第1のステップと、第1のプログラムおよび第2のプログラムが共有する共有メモリのメモリ領域を確保する第2のステップと、メディア・オブジェクトを特定する特定情報および特定情報により特定したメディア・オブジェクトの処理を要求する要求情報を、第1のステップで確立した通信経路を用いて第1のプログラムから第2のプログラムへ通知する第3のステップと、第2のプログラムが第3のステップにより通知された特定情報で特定されるメディア・オブジェクトに対して要求情報に応じた処理を行った場合に、処理後のメディア・オブジェクト本体のデータおよびメディア・オブジェクトに付属する付属情報を第2のステップで確保した共有メモリに格納することで第2のプログラムから第1のプログラムへ処理後のメディア・オブジェクト本体のデータおよび付属情報を転送する第4のステップとを有することを特徴とする。
また、本発明によるコンピュータ読み取り可能な記録媒体は、共通のメディア・オブジェクトを連携して処理可能な第1のプログラムと第2のプログラムの間におけるプログラム間通信を行うプログラム間通信装置用のプログラムを記録した記録媒体であって、第1のプログラムと第2のプログラム間に一対の通信経路を確立する第1のステップと、第1のプログラムおよび第2のプログラムが共有する共有メモリのメモリ領域を確保する第2のステップと、メディア・オブジェクトを特定する特定情報および特定情報により特定したメディア・オブジェクトの処理を要求する要求情報を、第1のステップで確立した通信経路を用いて第1のプログラムから第2のプログラムへ通知する第3のステップと、第2のプログラムが第3のステップにより通知された特定情報で特定されるメディア・オブジェクトに対して要求情報に応じた処理を行った場合に、処理後のメディア・オブジェクト本体のデータおよびメディア・オブジェクトに付属する付属情報を第2のステップで確保した共有メモリに格納することで第2のプログラムから第1のプログラムへ処理後のメディア・オブジェクト本体のデータおよび付属情報を転送する第4のステップとをプログラム間通信装置に実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体である。
また、本発明によるプログラムは、共通のメディア・オブジェクトを連携して処理可能な第1のプログラムと第2のプログラムの間におけるプログラム間通信を行うプログラム間通信装置用のプログラムであって、第1のプログラムと第2のプログラム間に一対の通信経路を確立する第1のステップと、第1のプログラムおよび第2のプログラムが共有する共有メモリのメモリ領域を確保する第2のステップと、メディア・オブジェクトを特定する特定情報および特定情報により特定したメディア・オブジェクトの処理を要求する要求情報を、第1のステップで確立した通信経路を用いて第1のプログラムから第2のプログラムへ通知する第3のステップと、第2のプログラムが第3のステップにより通知された特定情報で特定されるメディア・オブジェクトに対して要求情報に応じた処理を行った場合に、処理後のメディア・オブジェクト本体のデータおよびメディア・オブジェクトに付属する付属情報を第2のステップで確保した共有メモリに格納することで第2のプログラムから第1のプログラムへ処理後のメディア・オブジェクト本体のデータおよび付属情報を転送する第4のステップとをプログラム間通信装置に実行させるためのプログラムである。
これにより、本発明によるプログラム間通信装置、プログラム間通信方法、コンピュータ読み取り可能な記録媒体およびプログラムは、第1のプログラムと第2のプログラム間に一対の通信経路を確立して、第1のプログラムおよび第2のプログラムが共有する共有メモリのメモリ領域を確保して、メディア・オブジェクトを特定する特定情報およびそのメディア・オブジェクトの処理を要求する要求情報を、確立した通信経路を用いて第1のプログラムから第2のプログラムへ通知して、第2のプログラムが通知された特定情報で特定されるメディア・オブジェクトに対して要求情報に応じた処理を行った場合に、処理後のメディア・オブジェクト本体のデータおよびメディア・オブジェクトに付属する付属情報を共有メモリに格納することで第2のプログラムから第1のプログラムへ処理後のメディア・オブジェクト本体のデータおよび付属情報を転送するので、第1のプログラムと第2のプログラムが連携して一つのメディア・オブジェクとを処理する際に、以下に示す特徴により、より少ない処理負荷でプログラム間通信を実現することができる。
・2プログラム間の通信経路を一対の通信経路に限定している。
・一般的にデータ容量の大きいメディア・オブジェク本体のデータや付属情報を、共有メモリを介して転送している。
すなわち、通信経路を限定しているので、余分な通信管理処理が発生しない。また、データ容量の大きいデータを共有メモリで共有しているので、従来のように共有メモリが無い場合に各プログラムがデータを処理する度に、各プログラムで各々確保したメモリ領域に上記データを移動する処理などが省略できる。
以下、本発明の実施の形態を説明する。
〔第1の実施形態〕
まず、本発明の第1の実施形態におけるコンピュータシステムの概要について説明する。
図1は、第1の実施形態におけるコンピュータシステムのハードウェア構成を示す図である。図1において、CPU101は、システム全体の動作をコントロールし、一次記憶102に格納されたプログラムの実行などを行う。一次記憶102は、主にメモリであり、二次記憶103に記憶されたプログラムなどを読み込んで格納する。二次記憶103は、例えばハードディスクなどの不揮発性の記録媒体である。一般に一次記憶102の容量は二次記憶103の容量より小さく、CPU101は、一次記憶102に格納しきれないプログラムやデータなどを二次記憶103に格納する。また、CPU101は、長時間記憶しなくてはならないデータなども二次記憶103に格納する。
本実施形態では、種々のプログラムを二次記憶103に格納し、その中より実行対象となるプログラムを一次記憶102に読み込んでCPU101が実行処理を行う。入力デバイス104は、入力装置であり、例えば、コンピュータシステムのコントロールに用いるマウスやキーボードの他、画像データの入力に必要なカードリーダ、スキャナ、フィルムスキャナなどである。また、出力デバイス105は、表示装置と印刷装置であり、例えば液晶モニタやプリンタなどである。尚、上述したコンピュータシステムのハードウェア構成は一例であり、本発明は、コンピュータプログラムを実行可能なハードウェア構成を備える装置やシステムに用いて好適である。
また、図1に示したコンピュータシステムには、複数のプログラムを並列実行可能なオペレーティングシステム(以下、OSとする)およびOS上で動作可能な種々のアプリケーションプログラムが搭載され、CPU101により実行可能である。このOSは、コンピュータシステムの操作者に、GUI(Graphical User Interface)を提供する。これにより、操作者は、上述した入力デバイス104からGUIを操作することで種々のアプリケーションプログラムを利用することができる。本実施形態においては、OSの具体例として、マイクロソフト社のウィンドウズ(登録商標)を搭載したコンピュータシステムについて説明する。尚、コンピュータシステムが搭載するOSは、ウィンドウズ(登録商標)に限られるものではなく、他のOSを搭載したコンピュータシステムであっても本発明を実現することは可能である。
ここで、コンピュータシステムがアプリケーションプログラムとして、画像補正を行う画像補正プログラムと、画像補正プログラムにより補正された画像を印刷する画像印刷プログラムを搭載しているとする。これらの画像補正プログラムと画像印刷プログラムが、本実施形態の特徴であるプログラム間通信方法を用いて連携動作するためのしくみについて以下に説明する。本実施形態におけるコンピュータシステムは、画像データを複数のプログラムで扱うための仕組みを備え、それら複数のプログラムの連携と、それを実現するプログラム間通信を制御する機能を有する。尚、連携するプログラム自身の仕様は、限定されるものではなく、種々の仕様を有するプログラムに適用可能である。
まず、図1に示したコンピュータシステムで利用可能な画像補正プログラムについて簡単に説明する。画像補正プログラムは、BMP、JPEG、TIFFなどの画像ファイル形式である画像データを処理対象とした画像補正アプリケーションである。画像補正プログラムを、CPU101が実行することで、図2に示すような画像選択画面20または画像補正画面24が出力デバイス105(表示装置)に表示される。
図2に示すように、画像選択画面20は、フォルダ・ツリー表示エリア22とサムネイル表示エリア21で構成され、フォルダ・ツリー表示エリア22にはシステムの記録媒体に格納された画像データのディレクトリ構造を表現したフォルダ・ツリーが表示される。このフォルダ・ツリー表示エリア22に表示されたディレクトリを選択すると、サムネイル表示エリア21に、選択されたディレクトリに格納される選択対象となる画像の縮小画像(サムネイル)が一覧表示される。ここで、サムネイル表示エリア21は、表示対象の画像が後述の画像補正画面24で補正された場合には、縮小画像にも同様の補正を適用して表示する。また、サムネイル表示エリア21は、対象画像が多すぎてサムネイル表示エリア21に全ての縮小画像を同時に表示できない場合には、スクロールバーを表示する。これにより、操作者はスクロールバーを操作することで、全ての縮小画像を閲覧することができる。サムネイル表示エリア21に表示された縮小画像は、シングル・クリックする度に選択状態と非選択状態が切り替わり、ダブル・クリックすると画像補正画面24に表示が切り替わる。例えば、図2の縮小画像23がダブル・クリックされた場合に、縮小画像23に対応する画像を含む画像補正画面24が表示される。
画像補正画面24は、補正対象画像表示エリア25と、補正パレット26で構成される。補正対象画像表示エリア25には、補正対象画像に対して補正パレット26で指定されたパラメータを適用した画像が表示される。補正パレット26は、対象画像のヒストグラムが表示されるヒストグラム表示領域26aと、シャープネスや彩度等を指定するスライダー26b〜26dで構成される。操作者がスライダー26b〜26dを操作する度に、CPU101は、補正対象画像表示エリアの画像を補正処理して更新する。補正パレット26で調整可能なパラメータは、例えば輝度γ値、シャープネス、彩度、コントラストを調整可能なものとする。
また、図2に示した画像補正画面24と異なる画像補正画面について説明する。例えば操作者が画像選択画面20で複数の画像を選択した場合、CPU101は、図3に示すような画像補正画面24aを出力デバイス105(表示装置)に表示する。画像補正画面24aは、補正対象画像表示エリア25の左に、選択画像一覧表示エリア27が表示されている。この選択画像一覧表示エリア27には、選択された画像の縮小画像が並べて表示される。このような画像補正画面24aを表示するモードを用意することで、複数画像の補正を行う場合に、画像選択画面20と画像補正画面24の表示切り替え操作を、選択した画像の枚数に応じて行わなくても済むようになり操作性が向上する。
画像補正画面24または画像補正画面24a(以下、単に画像補正画面24とする)での補正結果は、対象となる画像を直接加工するのでは無く、元画像に対する補正パラメータをファイルに追記する形で保存する。このようにすることで、補正に応じて何度もパラメータを変更しても原画像に画像データは保存されているので、補正するたびに画質が劣化していくことは無い。
次に、画像印刷プログラムについて簡単に説明する。画像印刷プログラムは、JPEG形式の画像データを対象とした印刷アプリケーションである。画像印刷プログラムをCPU101が実行することで、図4に示すような画像選択画面30と印刷条件設定画面35が出力デバイス105(表示装置)に表示される。図4に示すように画像選択画面30は、図2に示した画像選択画面20と同様のフォルダ・ツリー表示エリア32とサムネイル表示エリア33に加えて、画像印刷プログラムによる処理を終了するための終了ボタン31を更に含む構成である。また、印刷条件設定画面35は、用紙指定エリア36と、印刷ボタン37と、レイアウト指定エリア38から構成されている。これにより、用紙指定エリア36において用紙を指定し、レイアウト指定エリア38でレイアウトを指定した後に、印刷ボタン37を押下すると、選択された画像が、指定された用紙サイズの用紙に対して、指定されたレイアウトで出力デバイス105(プリンタ)で印刷され出力される。
図4に示すように本実施形態では、用紙指定エリア36では、A4、L判、葉書のいずれかを選択可能な構成である。尚、用紙指定エリア36において、用紙サイズ以外に、用紙の種類などを指定可能にしてもよい。具体的には、普通紙と写真用紙などが指定可能とする。また、レイアウト指定エリア38においては、フチ無し全面、2in1、撮影時情報付印刷、縮小画像一覧(インデックス印刷)のいずれかが選択可能である。ここで、撮影時情報付印刷とは、画像と、その付属情報(撮影日時、シャッタ速度など撮影時の情報)を同一用紙に出力するためのレイアウトである。具体的には用紙一枚に対して一枚の画像とその撮影時情報を並べて出力する。また、終了ボタン31を押下すると画像印刷プログラムの処理を終了する。
以上、図2と図4を用いて説明した画像補正プログラムおよび画像印刷プログラムは、上記で説明した単体での動作の他に、本実施形態における特徴となるプログラム間通信処理によって連携動作するための仕組みが実装されている。このプログラム間通信処理によって連携動作の詳細な処理については後述することにして、まずGUIレベルでの動作について説明する。
画像補正プログラムには、選択画像を印刷するためのメニューが用意されていて、そのメニューを選択することで選択画像を印刷することができる。具体的には、OSが提供するユーザインターフェイスを使って選択画像をプリンタ出力できるようになっている。しかし、本実施形態のコンピュータシステム内に図4を用いて説明した画像印刷プログラムがインストールされているので、OSが提供するインターフェイスでは無く、その画像印刷プログラムが起動する。
また、画像印刷プログラムは、画像補正プログラムからの印刷要求により起動された場合には、図4に示した画像選択画面30のうち、フォルダ・ツリー表示エリア32は表示されなくなる。この状態の場合、サムネイル表示エリア33に、画像補正プログラムで選択された画像が一覧表示される。さらに、終了ボタン31は、戻るボタン31に代わる。この戻るボタン31を押下した場合、画像印刷プログラムを終了し、画像補正プログラムに制御を戻す。
但し、上述したように画像補正プログラムと画像印刷プログラムが連携を行う場合に、次のような問題が生じる。
・画像補正プログラムと画像印刷プログラムとで処理可能なデータ形式が異なる。さらに、画像補正処理の有無をプログラム間で伝達する必要ある。
・プログラム間で扱うファイル名を伝達する必要がある。
これらの問題を解決するために、本実施形態におけるコンピュータシステムは、以下に説明するプログラム間通信方式を用いて画像補正プログラムと画像印刷プログラムの連携を実現する。以下、プログラム間通信方式の詳細について述べる。
まず、図1に示したコンピュータシステムにおける画像補正プログラムおよび画像印刷プログラムのプログラム間の通信手順について説明する。図5は、図1に示したコンピュータシステムにおけるプログラム間の通信手順を示す図である。図5に示すように、本プログラム間通信方式は、初期化フェイズ51と、接続フェイズ52と、終了フェイズ53の大きく3つのフェイズで構成される。以下、画像補正プログラムや画像印刷プログラムを含む一般的な複数のプログラム間における3つのフェイズでの処理について説明を行う。尚、図5に示す画像補正プログラムと画像印刷プログラムにおける3つのフェイズの処理につては詳細を後述する。また、説明を分かり易くするために、あるファイルを処理中のプログラムを第1のプログラムとして、プログラム間通信により第1のプログラムの要求に応じてそのファイルを代わりに処理するプログラムを第2のプログラムとする。
まず、初期化フェイズ51では、第1のプログラムが、第2のプログラムとのプログラム間の通信経路(通信チャネル)を確立し、その通信経路を用いて、処理対象となるファイルのリストであるファイルリストを共有する処理を行う。また、各プログラムにおけるファイルの指定は、ファイル名ではなく上述したファイルリストにおける順番を示すファイル番号(識別子などでもよい)で行う。すなわち、各プログラムは、ファイル単位で他のプログラムに対して処理を要求する。具体的には、ファイルリストの先頭のファイル番号を0番として扱う。また、プログラム間のファイルリストの転送は、共有メモリを介して行う。尚、共有メモリとは、各プログラムが処理対象とするファイル(ファイルリストに記載されたファイル)を格納するメモリでも有り、図1に示した一次記憶102、二次記憶103のいずれかに構築される。
上述した処理により初期化フェイズ51を終えると、接続フェイズ52に進む。接続フェイズ52では、第1のプログラムが、処理対象となるファイルのファイル番号と要求条件(例えばデコード処理の要求)とを第2のプログラムに通知する。これにより、第2のプログラムは、ファイル番号で特定されるファイルに対して、要求条件に応じた処理(例えばデコード処理)を行い、処理後のファイルを共有メモリに配置する。次に、配置されたデータを、要求側の第1のプログラムが共有メモリから参照する。以上により、第1のプログラムと第2のプログラム間で、必要なデータ(デコード処理後のファイル)の転送を実現する。
接続フェイズ52を終えると、最後に、終了フェイズ53に進む。いずれかのプログラムがプログラム間通信の切断要求を相手のプログラムに対して通知し、接続を切断する。図5では、画像印刷プログラムの終了と共にプログラム間通信の接続を切断するようになっているが、切断を要求するプログラムはどちらでも構わない。尚、図5に示す「PROCESS_A」、「PROCESS_B」については、後述の通信プロトコルの詳細説明において述べる。
次に、本実施形態におけるプログラム間通信方式のプロトコル例と、画像補正プログラムと画像印刷プログラム間における各フェイズの処理の詳細について説明する。
<通信プロトコル>
本実施形態では、プログラム間における通信経路の確立のための情報として、夫々のプログラムがGUIとして表示するメインウインドウのウインドウハンドルと、そのウインドウプロシージャのメッセージIDを用いる。具体的には、画像補正プログラムが表示する画像選択画面20および画像印刷プログラムが表示する画像選択画面30の各々のウインドウハンドルとウインドウプロシージャのメッセージIDを用いて、通信経路を確立する。また、図5に示した「PROCESS_A」および「PROCESS_B」は、画像補正プログラムおよび画像印刷プログラムにおいて定義している通信用メッセージIDである。
本実施形態のようにOSがウィンドウズ(登録商標)の場合では、各ウインドウは、ウインドウを識別するウインドウハンドルを持っており、マウスイベントなどのイベントは、各ウインドウハンドルを指定して送られる。イベントを識別するため、イベントを伝えるメッセージにはメッセージIDが割り振られている。メッセージIDには、システムで予約された番号と、ユーザが任意に設定できる番号がある。そこで、ユーザ定義のメッセージIDとしてプログラム間通信用の通信用メッセージIDを定義し、プログラム間通信の処理を受け持つウインドウのウインドウハンドルを指定して、プログラム間通信イベントを送付することで、該ウインドウを管理する特定のプログラムに対して処理要求などの情報を伝達することが出来る。
ただし、ウインドウに対するイベント通知では、伝達できる情報量が限られている。本実施形態のようにOSがウィンドウズ(登録商標)の場合には、イベントとしてウインドウを管理するプログラムに通知可能なデータは、上述したメッセージIDの他に、副イベント情報であるWPARAMとLPARAMの2つのみである。このWPARAMとLPARAMは、夫々4バイトの整数値である。そこで、画像データなど大きなサイズのデータは、共有メモリを介してプログラム間の転送を行う。ウィンドウズ(登録商標)では、共有メモリを特定するために、共有メモリに識別名をつけて管理を行っている。
ここで、本実施形態において使用する通信コマンドについて説明する。既に述べたように、ユーザ定義のメッセージID(通信用メッセージID)を使って相手のプログラムにコマンドを送信する。また、コマンドとそのパラメータの送信で利用できるデータ容量は、WPARAMとLPARAMを合わせた8バイトである。そこで、図6に示すように、この8バイトを2バイトずつ4つに区切り、それぞれ、コマンド、パラメータ1、パラメータ2、パラメータ3として扱う。図6は、本実施形態における通信用メッセージIDに含ませるコマンドおよびパラメータ割り当て例を示す図である。また、図6のコマンド部において、上位1バイトに相当する定義例の一覧を図7に示し、また、下位1バイトにはデコード時の色深度を示すコマンドを入れる。図7に示すように、16進数で「00〜7F」までがデコード要求コマンド、「A0」がメッセージIDの通知コマンド、「B0」がウインドウハンドルの通知コマンド、「E0」がプログラム間接続通信切断要求コマンド、「F0」がプログラム終了要求コマンドである。尚、図7に示した各コマンドの詳細については、各フェイズにおける処理の詳細説明の中で述べる。
次に、図5に示した初期化フェイズ51と、接続フェイズ52と、終了フェイズ53の各フェイズにおける処理の詳細について説明する。
<初期化フェイズ>
初期化フェイズ51では、上述したようにプログラム間通信開始処理を行う。即ち、画像補正プログラムが連携動作する画像印刷プログラムを起動し、プログラム間の通信経路を確定するまでの処理が初期化フェイズ51である。
本実施形態における初期化フェイズ51においては、連携動作する2つのプログラム間で通信処理が実装されているウインドウのウインドウハンドルとメッセージIDを互いに通知しあう必要がある。また、連携動作する2つのプログラムのいずれかが共有メモリを確保し、その識別名を相手のプログラムに伝達する必要がある。本実施形態では、他のプログラムを起動する側のプログラムで共有メモリを確保する。具体的には、図5に示すように、画像補正プログラムが共有メモリを確保して、画像印刷プログラムに共有メモリの識別名を伝達する。
ここで、図5に示した初期化フェイズ51の処理の詳細について説明する。
図8は、図5に示した初期化フェイズ51の処理の詳細を示す図である。尚、図8に示す処理の前提として本実施形態のコンピュータシステムは、画像補正プログラムは既に起動済みである。図8に示すように、ステップS801において、画像補正プログラムは、画像印刷プログラムを起動して、共有メモリに上述したファイルリストを格納する。この時、画像補正プログラムは、通信用パラメータ1としてウインドウハンドル、メッセージIDを夫々16進数で表記して文字列にしたものと、共有メモリの識別名を順に記述したものを送信する。これにより、その通信用パラメータ1を画像印刷プログラムの実行時オプションとして指定することができる。また、画像補正プログラムは、プログラム間接続で扱うファイルのリストであるファイルリストを共有メモリ上に配置する。
次に、ステップS802において、画像印刷プログラムは、起動時に画像補正プログラムより通信パラメータ1を取得する。これにより、画像印刷プログラムは、その通信パラメータ1で指定された実行時オプション(起動時パラメータ)を解析し、通信相手(画像補正プログラム)のウインドウハンドル、メッセージID、共有メモリの識別名を取得する。
尚、実行時オプションが特に指定されていない場合は単独起動、指定されている場合には他のプログラムにより起動されたことが識別できる。このような処理を行うことで、画像印刷プログラムは、図4に示したように、単独起動時だけフォルダ・ツリー表示エリア32を表示することが可能になる。ただし、単独起動チェック処理については図8中では省略している。
次に、ステップS803において、画像印刷プログラムは、ステップS802で得た共有メモリの識別名を使って、共有メモリ上にあるファイルリストを取得する。次に、ステップS804において、画像印刷プログラムは、ステップS802で得たウインドウハンドル、メッセージIDで特定される画像補正プログラムに対して、通信用パラメータ2として画像印刷プログラム側でプログラム間通信に利用するウインドウハンドルとメッセージIDを通知する。具体的には、画像印刷プログラムは、SEND_MESSAGE_IDとSEND_WINDOW_HANDLEの2つのコマンドを使って、通信パラメータ2としてウインドウハンドルとメッセージIDを画像補正プログラムへ通知する。このSEND_MESSAGE_IDコマンドの場合、図6に示したパラメータ2とパラメータ3の領域で、通信に使うメッセージIDを伝える。また、SEND_WINDOW_HANDLEコマンドの場合も、図6に示したパラメータ2とパラメータ3の領域でウインドウハンドルを通知する。いずれの場合も、パラメータ1の領域は未使用とする。
次に、ステップS805において、画像補正プログラムは、ステップS804で通知された2つのコマンドから、通信用パラメータ2として画像印刷プログラムでプログラム間通信に利用するウインドウハンドルとメッセージIDを得る。
以上で述べた処理を初期化フェイズ51で行うことによって、画像補正プログラムと画像印刷プログラム間におけるプログラム間通信の経路を確立することができる。さらに初期化フェイズ51において、連携して動作する画像補正プログラムと画像印刷プログラムが、以下に示すようなウインドウの表示制御を行うことで、利用者にあたかも一つのプログラムとして動作するように見せることが可能になる。このように、2つのプログラムがあたかも一つのプログラムとして動作しているように見せることは、統一感があり、使用者にとって自然な操作環境であるといえる。図9は、初期化フェイズ51において連携動作する2つのプログラムがあたかも一つのプログラムとして動作するように見せるための処理を示すフロー図である。
図9に示すように、まず、ステップS901において、起動時の画像印刷プログラムは、起動画面(ウインドウ)を表示する際に、元々画像補正プログラムが表示していたウインドウ(以下、元ウインドウとする)と同一の表示位置・大きさで表示する。本実施形態では、画像印刷プログラムが画像補正プログラムから起動された場合、画像補正プログラムが表示していた元ウインドウ(例えば図2の画像補正画面24)と同じ位置・大きさで、画像印刷プログラムにおけるウインドウ(例えば図4の画像選択画面30)を出力デバイス105(表示装置)に表示する。
次に、ステップS902に進み、画像印刷プログラムは、ステップS901で表示した起動画面(ウインドウ)を、最前面に表示する。これにより、画像補正プログラムが元々表示していた元ウインドウを覆い隠すことが可能になる。次に、ステップS903に進み、画像印刷プログラムは、画像補正プログラムが表示するウインドウの表示状態を非表示に変更する。これにより、ステップS904において、画像補正プログラムの元ウインドウは非表示となる。
以上により、新たに表示した起動画面の表示位置を変更しても、元々起動していた元ウインドウは表示されず、連携動作する2つのプログラムは、ユーザに対して単に表示モードが変わっただけのように見せることが可能に成る。本実施形態のようにOSがウィンドウズ(登録商標)の場合では、ウインドウハンドルが取得できていれば、他のプロセスであっても任意のウインドウを非表示にすることが可能なので、上記手順でウインドウを入れ替えることが可能である。
ここで、図8において、ステップS802以降のタイミングで、かつステップS805の前に画像補正プログラムを終了することが考えられる。例えば、ウィンドウズ(登録商標)では、ALTキーとF4キーを同時に押下することによって、指定したウインドウを閉じるメニューを表示することができる。ここで、プログラムの終了を選択することで、プログラムを終了させることができる。このような操作を行うことで、起動側と、新たに起動したプログラムの連携が確立する前に、起動側のプログラムを終了することができる。このようにすると、プログラムが想定外の状態になり、本プログラム連携方式を安心して使うことが出来なくなってしまう。
そこで、図19のように、図8の処理に加え、連携開始から連携を確立するまでの間、画像補正プログラムの状態を、キー入力一般を無視するような状態に制御することで、上記のような状況を回避することができる。図19は、第1の実施形態における連携開始処理中の起動側プログラムの終了回避方法を示すフロー図である。尚、図19におけるステップS1902〜S1906の処理は、図8に示したステップS801〜S805の処理と同様の処理であるので、説明を省略する。図19に示すように、ステップS1901において、画像補正プログラムは、自身への入力信号を無視する状態に設定する。また、画像補正プログラムと画像印刷プログラムの連携が確立したステップS1906の次に、ステップS1907において、画像補正プログラムは、ステップS1901で設定した入力信号を無視する状態から入力信号を受け付ける状態に変更(復帰)する。
具体的には、ステップS1901やステップS1907のような処理は、ウィンドウズ(登録商標)では、例えば、EnableWindow関数を用い、ステップS1901でDisable状態、ステップS1907でEnable状態にすることで実現可能である。
尚、他のプロセスで起動しているウインドウを非表示にできないOSの場合には、例えば図10に示す処理を行えばよい。図10は、他のプロセスで起動しているウインドウの表示状態を変更できないOSの場合に、初期化フェイズ51において連携動作する2つのプログラムがあたかも一つのプログラムとして動作するように見せるための処理を示すフロー図である。
図10において、ステップS1001、S1002の処理は、図9に示したステップS901、S902の処理と同様なので、説明を省略する。次に、ステップS1003において、画像印刷プログラムは、相手の画像補正プログラムに対して「非表示要求コマンド」を送る。次に、ステップS1004において、非表示要求コマンドを受け取った画像補正プログラムが元ウインドウを非表示にする。
以上に示したように、初期化フェイズ51では、画像補正プログラムが、画像印刷プログラムとのプログラム間の通信経路を確立し、その通信経路を用いて、処理対象となるファイルのリストであるファイルリストを共有する処理を行う。また、その際に、画像印刷プログラムが表示するウインドウの位置や大きさを制御することで、画像補正プログラムと画像印刷プログラムの連携動作をあたかも一つのプログラムとして動作するように見せることができる。このように、2つのプログラムがあたかも一つのプログラムとして動作しているように見せることは、統一感があり、使用者にとって自然な操作環境であるといえる。
次に、図5に示した接続フェイズ52の処理の詳細について説明する。
<接続フェイズ>
接続フェイズ52は、画像補正プログラムと画像印刷プログラムのプログラム間通信が確立された状態で、必要なデータ(例えば、画像データ)の要求および転送を行うフェイズである。
本実施形態においては、必要な画像データの要求は、図7に示したコマンドのうち、DECODEを使って行う。本実施形態におけるプログラム間通信方式の特徴として、デコード要求時に必要な画像の情報を伝えるという点がある。例えば、本実施形態では、画像の色深度、画像サイズ(幅、高さ)、色空間をデコード要求時に指定する。図6に示したように、コマンドと合わせて通知できるパラメータのデータ長さには制限があるので、色深度と色空間の指定は、図7に示したDECODEコマンドの値として用意されている。具体的には、デコード要求コマンドの値は0x00〜0x7F(ここで、0xは16進数を示す)の値をとるが、この値の下位4bitで、要求する画像の色深度を指定する。例えば下位4bitで8(10進数)が指定されていれば、RGB各色8bitのデータを要求していることになる。ただし、下位4bitが0000b(ここで、bは2進数を示す)である場合には、画像データ本体は要求しないという指定になる。この場合には、デコード要求コマンドにより撮影時情報などの付属情報だけを要求したことになる。
次に、DECODEコマンドの上位4bitについて説明する。上位4bitのうち、上2bitは常に00bであり、下2bitで色空間を指定する。例えば本実施形態では、00bでsRGB、01bでAdobeRGB、10bでWideRGB、11bはその他の色空間とする。また、下2bitが11bの場合は、画像データと共に、ICCプロファイルを付与したデータを要求していることを示す。
また、DECODEコマンドに付随する図6に示したパラメータ1には、ファイル名の指定に用いる。ファイル名の指定は、前述のように初期化フェイズ51で共有したファイルリストでの番号で指定する。したがって、一度に共有できるファイル数の上限は、65536(2バイト分)である。また、図6のパラメータ2には、画像データの画像幅をピクセル単位で指定する。また、図6のパラメータ3には、画像データの画像の高さをピクセル単位で指定する。このようなコマンドとパラメータより構成される通信メッセージを用いることで、必要な画像ファイルを特定しつつ、要求する画像の情報を伝えることができる。
さらに、この接続フェイズ52における画像データ要求時の処理にも、本プログラム間通信方式の特徴がある。図11は、接続フェイズ52における画像データ要求時の処理を示すフロー図である。
図11に示すように、まず、ステップS1101において、画像印刷プログラムは、デコード要求を相手の画像補正プログラムに送る。具体的には、画像印刷プログラムは、デコード要求コマンドDECODEを相手の画像補正プログラムに送る。この時点で、画像印刷プログラムの動作はブロックされる。また、画像印刷プログラムは、共有メモリをロックする。
ここで、共有メモリをロックするとは、同一プログラム内からの共有メモリへのアクセスをブロックするという意味で、画像印刷プログラムがマルチスレッドであった場合に共有メモリへのアクセスが衝突するのを防ぐことができる。画像印刷プログラムがシングルスレッドである場合には、この処理は省略することができる。
次に、ステップS1102において、デコード要求を受け取った画像補正プログラムは、画像データやその付属情報を共有メモリに置く。共有メモリに置くデータが画像補正プログラムにより管理されるメモリ上に無い場合には、画像補正プログラムは、画像データをデコードし、補正処理を適用する処理を行い、デコードおよび補正処理後の画像データを共有メモリに置く。これにより、プログラム間通信メッセージに対する処理を終え、メッセージループに処理を戻す。この時点で、ステップS1101でブロックされていた画像印刷プログラムは、ブロック解除される。次に、ステップS1103において、画像印刷プログラムは、共有メモリから、デコード要求した画像データや付属情報を取り出した後、共有メモリのロックを解除する。
尚、上述したステップS1101ではデコード要求を出力した画像印刷プログラムがブロックされるが、この限りではなく、画像印刷プログラムの処理としてスレッドが使える環境では、デコード要求を出したスレッドの動作がブロックされる。このように動作させるために、例えばOSがウィンドウズ(登録商標)の場合には、DECODEコマンドをシステムで提供されているSendMessage関数を使って送信することで実現することが出来る。すなわち、SendMessage関数でメッセージを送る場合、そのメッセージに対する処理が終了するまでSendMessage関数はブロックされるというOSの仕様になっている。
このような動作をすることで、画像印刷プログラムから画像補正プログラムへの画像データ要求の処理が、あたかも一つの関数のように振る舞うようになる。もし、このような同期的な動作ではなく、夫々のプログラムが非同期に動作する場合には、画像を要求したプログラムは、画像データが共有メモリに完全に転送されたかどうかについて、画像を要求する度に気にかけなくてはならなくなり、プログラムの動作が複雑になりがちである。さらに、画像を要求されたプログラムの方も、共有メモリにデータを転送しても良いかどうかを常に意識して実装されなくてはならなくなる。以上の理由により、プログラム間の画像データの転送処理を完全に同期的に動作させることで、プログラムの実装コストを大幅に低減することが可能になる。
また、ステップS1101における画像のデコード要求時には、デコード要求コマンドおよびそのパラメータで画像サイズや色空間などの要求条件を指定することは前述の通りである。しかし、要求された側がその要求条件でデコード後の画像データを作成することができるかどうかは分からない。そこで本実施形態におけるプログラム間通信方式においては、ステップS1102におけるデコードおよび補正後の画像生成処理時に上述した要求条件はあくまで参考情報として扱う。すなわち、画像補正プログラムは、画像処理や画像印刷プログラムとの連携動作の高速化のために、その要求条件を使って最適な画像データを作成しても構わない。逆に、その要求条件を一切無視して画像データを作成しても構わない。そのため、画像補正プログラムが要求条件の一部または全部を無視した画像データを作成した場合には、デコード要求を行った側の画像印刷プログラムは、共有メモリより取得した画像データを自らのプログラムで期待するサイズや色に自身で変換する必要がある。仮に画像印刷プログラムにカラーマネジメントの機能が用意されていなかった場合、表示される画像の色は正確ではなくなってしまうが、これは画像印刷プログラムの仕様とみなすことができる。
以上に示したように、2つのプログラムがお互いに要求条件を強制しない「ゆるい」連携動作を行うことで、お互いのプログラムが持つ機能を利用することも、利用しないことも出来るようになる。これは、プログラムの動作環境や、プログラム仕様そのものに応じて、プログラムの連携の密度をダイナミックに変化させることができるということである。このようなプログラム間の「ゆるい」連携動作を実現した本実施形態におけるプログラム間通信方式は、大変有効な通信方式である。また、図5に示すように、画像印刷プログラム51から複数回のデコード要求が画像補正プログラムに出力されてもよい。この場合は、図11に示した処理が複数回行われる。
また、ステップS1103で画像印刷プログラムが共有メモリから取得するデータは、画像データと付属情報となっているが、この付属情報とは例えば、撮影時情報やICCプロファイルなどが考えられる。例えば、色空間がsRGB、AdobeRGB、WideRGB以外である場合、画像データと共にICCプロファイルを転送する。色空間がsRGB、AdobeRGB、WideRGBである場合には、撮影時情報に色空間情報を格納する。このようにすることで、要求する色空間と作成した画像データの色空間が異なる場合でも、正しい色空間情報を伝えることができるようになる。また、共有メモリを介して受け渡される画像データはDIB(Device Independent Bitmap)形式とする。DIB形式はウィンドウズ(登録商標)のシステム標準のデータ形式であり、受け取ったデータをそのまま描画に使えるという利点がある。
ここで、共有メモリに格納する画像データおよび付属情報のフォーマット例について説明する。図12は、共有メモリに格納する画像データおよび付属情報のフォーマット例を示す図である。図12に示すように、共有メモリの先頭には、各データへのオフセットとデータサイズが格納されており、これを参照することで、各プログラムは必要なデータにアクセスすることが可能になる。各データへのオフセットは、共有メモリ先頭からデータ先頭までのバイト数である。データサイズが0の場合、該当するデータは格納されていないことを示す。図12に示す“状態コード”は、本実施形態では常に0である。また、“ヘッダサイズ”は、図12のフォーマット例では画像データ、撮影時情報、ICCプロファイルの各オフセットとデータサイズで、計24byteになる。また、オフセットとデータサイズの後には、画像データそのものが格納される領域、撮影時情報が格納される領域、ICCプロファイルが格納される領域が続く。
次に、図5に示した終了フェイズ53の処理の詳細について説明する。
<終了フェイズ>
図5に示した終了フェイズ53は、上述したようにプログラム間通信の接続を切断するフェイズである。本実施形態においては、画像印刷プログラムが表示する図4に示す画像選択画面30において「戻る」ボタン31の押下によりこの処理が開始する。また、OSがウィンドウズ(登録商標)の場合には、ウインドウの右上に用意される「ウインドウを閉じる」ボタンでも、ウインドウを表示するプログラムを終了することが出来る。
本実施形態では「戻る」ボタン31が押下された場合、画像印刷プログラムを終了すると共に、画像補正プログラムに制御を戻す。しかし、「ウインドウを閉じる」ボタンを押下した場合、画像補正プログラムと画像印刷プログラムの両方を終了する。このような動作にすることで、2つのプログラムが連携動作する場合に、利用者に対して完全に一つのアプリケーションプログラムとして動作しているかのように見せることができる。このように、2つのプログラムがあたかも一つのプログラムとして動作しているように見せることは、統一感があり、使用者にとって自然な操作環境であるといえる。
具体的には、本実施形態において、利用者により「戻る」ボタン31が押下された場合のプログラム間の処理は、起動された画像印刷プログラムだけを終了するためのコマンドとして、図7に示したコマンドEND_PROCESSを利用する。このコマンドを受け取った画像補正プログラムは、単に画像印刷プログラムとのプログラム間通信処理のみを終了する。また、本実施形態における「ウインドウを閉じる」ボタンを押下した場合の処理は、双方のプログラムを終了するためのコマンドとして、図7に示したコマンドEND_PARENTを利用する。このコマンドを受け取った画像補正プログラムは、直ちにプログラム自身の終了処理を実行し、プログラムを終了する。
詳細には、「戻る」ボタン31が押下された場合には図13に示す処理を行い、「ウインドウを閉じる」ボタンを押した場合には、画像印刷プログラムは、画像補正プログラムに対してEND_PARENTコマンドを送信してプログラムを終了する。双方のプログラムは、END_PARENTコマンドを受け取った場合、直ちにプログラムの終了処理を行う仕様になっている。
また、上述したように「戻る」ボタン31が押下された時点では、連携動作している画像補正プログラムのウインドウは非表示の状態になっている。そこで、END_PROCESSコマンドが発行された場合、画像補正プログラムのウインドウを表示状態に戻さなくてはならない。以下、画像印刷プログラムを終了する際に画像補正プログラムのウインドウを表示状態に戻す処理について説明する。図13は、画像印刷プログラムを終了する際に画像補正プログラムのウインドウを表示状態に戻す処理を示す図である。
図13に示すように、ステップS1301において、画像印刷プログラムは、元々起動していた画像補正プログラムの元ウインドウを、後で起動した画像印刷プログラムのウインドウ(画像選択画面30)と同一の表示位置・大きさで表示させる。これにより、画像補正プログラムの元ウインドウが画像印刷プログラムのウインドウと同じ位置・大きさで表示される。次に、ステップS1302において、画像印刷プログラムは、ステップS1301で表示した画像印刷プログラムの元ウインドウを、最前面に表示させる。これにより、画像補正プログラムの元ウインドウが画像印刷プログラムのウインドウの前に表示される。このようにすることで、後で起動した画像印刷プログラムのウインドウを覆い隠すことができる。
次に、ステップS1303において、画像印刷プログラムは、画像印刷プログラムのウインドウの表示状態を非表示に変更する。これにより画像印刷プログラムのウインドウは非表示となる。また、非表示にした後に、画像印刷プログラムを終了する。
このような処理を行うことで、利用者に対して、異なるプログラムにスイッチしたのではなく、同一プログラムにおいてモードが切り替わっただけのように見せることが可能になる。このように、2つのプログラムがあたかも一つのプログラムとして動作しているように見せることは、統一感があり、使用者にとって自然な操作環境であるといえる。また、初期化フェイズ51の時と同様に、他のプロセスの表示状態を変更できないOSにおいては、図13の処理の代わりに図14に示す処理を行う。
図14は、他のプロセスで起動しているウインドウの表示状態を変更できないOSの場合に、終了フェイズ53において連携動作する2つのプログラムがあたかも一つのプログラムとして動作するように見せるための処理を示すフロー図である。図14に示すように、まず、ステップS1401において、画像印刷プログラムは、元々起動していた画像補正プログラムに対し、表示要求コマンドを送信する。次に、ステップS1402において、表示要求コマンドを受け取った画像補正プログラムは、ウインドウの表示位置および大きさを通信相手(画像印刷プログラム)と同じ位置、同じ大きさに変更した後、自身を表示状態に変更する。また、同時にそのウインドウを最前面に移動する。
次に、ステップS1403において、画像補正プログラムは、通信相手である画像印刷プログラムに対して終了要求コマンドを送信する。次に、ステップS1404において、終了要求コマンドを受け取った画像印刷プログラムは、自身のウインドウの表示状態を非表示に変更した後、自身の終了処理を行い、プログラムを終了する。
以上述べたように、本実施形態では、ウインドウの表示状態をコントロールすることで利用者に対して同一のプログラムにおいて表示が切り替わったように見せる仕様としたが、この仕様を省略しても構わない。また、上述した第1のプログラムと第2のプログラムをネットワーク接続された異なる装置で夫々動作させても構わない。
〔第2の実施形態〕
第1の実施形態で述べたプログラム間通信方式においては、画像データと撮影時情報をプログラム間で転送する構成であったが、第2の実施形態のプログラム間通信方式においては、画像データと撮影時情報の他に印刷用補正情報(以下、印刷用情報とする)もプログラム間で転送する構成である。尚、第2の実施形態におけるコンピュータシステムのハードウェア構成は、図1に示した第1の実施形態におけるコンピュータシステムのハードウェア構成と同様であるので説明を省略する。
Exif(Exchangeable image file format)2.2(Exif−Print)と呼ばれる規格がある。これは、撮影時情報を使った画像の自動補正に関する規格である。上述した第1の実施形態では、印刷時の画像補正は行わなかったが、本実施形態の画像印刷プログラムでは、撮影時情報によって、印刷対象画像を自動補正する。このような印刷用自動補正処理によって、撮影状況に応じて最適なプリントを提供することができる。尚、印刷用自動補正処理の内容については、既存の技術であるので説明を省略する。
第1の実施形態のように画像補正プログラムと画像印刷プログラムが連携動作した場合には、画像印刷プログラムにおける印刷用自動補正処理を、画像補正プログラム側でコントロールする方が好ましい。それは、画像補正プログラムで適用した補正と印刷用自動補正処理が互いに影響し合い、思わぬ出力結果になることがあるためである。しかし、画像と一緒に撮影時情報を合わせて印刷する場合には、画像補正プログラム側で撮影時情報を修正するのは望ましいことではない。そこで、本実施形態の画像補正プログラムは、図15に示すように撮影時情報としてオリジナルの撮影時情報61と、オリジナルの撮影時情報61と印刷時自動補正処理のために補正した撮影時情報(以下、印刷用撮影時情報とする)の差分情報である印刷用情報62とを画像印刷プログラムへ送る。
図15は、第2の実施形態のプログラム間通信方式における撮影時情報の処理を示す図である。図15の例では、画像補正プログラム側で印刷用撮影時情報としてオリジナルの撮影時情報61の鮮やかさを調整したので、その差分情報となる印刷用情報62では鮮やかさに関するパラメータのみを含む構成である。尚、図15に示すように撮影時情報として、シャッタ速度の値、絞り値(f値)、鮮やかさ値(±)、印刷時自動補正のオン/オフに関する情報が含まれている。
また、図15に示すように、画像印刷プログラム側では、処理t1において、画像65aと、オリジナルの撮影時情報61を利用する撮影時情報65bとを並べた撮影時情報付きの印刷レイアウト65を作成する。次に、処理t2において、画像印刷プログラムは、オリジナルの撮影時情報61に、印刷用情報62を上書きして合成した印刷用撮影時情報を作成する。次に、処理t3において、画像印刷プログラムは、合成した印刷用撮影時情報を基に画像65aに対して印刷用自動補正処理を行う。以上により、出力デバイス105(プリンタ)から、図15に示すような印刷レイアウト65の印刷物が出力される。また、その印刷物の画像は、画像補正プログラムで補正され、その補正を考慮した印刷用自動補正処理まで施されたものである。
このような処理を行うことで、撮影時情報を画像と合わせて印刷する場合に、印刷する撮影時情報はオリジナルのままで、印刷時自動補正結果は画像補正プログラム側からコントロールすることができ、最適な印刷物を得ることができる。
また、第1の実施形態では、画像要求時の共有メモリ上でのデータ配置は図12のようになっていたが、本実施形態では図16のような配置とする。図16に示すように、図12の場合と比べて、ヘッダ部分に“印刷用情報へのオフセット”と“印刷用情報のデータサイズ”がそれぞれ4byte分増えたので、ヘッダサイズは32byteになる。
尚、本実施形態におけるプログラム間通信方式では、画像補正プログラム側で、印刷用自動補正処理を禁止する設定にすることもできるし、撮影時情報を画像補正内容に応じて書き換えた状態で印刷用自動補正処理を実行させる設定にすることも可能である。ここで、本実施形態のプログラム間通信方式においては、画像データと撮影時情報の他に印刷用補正情報(以下、印刷用情報とする)もプログラム間で転送する構成であったが、プログラム間で転送する他の情報としてフル解像度情報を適用する構成も考えられる。このフル解像度情報の転送は、現画像を展開したときのサイズを勝手に変えて欲しくない場合に、そのまま送り返し欲しいという要求によるものである。
〔第3の実施形態〕
第1の実施形態では、プログラム間で大量のデータを転送するための共有メモリのサイズが、転送対象となるデータのサイズより小さい場合の処理については触れていなかった。第3の実施形態におけるプログラム間通信方式では、このような場合に対処するため共有メモリの再配置処理が可能な構成を有する。具体的には、第3の実施形態では、第1の実施形態で常に0であった、状態コードを利用して共有メモリの再配置処理を行う。共有メモリが足りない場合に、図17に示す手順で共有メモリを再配置処理する。
図17は、第3の実施形態におけるプログラム間通信方式で利用する共有メモリの再配置処理を示す図である。図17に示すように、まず、ステップS1701において、データを転送する側のプログラム(以下、単にプログラムとする)は、新しい共有メモリの領域を確保する。共有メモリの識別名は24バイト以下になるように設定する。また、識別名はNullターミネイトする。つまり、識別名の末尾は必ず0x00である。次に、ステップS1702に進み、プログラムは、古い領域の先頭4バイト(状態コード)に、0xFFFFFFFFを格納する。通常はこの後ろに図12や図16に示したようなデータが続くが、状態コードが0xFFFFFFFFである場合には、新しい共有メモリの識別名を格納する。次に、ステップS1703に進み、プログラムは、新しい共有メモリの領域を作成して、その識別名を記録する。次に、ステップS1704に進み、プログラムは、古い共有メモリの領域をクローズする。以上により、共有メモリの再配置処理を終了する。上述した共有メモリの再配置処理後に、プログラムは、新しい共有メモリに対して、転送対象であるデータを格納する。
次に、読み込み側(データを転送される側)のプログラム(以下、読み込み側プログラムとする)の処理について説明する。共有メモリのデータを読み込む場合、第1〜第2の実施形態では特に状態コードをチェックしなかったが、本実施形態では状態コードをチェックして、新しい共有メモリが確保されたかどうかを確認する。図18は、読み込み側プログラムにおける新たな共有メモリの利用開始処理を示すフロー図である。
まず、ステップS1801において、読み込み側プログラムは、共有メモリの状態コードをチェックする。ここで、状態コードが0xFFFFFFFFの場合(ステップS1801のNo)には、ステップS1802へ進み、読み込み側プログラムは、新たな共有メモリの識別名を取得する。また、状態コードが0の場合(ステップS1801のYes)には、新たな共有メモリが再配置されていないことを示しているので、読み込み側プログラムは、新たな共有メモリの利用開始処理を終了する。
上述したステップ1802の具体的な処理として、読み込み側プログラムは、共有メモリの先頭から5バイト目以降を読み込み、新しい共有メモリの識別名を取得する。次に、ステップS1803において、読み込み側プログラムは、古い共有メモリをクローズする。次に、ステップS1804において、読み込み側プログラムは、新しい共有メモリをオープンする。以上により、読み込み側プログラムにおける新たな共有メモリの利用開始処理を終了する。
尚、OSがウィンドウズ(登録商標)であれば、共有メモリが参照している全てのプログラムからクローズされた場合には、システムからその共有メモリの領域が削除される。以上に述べたような処理を行うことで、共有メモリの再割り当てを行うことが可能になる。
〔他の応用例〕
上述した実施形態によるプログラム間通信方式を用いると、プログラム間の通信処理を局所化することができる。したがって、プログラム間通信のための処理を、プログラム間通信モジュールという形でカプセル化することができる。これによって、プログラムの開発者にプログラム間通信の手順などを意識させることなくプログラム間通信を実現させることができ、開発コストを低減することが可能になる。以下に、上述した実施形態におけるプログラム間通信方式の他の応用例として、上記のようなプログラム間通信の処理をモジュール化する手法の概要について説明する。
上述した実施形態によるプログラム間通信方式では、図7に示したコマンドがやりとりされるだけになっている。ここで、図7に示したコマンドの内、DECODEコマンド以外は、自動応答可能であることを以下に説明する。
SEND_MESSAGE_IDコマンドを受け取った時に返す値は、このコマンドを受け取る時点で通信用メッセージIDが確定していることになる。これは、SEND_WINDOW_HANDLEを受け取ったときに返すべきウインドウハンドルの値も同様である。したがって、この2つについては、通信用メッセージIDを処理するルーチンの先頭で、自動応答することが可能である。
次に、END_PROCESSコマンドとEND_PARENTコマンドであるが、これらも受信後の処理は決まっている。END_PROCESSコマンドの場合は、プロセス間通信用の情報を初期化して、通信を切断すれば良い。また、END_PARENTコマンドの場合は、プログラムの終了処理を開始するだけである。OSがウィンドウズ(登録商標)の場合には、プログラムのルートウインドウに対して、WM_CLOSEメッセージを送ると、プログラムの終了処理が開始される。したがって、この部分の処理も、SEND_MESSAGE_IDコマンドやSEND_WINDOW_HANDLEコマンドと同様に自動応答することが可能である。
さらに、初期化フェイズ51の処理についても、プログラムの起動時オプションで必要な情報を伝えるので、起動オプションを解析することで、他のプログラムから起動されたかどうかの判断が可能である。さらに、解析が完了した時点で通信相手のウインドウハンドルや通信用メッセージIDが取得できるので、ここに対して、プログラムのウインドウハンドルや通信用メッセージIDを通知するだけでよい。
ファイルのリスト共有についても、前述のように通信経路が確定した時点で共有メモリの識別名も伝達されるので、プログラム作成者には共有メモリを使っていることを意識させることなくファイル名の共有が可能になる。
以上述べたように、本プログラム間通信方式では、通信に必要な部分の殆どを、プログラム作成者から隠蔽することが可能になる。通信部分をプログラム作成者に対して隠蔽することで、通信のタイミングなどを共通化し、スムーズなプログラム間通信を実現することができるようになる。これにより、例えば上述した実施形態のようにプログラム間で画像データの転送を行う場合には、本プログラム間通信方式を利用して通信手順が局所化されていることの効果がより顕著になる。
また、上述した実施形態では、図5、図8〜図11、図13〜図15、図17、図18に示す各処理を実現する為のプログラムを一次記憶102に読み込んでCPU101が実行することによりその機能を実現させるものであったが、この限りではなく、各処理の全部または一部の機能を専用のハードウェアにより実現してもよい。
また、上述した二次記憶103は、光磁気ディスク装置、フラッシュメモリ等の不揮発性のメモリや、CD−ROM等の読み出しのみが可能な記録媒体、RAM以外の揮発性のメモリ、あるいはこれらの組み合わせによるコンピュータ読み取り、書き込み可能な記録媒体より構成されてもよい。
また、図5、図8〜図11、図13〜図15、図17、図18において各種処理を行う機能を実現する為のプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各処理を行っても良い。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現する為のものであっても良い。さらに、前述した機能をコンピュータシステムに既に記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
また、上記のプログラムを記録したコンピュータ読み取り可能な記録媒体等のプログラムプロダクトも本発明の実施形態として適用することができる。上記のプログラム、記録媒体、伝送媒体およびプログラムプロダクトは、本発明の範疇に含まれる。
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
第1の実施形態におけるコンピュータシステムのハードウェア構成を示す図である。 画像補正プログラムにより出力デバイス105に表示される画像選択画面例および画像補正画面例を示す図である。 図2の画像選択画面20で複数の画像を選択した場合の画像補正画面例を示す図である。 画像印刷プログラムにより出力デバイス105に表示される画像選択画面例と印刷条件設定画面例を示す図である。 図1に示したコンピュータシステムにおけるプログラム間の通信手順を示す図である。 本実施形態における通信用メッセージIDに含ませるコマンドおよびパラメータ割り当て例を示す図である。 図6のコマンド部において、上位1バイトに相当する定義例の一覧を示す図である。 図5に示した初期化フェイズ51の処理の詳細を示す図である。 初期化フェイズ51において連携動作する2つのプログラムがあたかも一つのプログラムとして動作するように見せるための処理を示すフロー図である。 他のプロセスで起動しているウインドウの表示状態を変更できないOSの場合に、初期化フェイズ51において連携動作する2つのプログラムがあたかも一つのプログラムとして動作するように見せるための処理を示すフロー図である。 接続フェイズ52における画像データ要求時の処理を示すフロー図である。 共有メモリに格納する画像データおよび付属情報のフォーマット例を示す図である。 画像印刷プログラムを終了する際に画像補正プログラムのウインドウを表示状態に戻す処理を示す図である。 他のプロセスで起動しているウインドウの表示状態を変更できないOSの場合に、終了フェイズ53において連携動作する2つのプログラムがあたかも一つのプログラムとして動作するように見せるための処理を示すフロー図である。 第2の実施形態のプログラム間通信方式における撮影時情報の処理を示す図である。 第2の実施形態における共有メモリに格納する画像データおよび付属情報のフォーマット例を示す図である。 第3の実施形態におけるプログラム間通信方式で利用する共有メモリの再配置処理を示す図である。 読み込み側プログラムにおける新たな共有メモリの利用開始処理を示すフロー図である。 第1の実施形態における連携開始処理中の起動側プログラムの終了回避方法を示すフロー図である。
符号の説明
101 CPU
102 一次記憶
103 二次記憶
104 入力デバイス
105 出力デバイス

Claims (19)

  1. 共通のメディア・オブジェクトを連携して処理可能な第1のプログラムと第2のプログラムの間におけるプログラム間通信を行うプログラム間通信装置であって、
    前記第1のプログラムと前記第2のプログラム間に一対の通信経路を確立する通信経路確立手段と、
    前記第1のプログラムおよび前記第2のプログラムが共有する共有メモリのメモリ領域を確保する共有メモリ確保手段と、
    前記メディア・オブジェクトを特定する特定情報および前記特定情報により特定したメディア・オブジェクトの処理を要求する要求情報を、前記通信経路確立手段が確立した前記通信経路を用いて前記第1のプログラムから前記第2のプログラムへ通知する通知手段と、
    前記第2のプログラムが前記通知手段により通知された前記特定情報で特定されるメディア・オブジェクトに対して前記要求情報に応じた処理を行った場合に、処理後のメディア・オブジェクト本体のデータおよび前記メディア・オブジェクトに付属する付属情報を前記共有メモリ確保手段が確保した前記共有メモリに格納することで前記第2のプログラムから前記第1のプログラムへ前記処理後のメディア・オブジェクト本体のデータおよび前記付属情報を転送する転送手段と
    を具備することを特徴とするプログラム間通信装置。
  2. 前記第1のプログラムと前記第2のプログラムは、複数のプログラムを並列実行可能な一つのコンピュータ上で動作することを特徴とする請求項1に記載のプログラム間通信装置。
  3. 前記通信経路確立手段は、前記第1のプログラムおよび前記第2のプログラムのウインドウを制御するウインドウシステムにおけるウインドウ識別情報とウインドウ処理関数を特定するメッセージ識別子とを利用することを特徴とする請求項1または請求項2に記載のプログラム間通信装置。
  4. 前記通信経路確立手段は、前記第1のプログラムが前記第2のプログラムを起動する際に、前記第1のプログラムのウインドウにおける前記ウインドウ識別情報である第1のウインドウ識別情報と前記第1のプログラムのウインドウにおける前記メッセージ識別子である第1のメッセージ識別子とを少なくとも含む起動時パラメータを前記第2のプログラムに送信することを特徴とする請求項3に記載のプログラム間通信装置。
  5. 前記通信経路確立手段は、前記起動時パラメータを前記第2のプログラムに送信した場合に、前記第2のプログラムのウインドウにおける前記ウインドウ識別情報である第2のウインドウ識別情報と前記第2のプログラムのウインドウにおける前記メッセージ識別子である第2のメッセージ識別子とを少なくとも含む通信経路情報を、前記起動時パラメータを基に送信先として特定した前記第1のプログラムへ送信することを特徴とする請求項4に記載のプログラム間通信装置。
  6. 前記共有メモリは、メモリ識別情報により前記メモリ領域確保手段が確保したメモリ領域を特定でき、
    前記通信経路確立手段は、前記起動時パラメータおよび前記通信経路情報に前記メモリ識別情報を更に含めることを特徴とする請求項4または請求項5に記載のプログラム間通信装置。
  7. 前記通信経路確立手段が利用する前記ウインドウ識別情報と前記メッセージ識別子とを基に、前記第1のプログラムのウインドウと前記第2のプログラムのウインドウにおける表示位置および大きさを同じに制御するウインドウ制御手段を更に具備することを特徴とする請求項3から請求項6のいずれか1項に記載のプログラム間通信装置。
  8. 前記メディア・オブジェクトが画像データを含むものである場合に、前記通知手段は、前記画像データの解像度、色深度、色空間識別情報のいずれか一つまたは複数の組み合わせを含む前記要求情報を、前記第1のプログラムから前記第2のプログラムへ通知することを特徴とする請求項1から請求項7のいずれか1項に記載のプログラム間通信装置。
  9. 前記第2のプログラムが前記画像データを補正または加工する画像処理プログラムであり、前記要求情報に前記画像データの解像度、色深度、色空間識別情報のいずれか複数の組み合わせを含む場合に、前記第2のプログラムは、前記特定情報で特定されるメディア・オブジェクトに対して、前記要求情報に含まれる複数の要求において実行可能な要求のみに応じた処理を行うことを特徴とする請求項8に記載のプログラム間通信装置。
  10. 前記要求情報において要求したにも関わらず前記第2のプログラムの処理において実行されなかった不実行の要求がある場合に、前記第1のプログラムは、前記第2のプログラムが処理後のメディア・オブジェクトに対して、前記不実行の要求に応じた処理の一部または全部を行うことを特徴とする請求項9に記載のプログラム間通信装置。
  11. 前記メディア・オブジェクトが画像データを含むものである場合に、前記転送手段が前記共有メモリに格納する付属情報には、前記画像データの撮影に関する情報である撮影時情報および/または前記画像データの印刷時に前記画像データを補正するための印刷用情報を含むことを特徴とする請求項1から請求項10のいずれか1項に記載のプログラム間通信装置。
  12. 前記第1のプログラムが前記画像データを印刷装置により印刷させる画像印刷プログラムであり、前記付属情報に前記撮影時情報および/または前記印刷用情報が少なくとも含まれる場合に、前記第2のプログラムが処理後の画像データを前記共有メモリより読み出して、前記撮影時情報および/または前記印刷用情報を用いて補正する補正手段を更に具備することを特徴とする請求項11に記載のプログラム間通信装置。
  13. 前記メディア・オブジェクト本体のデータおよび前記付属情報を合わせたデータサイズが前記共有メモリのメモリサイズより大きい場合に、新たな共有メモリとなるメモリ領域を確保し、前記新たな共有メモリへ前記メディア・オブジェクト本体のデータおよび前記付属情報を再割り当てする再割り当て手段を更に具備することを特徴とする請求項1から請求項12のいずれか1項に記載のプログラム間通信装置。
  14. 前記通信経路確立手段、前記共有メモリ確保手段、前記通知手段、前記転送手段、前記ウインドウ制御手段、前記補正手段、前記再割り当て手段の一部または全部は、前記第1のプログラムおよび前記第2のプログラムに実装されていることを特徴とする請求項1から請求項13のいずれか1項に記載のプログラム間通信装置。
  15. 前記ウインドウ制御手段は、前記第1のプログラムのウインドウと同じ表示位置及び同じ大きさで前記第2のプログラムのウインドウを表示してから、前記第1のプログラムのウインドウを非表示に制御することを特徴とする請求項7に記載のプログラム間通信装置。
  16. 前記ウインドウ制御手段が前記第1のプログラムのウインドウから前記第2のプログラムのウインドウに表示を切り替える処理を行う際に、前記第2のプログラムを起動する直前に前記第1のプログラムに対する入力信号を無視する状態に制御し、前記第1のプログラムと前記第2のプログラムとの連携が確立した後で、前記第1のプログラムに対する入力信号を無視する状態を解除するよう制御する状態制御手段を更に具備することを特徴とする請求項15に記載のプログラム間通信装置。
  17. 共通のメディア・オブジェクトを連携して処理可能な第1のプログラムと第2のプログラムの間におけるプログラム間通信を行うプログラム間通信装置を用いたプログラム間通信方法であって、
    前記第1のプログラムと前記第2のプログラム間に一対の通信経路を確立する第1のステップと、
    前記第1のプログラムおよび前記第2のプログラムが共有する共有メモリのメモリ領域を確保する第2のステップと、
    前記メディア・オブジェクトを特定する特定情報および前記特定情報により特定したメディア・オブジェクトの処理を要求する要求情報を、前記第1のステップで確立した前記通信経路を用いて前記第1のプログラムから前記第2のプログラムへ通知する第3のステップと、
    前記第2のプログラムが前記第3のステップにより通知された前記特定情報で特定されるメディア・オブジェクトに対して前記要求情報に応じた処理を行った場合に、処理後のメディア・オブジェクト本体のデータおよび前記メディア・オブジェクトに付属する付属情報を前記第2のステップで確保した前記共有メモリに格納することで前記第2のプログラムから前記第1のプログラムへ前記処理後のメディア・オブジェクト本体のデータおよび前記付属情報を転送する第4のステップと
    を有することを特徴とするプログラム間通信方法。
  18. 共通のメディア・オブジェクトを連携して処理可能な第1のプログラムと第2のプログラムの間におけるプログラム間通信を行うプログラム間通信装置用のプログラムを記録した記録媒体であって、
    前記第1のプログラムと前記第2のプログラム間に一対の通信経路を確立する第1のステップと、
    前記第1のプログラムおよび前記第2のプログラムが共有する共有メモリのメモリ領域を確保する第2のステップと、
    前記メディア・オブジェクトを特定する特定情報および前記特定情報により特定したメディア・オブジェクトの処理を要求する要求情報を、前記第1のステップで確立した前記通信経路を用いて前記第1のプログラムから前記第2のプログラムへ通知する第3のステップと、
    前記第2のプログラムが前記第3のステップにより通知された前記特定情報で特定されるメディア・オブジェクトに対して前記要求情報に応じた処理を行った場合に、処理後のメディア・オブジェクト本体のデータおよび前記メディア・オブジェクトに付属する付属情報を前記第2のステップで確保した前記共有メモリに格納することで前記第2のプログラムから前記第1のプログラムへ前記処理後のメディア・オブジェクト本体のデータおよび前記付属情報を転送する第4のステップと
    を前記プログラム間通信装置に実行させるためのプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
  19. 共通のメディア・オブジェクトを連携して処理可能な第1のプログラムと第2のプログラムの間におけるプログラム間通信を行うプログラム間通信装置用のプログラムであって、
    前記第1のプログラムと前記第2のプログラム間に一対の通信経路を確立する第1のステップと、
    前記第1のプログラムおよび前記第2のプログラムが共有する共有メモリのメモリ領域を確保する第2のステップと、
    前記メディア・オブジェクトを特定する特定情報および前記特定情報により特定したメディア・オブジェクトの処理を要求する要求情報を、前記第1のステップで確立した前記通信経路を用いて前記第1のプログラムから前記第2のプログラムへ通知する第3のステップと、
    前記第2のプログラムが前記第3のステップにより通知された前記特定情報で特定されるメディア・オブジェクトに対して前記要求情報に応じた処理を行った場合に、処理後のメディア・オブジェクト本体のデータおよび前記メディア・オブジェクトに付属する付属情報を前記第2のステップで確保した前記共有メモリに格納することで前記第2のプログラムから前記第1のプログラムへ前記処理後のメディア・オブジェクト本体のデータおよび前記付属情報を転送する第4のステップと
    を前記プログラム間通信装置に実行させることを特徴とするプログラム。
JP2004150737A 2003-07-16 2004-05-20 プログラム間通信装置、プログラム間通信方法、コンピュータ読み取り可能な記録媒体およびプログラム Expired - Fee Related JP4458929B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2004150737A JP4458929B2 (ja) 2003-07-16 2004-05-20 プログラム間通信装置、プログラム間通信方法、コンピュータ読み取り可能な記録媒体およびプログラム
US10/887,781 US7434233B2 (en) 2003-07-16 2004-07-09 Inter-program communication apparatus, inter-program communication method, computer-readable recording medium, and program
CNB2004100709387A CN1329826C (zh) 2003-07-16 2004-07-16 程序间通信装置和方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2003275713 2003-07-16
JP2004150737A JP4458929B2 (ja) 2003-07-16 2004-05-20 プログラム間通信装置、プログラム間通信方法、コンピュータ読み取り可能な記録媒体およびプログラム

Publications (2)

Publication Number Publication Date
JP2005050307A true JP2005050307A (ja) 2005-02-24
JP4458929B2 JP4458929B2 (ja) 2010-04-28

Family

ID=34067397

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004150737A Expired - Fee Related JP4458929B2 (ja) 2003-07-16 2004-05-20 プログラム間通信装置、プログラム間通信方法、コンピュータ読み取り可能な記録媒体およびプログラム

Country Status (3)

Country Link
US (1) US7434233B2 (ja)
JP (1) JP4458929B2 (ja)
CN (1) CN1329826C (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007156511A (ja) * 2005-11-30 2007-06-21 Brother Ind Ltd 画像データ送信システム、および画像データ送信システム用プログラム
JP2007226670A (ja) * 2006-02-24 2007-09-06 Canon Inc 情報処理方法およびプログラム、情報処理装置
JP2009087119A (ja) * 2007-10-01 2009-04-23 Hitachi Ltd 操作支援プログラム
JP2010140281A (ja) * 2008-12-11 2010-06-24 Canon Inc アプリケーションプログラムとプリンタドライバとの間のデータ通信方法およびプログラム
JP2012212348A (ja) * 2011-03-31 2012-11-01 Brother Ind Ltd 画像処理プログラム、情報処理端末装置および情報処理端末装置の制御方法
KR101716861B1 (ko) * 2016-10-04 2017-03-15 (주)볼트마이크로 영상데이터 관리 장치 및 방법
JP2017219961A (ja) * 2016-06-06 2017-12-14 キヤノン株式会社 情報処理装置、制御方法、及びプログラム

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4415961B2 (ja) * 2006-03-15 2010-02-17 ブラザー工業株式会社 リムーバブルメディア装置およびデータ制御プログラム
JP4702123B2 (ja) * 2006-03-15 2011-06-15 ブラザー工業株式会社 表示制御装置、表示制御プログラム、画像記憶装置、通信プログラム、画像表示システム、および通信方法
CN102523481A (zh) * 2011-12-09 2012-06-27 成都东方盛行电子有限责任公司 一种节目播出系统用数据交换缓存的方法
DE102012014174A1 (de) * 2012-07-16 2014-01-16 Rational Aktiengesellschaft Verfahren zur Anzeige von Parametern eines Garprozesses und Anzeigevorrichtung für ein Gargerät
GB2506263B (en) * 2012-08-31 2020-10-21 Jpmorgan Chase Bank Na System And Method for Sharing Information In A Private Ecosystem
US8984439B2 (en) * 2013-02-14 2015-03-17 Citibank, N.A. Methods and systems for managing a graphical user interface
CN105468505B (zh) * 2014-08-12 2018-12-28 腾讯科技(深圳)有限公司 覆盖率测试方法及覆盖率测试装置
US10459911B2 (en) 2016-09-27 2019-10-29 Bank Of America Corporation System and method for inter-program file control communication

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2039027C (en) * 1990-05-22 1998-07-07 Stephen Troy Eagen Method and apparatus for assisting in the presentation and removal of windows
JPH04251338A (ja) * 1990-10-10 1992-09-07 Fuji Xerox Co Ltd プロセス間通信の制御方式
US5301268A (en) * 1990-10-10 1994-04-05 Fuji Xerox Co., Ltd. Apparatus for transferring information between different window systems
AU4219693A (en) * 1992-09-30 1994-04-14 Apple Computer, Inc. Inter-task buffer and connections
CA2105055C (en) * 1993-01-05 1998-06-16 Jeffrey Scott Boston Window restoration methods for halted debuggee window applications
US5717880A (en) * 1993-09-06 1998-02-10 Kabushiki Kaisha Toshiba Method and apparatus for relaying events and requests in a windows systems
US6026416A (en) * 1996-05-30 2000-02-15 Microsoft Corp. System and method for storing, viewing, editing, and processing ordered sections having different file formats
US6161148A (en) * 1996-09-27 2000-12-12 Kodak Limited Computer method and apparatus for interactive objects controls
US20030079046A1 (en) * 1996-11-27 2003-04-24 Sony Europa B.V. Data communication method using typed continuation
JP2000505224A (ja) * 1996-11-27 2000-04-25 ソニー オイローパ ビーブイ タイプされた継続を使用したデータ通信方法
US5867633A (en) * 1996-12-09 1999-02-02 Hewlett-Packard Company Method and apparatus for processing and printing documents
US6181338B1 (en) * 1998-10-05 2001-01-30 International Business Machines Corporation Apparatus and method for managing windows in graphical user interface environment
US7120914B1 (en) * 2000-05-05 2006-10-10 Microsoft Corporation Method and system for navigating between program modules
US6654036B1 (en) * 2000-06-05 2003-11-25 International Business Machines Corporation Method, article of manufacture and apparatus for controlling relative positioning of objects in a windows environment
JP4171574B2 (ja) * 2000-07-21 2008-10-22 富士フイルム株式会社 画像処理条件決定装置および画像処理条件決定プログラム記憶媒体
JP2002063038A (ja) * 2000-08-16 2002-02-28 Sony Corp 情報処理装置及び情報処理方法並びにロボット装置
US6829769B2 (en) * 2000-10-04 2004-12-07 Microsoft Corporation High performance interprocess communication
US6753886B1 (en) * 2000-10-31 2004-06-22 Cisco Technology, Inc. Methods and apparatus for communicating messages in a computer display
US7432304B2 (en) * 2001-05-30 2008-10-07 The Regents Of The University Of Michigan Small molecule antagonists of Bcl-2 family proteins
JP2003060839A (ja) * 2001-06-04 2003-02-28 Canon Inc 画像通信装置、画像処理装置、画像通信方法、画像処理方法、及びプログラム
JP2003127501A (ja) * 2001-10-22 2003-05-08 Canon Inc 通信装置及びその制御方法、ファクシミリ装置、通信方法、プログラム並びに記憶媒体
US20030081006A1 (en) * 2001-10-31 2003-05-01 Mike Sheldon Method and system for rendering display
US7181744B2 (en) * 2002-10-24 2007-02-20 International Business Machines Corporation System and method for transferring data between virtual machines or other computer entities
US7904823B2 (en) * 2003-03-17 2011-03-08 Oracle International Corporation Transparent windows methods and apparatus therefor

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007156511A (ja) * 2005-11-30 2007-06-21 Brother Ind Ltd 画像データ送信システム、および画像データ送信システム用プログラム
JP2007226670A (ja) * 2006-02-24 2007-09-06 Canon Inc 情報処理方法およびプログラム、情報処理装置
JP2009087119A (ja) * 2007-10-01 2009-04-23 Hitachi Ltd 操作支援プログラム
JP2010140281A (ja) * 2008-12-11 2010-06-24 Canon Inc アプリケーションプログラムとプリンタドライバとの間のデータ通信方法およびプログラム
US9298522B2 (en) 2008-12-11 2016-03-29 Canon Kabushiki Kaisha Method of data communication between application program and printer driver, and program therefor
JP2012212348A (ja) * 2011-03-31 2012-11-01 Brother Ind Ltd 画像処理プログラム、情報処理端末装置および情報処理端末装置の制御方法
JP2017219961A (ja) * 2016-06-06 2017-12-14 キヤノン株式会社 情報処理装置、制御方法、及びプログラム
KR101716861B1 (ko) * 2016-10-04 2017-03-15 (주)볼트마이크로 영상데이터 관리 장치 및 방법
WO2018066749A1 (ko) * 2016-10-04 2018-04-12 (주)볼트마이크로 영상데이터 관리 장치 및 방법

Also Published As

Publication number Publication date
US7434233B2 (en) 2008-10-07
CN1577283A (zh) 2005-02-09
JP4458929B2 (ja) 2010-04-28
US20050015774A1 (en) 2005-01-20
CN1329826C (zh) 2007-08-01

Similar Documents

Publication Publication Date Title
JP4458929B2 (ja) プログラム間通信装置、プログラム間通信方法、コンピュータ読み取り可能な記録媒体およびプログラム
US9041524B2 (en) Creation of image designating file and reproduction of image using same
US8184311B2 (en) Image processing system
US7268909B2 (en) Document processing method and apparatus
US9436413B2 (en) Information processing apparatus, information processing method, and storage medium storing program
US20030177448A1 (en) System and methods for acquiring images from imaging devices
US9894230B2 (en) Image formation device which can be expanded and image forming method for expanding an image formation device
US10157027B2 (en) Information processing apparatus that executes printing based on whether drawn data includes data for a predetermined element, information processing method, and non-transitory computer-readable storage medium storing program
CN110275683A (zh) 控制方法和信息处理装置
CN105744105A (zh) 显示输入装置、图像形成装置及显示输入装置的控制方法
US6286054B2 (en) Method and system for supporting multiple capture devices
US10423347B2 (en) Information processing apparatus, information processing method, and storage medium
JP2005301890A (ja) 拡張制御装置および画像形成システムおよびアプリケーション起動切り替え方法および画像形成システムの制御方法およびプログラムおよび記録媒体
JP2006209321A (ja) プログラム間通信装置、方法
CN109145263B (zh) 一种文档处理方法及装置、计算机可读存储介质
JP2007316647A (ja) 画像指定ファイルの作成およびこれを用いた画像の再生
JP6331654B2 (ja) 画像形成装置、画像形成システム、その制御方法及びプログラム
JP4103878B2 (ja) 画像指定ファイルの作成およびこれを用いた画像の再生
JP7395334B2 (ja) 情報処理装置、情報処理方法、およびプログラム
JPH11282773A (ja) 文書処理装置及びその制御方法、文書処理システム及びその制御方法、コンピュータ可読メモリ
JP4138720B2 (ja) プロジェクタ
JP2018156669A (ja) 情報処理システム、情報処理装置、その制御方法及びプログラム
JP2003091525A (ja) 情報処理装置および方法
Guntermann et al. PPower4 Manual
JPH11282776A (ja) 文書処理装置及びその制御方法、文書処理システム及びその制御方法、コンピュータ可読メモリ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070515

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090123

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090203

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090401

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091027

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091217

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: 20100202

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100209

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130219

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140219

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees