CN1577283A - 程序间通信装置和方法、计算机可读记录介质及程序 - Google Patents

程序间通信装置和方法、计算机可读记录介质及程序 Download PDF

Info

Publication number
CN1577283A
CN1577283A CNA2004100709387A CN200410070938A CN1577283A CN 1577283 A CN1577283 A CN 1577283A CN A2004100709387 A CNA2004100709387 A CN A2004100709387A CN 200410070938 A CN200410070938 A CN 200410070938A CN 1577283 A CN1577283 A CN 1577283A
Authority
CN
China
Prior art keywords
program
information
image
window
medium object
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
CNA2004100709387A
Other languages
English (en)
Other versions
CN1329826C (zh
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.)
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
Publication of CN1577283A publication Critical patent/CN1577283A/zh
Application granted granted Critical
Publication of CN1329826C publication Critical patent/CN1329826C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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

Abstract

本发明公开了一种程序间通信装置,以及一种程序间通信方法。程序间通信方法和装置可以在一个图象校正程序和一个图象打印程序之间执行程序间通信。在初始化阶段,在程序间建立通信路径,并且图像校正程序分配将与图像打印程序共享的共享存储器的存储区。接着,在连接阶段,图像打印程序使用该通信路径,向图像校正程序传达指定图象数据的文件号和关于图象数据解码处理的信息的请求。图像校正程序,在由文件号指定的图像数据上,执行对应于所请求的的信息的解码处理,并且将图像数据体的数据和附加到该图像数据上的附加信息存储在共享存储器中。

Description

程序间通信装置和方法、计算机可读记录介质及程序
技术领域
本发明涉及程序间通信装置,其中对将被处理的中间对象(medium object)进行操作的多个程序彼此通信,以便执行整个联合的处理,与其一起使用的程序间通信方法、计算机可读记录介质和程序。
背景技术
迄今,程序间通信,用这样一种程序间通信补偿各程序间通信之间的功能,即搜索一个具有在另一程序中未提供功能的特定程序,以及完全委托找到的程序执行处理。例如,有一种用于实现协作的程序间通信,其中,当使用图像打印软件将要打印数据格式与图像打印软件不兼容的图像数据时,搜索一个能够处理该种数据格式的图像数据的程序,并且将处理委托给该程序以便将图像数据解码成能由图像打印软件处理的数据格式。
为实现诸如如上所述的多个程序间的协作,有必要搜索或估计应当使用哪个程序实现特定程序中未提供的功能。此外,由于不知道何种功能需要通过执行程序间通信来补充,所以程序间通信的过程变得复杂,并且必须额外注意程序协作来实现程序。例如,认为必须实现对于协作目的地的每个应用程序不同的程序。
然而,在传统的程序间通信中,在特定的程序中,存在一个问题:除用于搜索最适合于协作、并补充该程序本身不能处理的功能的另一程序的处理负担之外,由于控制协作所需的程序间通信的复杂性和严格性造成的处理负担非常重。
发明内容
鉴于上述情形,做出了本发明。本发明公开了提供能够通过较少处理负担量,实现程序间通信的程序间通信装置、与其一起使用的程序间通信方法、计算机可读记录介质和程序。
根据本发明的一个方面,公开了一种程序间通信装置,用于在能以协作方式处理公用中间对象的第一程序和第二程序间执行程序间通信,程序间通信装置包括:通信路径建立装置,用于在第一程序和第二程序间建立通信路径;共享存储器分配装置,用于分配由第一程序和第二程序共享的共享存储器的存储区;通知装置,用于通过使用由通信路径建立装置建立的通信路径,将用于指定中间对象的指定信息和用于请求处理由特定信息指定的中间对象的请求信息,从第一程序传送到第二程序;以及,传送装置,用于当第二程序在由通知装置通知的特定信息指定的中间对象上执行对应于请求信息的处理时,通过将处理后的中间对象体的数据和附加到中间对象上的附加信息存储在由共享存储器分配装置分配的共享存储器中,将处理后的中间对象体的数据从第二程序传送到第一程序。
从下述优选实施例的描述,本发明的另外的目的、特征和优点将是显而易见的。
附图说明
图1表示本发明的第一实施例中的计算机系统的结构。
图2表示图像校正程序在输出设备105上显示的图像选择屏的例子和图像校正屏的例子。
图3表示当通过图2的图像选择屏20选择多个图像时,图像校正屏的例子。
图4表示图像打印程序在输出设备105上显示的图像选择屏的例子和打印条件设置屏的例子。
图5表示图1所示的计算机系统中的程序间通信过程。
图6表示对将要包括在本实施例的通信消息ID中的命令和参数进行分配的例子。
图7表示图6的命令部分中对应高位一个字节的定义的例子列表。
图8表示在图5所示的初始化阶段51的处理细节。
图9是表示在初始化阶段51中两个程序以协作方式操作就象是一个程序的处理流程图。
图10是表示在OS不能改变另一过程中启动的窗口显示状态的情况下,在初始化阶段51中两个程序以协作方式操作就象是一个程序的处理流程图。
图11是表示在连接阶段52中请求图像数据时的处理流程图。
图12表示存储在共享存储器中的图像数据和附加信息的格式的例子。
图13表示图像打印程序结束时,将图像校正程序窗口返回到显示状态的处理。
图14是表示在OS不能改变另一过程中启动的窗口的显示状态的情况下,在结束阶段53中两个程序以协作方式操作就象一个程序的处理流程图。
图15表示根据本发明的第二实施例的程序间通信方法中的拍摄时间(photographing time)期间信息的处理。
图16表示在本发明的第二实施例中,存储在共享存储器中的图像数据和附加信息的格式的例子。
图17表示根据本发明的第三实施例,重新分配程序间通信方法中所使用的共享存储器的处理。
图18是表示在读取侧,在程序中启用新的共享存储器的处理的流程图。
图19是表示在本发明的第一实施例中的协作启动处理期间,在启动侧避免程序的结束的方法的流程图。
具体实施方式
以下将描述本发明的实施例。
<第一实施例>
首先概述本发明的第一实施例中的计算机系统。
图1表示在本发明的第一实施例中的计算机系统的示例性硬件结构。在图1中,CPU 101控制整个系统的操作,并且执行存储在主存储器102中的程序。主存储器102主要是在其中读取并存储存储在辅助存储器103中的程序的存储器。辅助存储器103是诸如硬盘的非易失记录介质。通常,主存储器102的容量小于辅助存储器103的容量,并且CPU 101在辅助存储器103中存储均不能存储在主存储器102中的程序和数据。此外,CPU 101还在辅助存储器103中存储需要存储很长时间的数据。
在该实施例中,在辅助存储器103中存储各种程序,把它们中间将要执行的程序读入主存储器102,并且CPU 101执行程序。输入设备104用于控制计算机系统。示例性的输入设备104包括鼠标和键盘,以及读卡器、扫描仪和胶片扫描仪,它们用于输入图像数据。输出设备105既是显示设备也是打印设备,其例子包括液晶监视器和打印机。计算机系统的上述硬件结构仅是一个例子,并且本发明适合用于具有能够执行计算机程序的硬件结构的装置和系统。
在图1所示的计算机系统中,安装能同时执行多个程序和能够在操作系统中操作的各种应用程序的操作系统(在下文中,称为“OS”),并且CPU 101能够执行各程序。该OS为计算机系统的操作员提供GUI(图形用户界面)。因此,操作者可以从上述输入设备104通过操作GUI,来使用各种应用程序。在本实施例中,对一个作为OS的特定例子安装了Windows的计算机系统进行描述。安装在计算机系统中的OS不限于Windows,并且能够使用安装了另一种OS的计算机系统。
在此假定计算机系统已经在其中作为应用程序安装了用于校正图像的图像校正程序和用于打印由图像校正程序所校正的图像的图像打印程序。以下将描述通过使用作为本实施例特征的程序间通信方法,图像校正程序和图像打印程序以协作方式操作的设置。本实施例中的计算机系统具有使用多个程序处理图像数据的机制,并且具有控制多个程序进行协作的功能和实现该协作的程序间通信。将要协调的程序本身的规格说明不作限制,并且能够应用于具有各种规格说明的程序。
首先,给出能够在图1所示的计算机系统中应用的图像校正程序的描述。图像校正程序,是将诸如BMP、JPEG和TIFF的图像文件格式的图像数据作为处理对象的图像校正应用程序。作为CPU 101执行图像校正程序的结果,在输出设备(显示设备)105上显示如图2所示的图像选择屏20或图像校正屏24。
如图2所示,图像选择屏20由目录树显示区22和缩略图显示区21构成,并且在目录树显示区22中显示目录树,通过该目录树表示存储在系统的记录介质中的图像数据的目录结构。当选择在该目录树显示区22中显示的目录时,在缩略图显示区21中,以列表形式显示存储在选定目录中的将要选择的图像的缩小图像(略图)。在此,在缩略图显示区21中,当在图像校正屏24上校正将显示的图像时,同样的校正也应用于缩小图像上,以便进行显示。此外,在缩略图显示区21中,当目标图像太多,并且在缩略图显示区21中不能同时显示所有的缩小图像时,则显示一个滚动条。这使得操作员可以通过操作滚动条浏览所有缩小图像。每次执行单击时,缩略图显示区21中显示的缩小图像的选择状态和非选择状态进行切换(翻转),并且当执行双击时,将显示改变到图像校正屏24。例如,当双击图2的缩小图像23时,显示具有对应于缩小图像23的图像的图像校正屏24。
图像校正屏24由将被校正图像的显示区25和校正板(correction pallet)26构成。在将被校正图像的显示区25中,显示将由校正板26指定的参数应用到图像上进行校正的图像。校正板26由显示将被处理图像柱状图的柱状图显示区26a、用于指定锐度、色度等等的滑块26b至26d组成。每次操作者操作滑块26b至26d时,CPU 101校正和更新在将被校正图像的显示区25中的图像。能由校正板26调整的参数的例子包括亮度、γ值、锐度、色度和对比度。
进一步描述不同于图2所示的图像校正屏24的图像校正屏。例如,当操作员在图像选择屏20中选择多个图像时,CPU 101在输出设备(显示设备)105上显示图3所示的图像校正屏24a。在图像校正屏24a中,在将被校正图像的显示区25的左边显示选择图像列表显示区27。在该选择图像列表显示区27中,彼此相邻地显示选定图像的缩小图像。作为提供用于显示该图像校正屏24a的方式的结果,当校正多个图像时,不必执行以对应于所选择图像数量的方式改变图像选择屏20和图像校正屏24的显示的操作,因此提高了操作方便性。
以这种方式存储图像校正屏24或图像校正屏24a(在下文中简称为“图像校正屏24”)中的校正结果:不直接处理将处理的图像,而是在该文件中另外描述用于原始图像的校正参数。作为上述的结果,即使根据校正多次改变参数,由于将图像数据存储在原始图像中,所以每次执行校正时,图像质量也不会恶化。
接下来,简要描述图像打印程序。图像打印程序是针对JPEG格式的图像数据的打印应用程序。作为CPU 101执行图像打印程序的结果,在输出设备(显示设备)105上显示图4所示的图像选择屏30和打印条件设置屏35。如图4所示,图像选择屏30除与图2所示的图像选择屏20类似的目录树显示区32和缩略图显示区33外,进一步包括用于结束由图像打印程序执行的处理的结束按钮31。打印条件设置屏35包括打印纸规格区36、打印按钮37和版面规格区38。因此,当在打印纸规格区36中指定打印纸并且在版面规格区38中指定版面后按压打印按钮37时,输出设备(打印机)105按这样一种方式输出所选的图像-在所指定纸大小的打印纸上按所指定版面进行打印。
如图4所示,在本实施例中,在打印纸规格区36中,能够选择A4、L格式和明信片中的一个。在打印纸规格区36中,除打印纸大小外,可以指定打印纸的类型。例如,能够指定普通纸、照片纸等等。在版面规格区38中,能够选择完全无边框表面、2合1、具有在拍摄时间期间的信息的打印以及缩小图像的列表(索引打印)中的一个。在此,具有在拍摄时间期间的信息的打印是用于在相同的打印纸上输出图像及其附加信息(拍摄时间期间的信息,诸如拍摄日期和时间、快门速度等等)的版面。更具体地说,相对于一张纸,彼此相邻地输出一个图像和拍摄时间期间的信息。当按压结束按钮31时,终止图像打印程序的处理。
在上文中,除上述独立操作外,参考图2和4所述的图像校正程序和图像打印程序已经在其中实现了一种机制,通过该机制,它们通过作为本实施例特征的程序间通信处理,以协作方式操作。以下将描述通过该程序间通信过程的协作操作的具体处理。首先,以下描述在GUI级的操作。
在图像校正程序中,提供一种用于打印选定图像的菜单,并且因此,能通过选择菜单中的项目打印选定图像。更具体地说,通过使用由OS提供的用户界面,打印机能输出选定图像。然而,由于在本实施例的计算机系统中安装了参考图4所述的图像打印程序,因此启动图像打印程序而不是启动由OS提供的界面。
此外,当响应来自图像校正程序的打印请求,启动图像打印程序时,不显示图4中所示的图像选择屏30内的目录树显示区32。在这种情况下,在缩略图显示区33中,以列表形式显示由图像校正程序选择的图像。此外,将结束按钮31改变成返回按钮31。当按压该结束按钮31时,图像打印程序结束,并且控制返回到图像校正程序。
然而,当图像校正程序和图像打印程序以如上所述的协作方式操作时,将产生下述问题。(1)在图像校正程序和图像打印程序之间可处理的数据格式不同。此外,有必要在程序间传达图像校正处理的存在或缺少。(2)有必要在程序间传达将被操作的文件名。
为解决这些问题,本实施例中的计算机系统通过使用如下所述的程序间通信方法,实现图像校正程序和图像打印程序间的协作。以下将描述程序间通信方法的详细情况。
首先,以下给出在图1所示的计算机系统中,程序之间,即图像校正程序和图像打印程序之间,通信的过程的描述。
图5表示图1所示的计算机系统中程序之间的通信的过程。如图5所示,该程序间通信方法概括地由三个阶段组成:(1)初始化阶段51;(2)连接阶段52;以及(3)结束阶段53。以下给出在多个程序,包括图像校正程序和图像打印程序中,在三个阶段期间的一般处理的描述。以下将描述在图5所示的图像校正程序和图像打印程序中,三个阶段的处理的详细情况。为便于理解该描述,将某一文件处理中间的程序假定为第一程序,并且将响应来自第一程序的请求,通过程序间通信处理该文件的程序假定为第二程序。
初始地,在初始化阶段51中,第一程序建立与第二程序间的程序间通信路径(通信信道),并且通过使用通信路径,执行用于共享文件的列表的处理,该文件列表是将处理的文件的列表。每个程序中的文件的规格说明(标识)是表示上述文件列表中的顺序的文件号(也可以使用标识符等等)而不是文件名。即,每个程序请求另一程序以文件为单位执行处理。更详细地说,将文件列表开始时的文件号处理为号0。此外,通过共享存储器,执行程序间文件列表的传送。共享存储器也是用于存储将由每个程序处理的文件(在文件列表中所述的文件)的存储器,并且构造于图1所示的主存储器102和辅助存储器103中的一个中。
当作为上述处理的结果完成初始化阶段51时,处理进入连接阶段52。在连接阶段52,第一程序向第二程序通知将被处理文件的文件号和请求条件(例如,用于解码处理的请求)。因此,第二程序在由文件号指定的文件上执行对应于请求条件(例如,解码处理)的处理,并且将处理后将文件安置在共享存储器中。接着,请求侧的第一程序从共享存储器查询所安置的数据。作为上述的结果,在第一程序和第二程序间实现了必要数据(解码处理后的文件)的传送。
当完成连接阶段52时,处理最终进入结束阶段53。一个程序向另一个程序通知用于断开程序间通信的请求,从而断开该连接。在图5中,在完成图像打印处理的同时,断开程序间通信的连接,并且哪个程序请求断开无关紧要。在通信协议(稍后描述)的详细描述中描述图5中所示的“PROCESS_A”和“PROCESS_B”。
以下给出在该实施例中程序间通信方法的协议例子和图像校正程序和图像打印程序间每个阶段的处理的详细情况的描述。
<通信协议>
在本实施例中,作为用于建立程序间通信路径的信息,使用了由每个程序显示为GUI的主窗口的窗口句柄和其窗口过程的消息ID。更具体地说,通过使用由图像校正程序显示的每一个图像选择屏20和图像打印程序显示的每一个图像选择屏30的窗口句柄以及窗口过程的消息ID,建立通信路径。图5中所示的“PROCESS_A”和“PROCESS_B”是在图像校正程序和图像打印程序中定义的通信消息ID。
当如在这一实施例中OS是Windows时,每个窗口具有一个可以识别它的窗口句柄,并且和所指定的每个窗口句柄一起发送诸如鼠标事件的事件。为识别事件,给指定用于传送事件的消息分配消息ID。消息ID既是由系统预留的号码也是可以根据用户需要设置的号码。因此,通过将用于程序间通信的通信消息ID定义为用户定义的消息ID,并且通过指定负责程序间通信过程的窗口句柄,发送程序间通信事件,可以向管理该窗口的指定程序传送诸如处理请求的消息。
然而,在窗口的事件通知中,可传送的信息量是有限的。当如本实施例中,OS是Windows,除上述消息ID外,能向用于作为事件管理窗口的程序提供的数据仅是作为子事件信息的WPARAM和LPARAM。WPARAM和LPARAM分别容纳4字节大小的整数值。因此,象图像数据这样的大型数据,在程序间经由共享存储器传送。在Windows中,通过分配标识名以便指定共享存储器,来管理共享存储器。
在此,在本实施例中所使用的通信命令如下所述。如上所述,通过使用用户定义的消息ID(通信消息ID),将命令传送到另一方程序。此外,能用于传送命令和参数的数据大小为8字节,该数据中组合WPARAM和LPARAM。因此,如图6所示,以2字节为单位,将8字节划分成四个部分,并且将这些部分处理为命令、参数1、参数2和参数3。
图6示出一个例子,其中分配将要包括到本实施例中的通信消息ID中的命令和参数。在图6的命令部分中,对应于高位的一字节的定义的例子列表示于图7,并且在低位的一字节中,放置表示解码期间色彩深度的命令。如图7所示,在十六进制中的“00至7F”表示解码请求命令,“A0”表示消息ID通知命令;“B0”表示窗口句柄通知命令,“E0”表示程序间连接通信断开请求命令,以及“F0”表示程序结束请求命令。将在每个阶段处理的详细描述中,描述图7所示的每个命令的详细情况。
以下是在图5所示的初始化阶段51,连接阶段52和结束阶段53的每个阶段中处理的详细情况的描述。
<初始化阶段>
在初始化阶段51,如上所述执行程序间通信开始处理。即,从图像校正程序启动以协作方式操作的图像打印程序,直到在程序间建立通信路径的处理是初始化阶段51。
在本实施例中,在初始化阶段51,在以协作方式操作的两个程序间,有必要彼此通知在其中实现通信处理的窗口的窗口句柄以及消息ID。此外,以协作方式操作的两个程序的一个需要分配共享存储器并且向另一方的程序传送其标识名。在本实施例中,在另一程序启动的一侧的程序,分配共享存储器。更具体地说,如图5所示,图像校正程序分配共享存储器并且将共享存储器的标识名传送到图像打印程序。
在此,描述图5所示的初始化阶段51处理的详细情况。
图8表示图5所示的初始化阶段51处理的详细情况。假定图8所示的处理是在本实施例的计算机系统中,已经启动图像校正程序。如图8所示,在步骤S801,图像校正程序启动图像打印程序并将上述文件列表存储在共享存储器中。此时,图像校正程序,将分别由表示为十六进制的字符串构成的窗口句柄和消息ID、以及共享存储器的标识名,作为通信参数1,予以传送,其中,按顺序对它们描述。因此,可以将通信参数1指定为图像打印程序的执行时间选项。图像校正程序将在程序间处理的文件的列表的文件列表安置在共享存储器中。
接着,在步骤S802,图像打印程序在启动时间,从图像校正程序获得通信参数1。因此,图像打印程序分析由通信参数1指定的执行时间选项(启动时间参数)以便获得通信方(图像校正程序)的窗口句柄、消息ID和共享存储器的标识名。
当未特别指明执行时间选项时,视为独立启动图像打印程序,并且当指明执行时间选项时,视为由另一程序启动图像打印程序。作为执行这种处理的结果,如图4所示,对图像打印程序来说,可以在启动时间显示目录树显示区32。然而,在图8中省略了独立启动校验处理。
接着,在步骤S803,图像打印程序通过使用在步骤S802中获得的共享存储器的标识名,获得共享存储器中的文件列表。接着,在步骤S804,图像打印程序,将在图像打印程序侧用于程序间通信的窗口句柄和消息ID,作为通信参数2,通知给由步骤S802中获得的窗口句柄和消息ID指定的图像校正程序。更具体地说,通过使用两个命令SEND_MESSAGE_ID和SEND_WINDOW_HANDLE,图像打印程序将窗口句柄和消息ID作为通信参数2通知给图像校正程序。在SEND_MESSAGE_ID命令的情况下,在参数2和参数3的区域中传送用于通信的消息ID,如图6所示。同时,在SEND_WINDOW_HANDLE命令的情况下,在参数2和参数3的区域中通知窗口句柄,如图6所示。在任一情况下,参数1区均设置为不使用。
接着,在步骤S805,图像校正程序从在步骤S804中通知的两个命令中,作为通信参数2,获得用于图像打印程序中的程序间通信的窗口句柄和消息ID。
作为在初始化阶段51执行上述处理的结果,能够建立图像校正程序和图像打印程序间的程序间通信路径。此外,在初始化阶段51,作为以协作方式操作的图像校正程序和图像打印程序执行如下所示的窗口显示控制的结果,可使用户知晓程序象一个程序一样进行操作。以这种方式,两个程序象一个程序一样进行操作的情况产生统一感,并且可以说这对于用户是自然操作环境。
图9是表示在初始化阶段51,以协作方式操作的两个程序象一个程序一样进行操作的流程图。
如图9所示,初始地,在步骤S901,当将显示启动屏(窗口)时,启动时间的图像打印程序,在与由图像校正程序初始显示的窗口(在下文中称为“原始窗口”)相同显示位置和相同大小处,显示启动屏(窗口)。在本实施例中,当从图像校正程序启动图像打印程序时,在与由图像校正程序显示的原始窗口(例如,图2的图像校正屏24)的相同显示位置和相同大小处,在输出设备(显示设备)105上显示在图像打印程序中的窗口(例如,图4的图像选择屏30)。
接着,处理进入步骤S902,其中图像打印程序在最前台上显示在步骤S901中显示的启动屏(窗口)。因此,可覆盖由图像校正程序原始显示的原始窗口。接着,处理进入步骤S903,其中图像打印程序将由图像校正程序显示的窗口的显示状态改变成非显示状态。因此,在步骤S904,图像校正程序的原始窗口处于非显示状态。
作为上述的结果,即使改变最新显示的启动屏的显示位置,也不显示原始启动的原始窗口,并且对以协作方式操作的两个程序来说,可使用户仅看到简单地改变显示模式。当如在本实施例中,OS是Windows时,如果已获得窗口句柄,则甚至由另一处理也能使任何窗口处于非显示状态。因此,可通过上述过程替换窗口。
在此,在图8中,假定图像校正程序在步骤S802时和步骤S805前结束。例如,在Windows中,通过同时按压ALT键和F4键,可以显示用于关闭特定窗口的菜单。在此,选择程序的结束,使得能够结束该程序。作为执行这种操作的结果,可以在建立启动侧和最新启动的程序间的协作之前,结束在启动侧上的程序。作为上述的结果,使程序处于不期望的状态,并且不能用一致的方式使用该程序协作方法。
因此,如图19所示,除了图8的处理,通过将图像校正程序的状态控制为从协作开始时直到建立协作为止的期间忽略一般按键输入的状态,能避免上述情况。
图19是表示在本发明的第一实施例中协作开始处理期间,避免启动侧上程序的结束的方法流程图。图19中的步骤S1902至S1906的处理与图8所示的步骤S801至S805是相同的处理,因此,省略对其的描述。如图19所示,在步骤S1901中,图像校正程序将状态设置为忽略图像校正程序本身的输入信号的状态。在建立图像校正程序和图像打印程序间的协作的步骤S1906后,在步骤S1907,图像校正程序从在步骤S1901中设置的忽略输入信号的状态改变(返回)到接受输入信号的状态。
更具体地说,在Windows中,通过使用例如EnableWindow函数,并且通过在步骤S1901中设置成禁用状态并在步骤S1907中设置成允许状态,实现诸如步骤S1901和S1907的过程。
在OS不能使在另一程序中启动的窗口处于非显示状态的情况下,例如,可以执行如图10所示的处理。
图10是表示在OS不能改变另一过程中启动的窗口的显示状态的情况下,在初始化阶段51两个程序以协作方式操作就象一个程序一样的情况的处理流程图。
在图10中,步骤S1001和S1002的过程与图9所示的步骤S901和S902是相同的处理,因此,将省略对其的描述。接着,在步骤S1003中,图像打印程序将“非显示请求命令”发送到另一方的图像校正程序。接着,在步骤S1004,接收非显示请求命令的图像校正程序设置原始窗口处于非显示状态。
如上文所述,在初始化阶段51,图像校正程序与图像打印程序建立程序间通信,并且通过使用通信路径,执行共享文件列表的处理,该文件列表是将要处理文件的列表。此时,通过控制由图像打印程序显示的窗口位置和大小,能够将图像校正程序和图像打印程序的协作操作看作就象一个程序一样。用这种方式,显示两个程序象一个程序一样进行操作产生统一感,并且可以说这是对用户的自然操作环境。
以下,描述图5所示的连接阶段52的处理的详细情况。
<连接阶段>
连接阶段52是在建立图像校正程序和图像打印程序间的程序间通信的状态下,执行所需数据(例如图像数据)的请求和其传送。
在本实施例中,使用图7所示命令中的DECODE命令,执行对于所需图像数据的请求。在本实施例中的程序间通信方法的特征在于当请求解码时,传送所需图像的信息。例如,在本实施例中,当请求解码时,指定图像的色彩深度、图像大小(宽度、高度)和色彩空间。如图6所示,由于能与命令一起通知的参数的数据长度是有限的,所以提供作为图7所示的DECODE命令的值的色彩深度和色彩空间的规格说明。更具体地,解码请求命令的值采用0x00至0x7F之间的值,包括端点值,并且用该值的低4位指定所请求图像的色彩深度。例如,如果用低4位指定“8”(十进制数),则为每个RGB颜色请求8位数据。然而,当最低4位为0000b(b表示二进制数)时,表明未请求图像数据体。在这种情况下,解码请求命令仅请求诸如拍摄时间期间的信息的附加信息。
接着,描述DECODE命令的高4位。高4位的高2位总是00b,并且用低2位表示色彩空间。例如,在本实施例中,00b表示sRGB,01b表示AdobeRGB,10b表示WideRGB,并且11b表示另一色彩空间。高2位为11b的情形表示与图像数据一起请求向其提供ICC特性档的数据。
此外,使用附加到DECODE命令的图6所示的参数1指定文件名。在初始化阶段51以如上所述的方式,通过共享的文件列表的号码指定文件名。因此,能同时共享文件数量的上限为65536(用于2字节量)。此外,在图6的参数2中,以像素为单位指定图像数据的图像宽度。在图6的参数3中,以像素为单位指定图像数据的图像高度。作为使用由命令和参数组成的通信消息的结果,指定所需图像文件的同时能够传送所需图像的信息。
另外,当在连接阶段52请求图像数据时,处理还具有该程序间通信方法的特征。
图11是表示当在连接阶段52请求图像数据时的处理流程图。
如图11所示,最初,在步骤S1101,图像打印程序将解码请求发送到另一方的图像校正程序。更具体地说,图像打印程序将解码请求命令DECODE发送到另一方的图像校正程序。在这一时间点上,阻塞图像打印程序的操作。此外,图像打印程序锁定共享存储器。
在此,锁定共享存储器意味着阻塞在相同程序内访问共享存储器,并且当图像打印程序是多线程程序时,能够防止访问共享存储器的冲突。当图像打印程序是单线程程序时,可以省略该处理。
接着,在步骤S1102,接收解码请求的图像校正程序将图像数据和其附加信息安置在共享存储器中。当将被安置在共享存储器中的数据不存在于受图像校正程序管理的存储器中时,图像校正程序解码该图像数据,执行用于在其中应用校正处理的处理,并且将在解码和校正处理后的图像数据安置在共享存储器中。这完成程序间通信消息的处理,并且处理返回到消息循环。在这一时间点上,释放在步骤S1101中阻塞的图像打印程序。接着,在步骤S1103,图像打印程序提取为其请求解码的图像数据和附加信息,并且此后,释放共享存储器的锁定。
在步骤S1101(如上所述)中,阻塞已输出解码请求的图像打印程序,但该阻塞不限于此。在线程能用作图像打印程序处理的环境中,阻塞已经输出解码请求线程的操作。为以该方式操作,当例如OS是Windows时,通过使用由该系统提供的SendMessage函数,通过传送DECODE命令,能够实现上述操作。即,当使用SendMessage函数发送消息时,OS的规格说明是阻塞SendMessage函数直到完成用于该消息的处理为止。
作为以该方式操作的结果,用于请求从图像打印程序到图像校正程序的图像数据的处理表现为好象其为一个函数。如果上述方式中,每个程序进行非同步操作而不是同步操作,请求图像的程序必须注意每次请求图像时,是否已经完全将图像数据传送到共享存储器,并且程序的操作很可能复杂。此外,请求图像的程序需要通过一直了解有关是否可将数据传送到共享存储器来实现。由于上述理由,通过使在程序间传送图像数据的处理完全同步地操作,能大大地降低程序的实现成本。
当在步骤S1101中请求图像的解码时,通过以上述方式中的解码请求命令和其参数,指定诸如图像大小和色彩空间的请求条件。然而,不知道受请求方是否能在请求条件下解码后生成图像数据。因此,在本实施例中的程序间通信方法中,在步骤S1102的解码和校正之后,仅将上述请求条件处理为在图像生成处理期间的参考信息。即,为了更高速处理图像以及与图像打印程序协作操作,图像打印程序使用请求条件生成最佳图像数据是无关紧要的。相反,图像校正程序通过完全忽略请求条件生成图像数据是无关紧要的。为此,当图像校正程序生成图像数据,其中忽略部分或全部请求条件时,已经做出解码请求方的图像打印程序需要将从共享存储器获得的图像数据转换成其自己程序的所期望大小和颜色。如果在图像打印程序中未提供颜色管理函数,将要被显示的图像颜色是不准确的,但这能假定成图像打印程序的规格说明。
如前所述,作为执行“松散”协作操作的两个程序的结果,其中它们不向彼此强加请求条件,则可能使用或者不使用由共有程序拥有的功能。这表示根据程序操作环境和程序规格说明本身,能动态地改变程序协作的集中。在本实施例中,实现程序间的“松散”协作操作的程序间通信方法是非常有效的通信方法。此外,如图5所示,能从图像打印程序向图像校正程序输出多个解码请求。在这种情况下,执行多次图11所示的处理。
在步骤S1103中,由图像打印程序从共享存储器获得的数据是图像数据和附加信息。该附加信息的例子包括在拍摄时间期间的信息和ICC(国际色彩联盟)特性档。例如,当色彩空间不同于sRGB、AdobeRGB或WideRGB时,与图像数据一起传送ICC特性档。当色彩空间是sRGB、AdobeRGB或WideRGB时,将色彩空间信息存储在拍摄时间期间的信息中。作为上述的结果,即使当所请求的色彩空间不同于所生成的图像数据的色彩空间时,也能传送正确的色彩空间信息。此外,假定经共享存储器传送的图像数据具有DIB(设备无关的位图)格式。DIB格式是标准的数据格式,并且由于接收数据能被用作制图而具有优点。
接下来,将描述将存储在共享存储器中的图像数据和附加信息的格式的例子。
图12表示存储在共享存储器中的图像数据和附加信息的格式的例子。如图12所示,在共享存储器的开始处存储每个数据的偏移量和数据大小,并且通过参照它,对每个程序来说可以访问所需数据。每个数据的偏移量是从共享存储器的起始处到数据开始处的字节的数量。数据大小为0的情形表示不存储相应数据。图12所示的“状态码”在这一实施例中总是为0。图12的格式例子中,“首部大小”之后是图像数据、拍摄时间期间信息和ICC特性档的偏移量及数据大小,并总共具有24字节。在偏移量和数据大小后,紧接着存储图像数据本身的区域、存储拍摄时间期间的信息的区域和存储ICC特性档的区域。
接下来,将描述图5所示的结束阶段53的处理的详细情况。
<结束阶段>
图5所示的结束阶段53是以如上所述方式断开程序间通信连接的阶段。在本实施例中,该处理是由按压图4所示的、由图像打印程序显示的图像选择屏30上的“返回”按钮31所启动的。当OS是Windows时,在窗口的右上部分中设置的“关闭窗口”按钮允许结束用于显示该窗口的程序。
在本实施例中,当按压“返回”按钮31时,图像打印程序结束,控制返回到图像校正程序。然而,当按压“关闭窗口”按钮时,同时结束图像校正程序和图像打印程序。作为用这种方式操作的结果,当两个程序以协作方式操作时,可以允许用户完全象操作一个应用程序一样对它们进行操作。以这种方式,两个程序象一个程序一样进行操作的情况,产生了统一感,并且可以说对于用户这是自然的操作环境。
更具体地说,在本实施例中,对于当用户按压“返回”按钮31时的程序之间的处理,图7中所示的命令END_PROCESS用于仅结束所启动的图像打印程序的命令。接收这一命令的图像校正程序仅简单地结束与图像打印程序的程序间通信处理。此外,对于本实施例,在按压“关闭窗口”按钮时的处理中,图7所示的命令END_PARENT用为用于结束两个程序的命令。接收这一命令的图像校正程序立即执行用于结束其自身的程序、完成该程序的处理。
更具体地说,当按压“返回”按钮31时,执行图13中所示的处理。当按压“关闭窗口”命令时,图像打印程序将END_PARENT命令传送到图像校正程序,完成该程序。在接收到END_PARENT命令时,指定两个程序立即执行用于结束该程序的处理。
此外,在如上所述按压“返回”按钮31时,将以协作方式操作的图像校正程序的窗口处于非显示状态。因此,当产生END_PROCESS命令时,将图像校正程序的窗口返回到显示状态。
下面,给出当图像打印程序结束时用于将图像校正程序的窗口返回到显示状态处理的描述。
图13表示当图像打印程序结束时,用于将图像校正程序的窗口返回到显示状态的处理。
如图13所示,在步骤S1301,图像打印程序将最初已经启动的图像校正程序的原始窗口,以与稍后已经启动的图像打印程序窗口(图像显示屏30)相同的显示位置和大小进行显示。因此,图像校正程序的原始窗口以与图像打印程序的窗口相同的显示位置和相同的大小进行显示。接着,在步骤S1302,图像打印程序使得在步骤S1301所显示的图像打印程序的原始窗口在最前台进行显示。因此,图像校正程序的原始窗口显示于图像打印程序的窗口的前台。作为上述的结果,能够覆盖稍后已经启动的图像打印程序的窗口。
接着,在步骤S1303,图像打印程序将图像打印程序的窗口的显示状态改变成非显示状态。这导致图像打印程序的窗口处于非显示状态。此外,在将窗口处于非显示状态后,图像打印程序结束。
作为执行这种处理的结果,可以使用户看到只是在相同程序中仅改变模式,而不是切换到不同程序。以这种方式,两个程序象一个程序一样进行操作的情况,产生了统一感,并且可以说这是对于用户自然的操作环境。与在初始化阶段51期间类似,在OS不能改变另一处理的显示状态的情况下,执行图14所示的处理而非图13中的处理。
图14表示在OS不能改变在另一过程中启动的窗口的显示状态的情况下,用于显示在结束阶段53以协作方式操作的两个程序象作为一个程序一样进行操作的处理的流程图。如图14所示,初始地,在步骤S1401,图像打印程序将显示请求命令传送到最初已经启动的图像校正程序。接着,在步骤S1402,接收显示请求命令的图像校正程序将该窗口的显示位置和大小改变成与通信方(图像打印程序)相同,此后,将其自身的窗口改变成显示状态。同时,将窗口移动到最前台。
接着,在步骤S1403,图像校正程序将结束请求命令传送到作为通信方的图像打印程序。接着,在步骤S1404,接收结束请求命令的图像打印程序将其自身窗口的显示状态改变成非显示状态,并且此后,执行结束其自身的程序的处理,完成该程序。
如上文所述,在本实施例中,规格说明是通过控制窗口的显示状态,让用户看到在相同程序中改变显示,但可以省略这一规格说明。此外,第一程序和第二程序都可以经网络连接的不同装置中操作。
<第二实施例>
在第一实施例中所述的程序间通信方法中,以在程序间传送图像数据和拍摄时间期间的信息的方式,形成该结构。比较起来,在第二实施例的程序间通信方法中,除了传送图像数据和拍摄时间期间的信息外,还以在程序间传送打印校正信息(在下文中,称为“打印信息”)的方式,形成该结构。第二实施例中的计算机系统的硬件结构与图1所示的第一实施例中的计算机系统的硬件结构相同,因此,省略对其的描述。
有一个称为“Exif(可交换图像文件格式)2.2(Exif-Print)”的标准。这是一个关于应用拍摄时间期间的信息进行图像的自动校正的标准。在上述第一实施例中,不执行打印时间期间的图像校正,但在本实施例的图像打印程序中,由拍摄时间期间的信息,自动校正将打印的图像。用于打印的这种自动校正处理允许根据拍摄情况提供最适当的打印。由于用于打印的自动校正处理是已知技术,省略对其的描述。
当图像校正程序和图像打印程序以如在第一实施例中的协作方式操作时,最好在图像校正程序侧控制在图像打印程序中的用于打印的自动校正处理。其原因是由图像校正程序使用的校正和用于打印的自动校正处理彼此影响,并且会出现不期望的输出结果。然而,当将拍摄时间期间的信息与图像一起打印时,最好不在图像校正程序侧校正拍摄时间期间的信息。因此,如图15所示,这一实施例的图像校正程序向图像打印程序发送作为拍摄时间期间的信息的拍摄时间期间的原始信息61和打印信息62,其中打印信息62是拍摄时间期间的原始信息61和在打印时间期间由自动校正处理校正的拍摄时间期间的信息(在下文中,称为“拍摄时间期间的打印信息”)之间差异的信息。
图15表示在本发明的第二实施例的程序间通信方法中,拍摄时间期间的信息的处理。在图15的例子中,在图像校正程序侧,将拍摄时间期间的原始信息61的锐度调整为在拍摄时间期间的打印信息,并且因此,作为差异信息的打印信息62仅包括对于锐度的参数。如图15所示,作为拍摄时间期间的信息,包括与快门速度的值、光圈值(f值)、锐度值(±)以及打印时间期间自动校正开/关状态有关的信息。
此外,如图15所示,在图像打印程序侧,在处理t1,创建具有拍摄时间期间的信息的打印版面65,其中彼此相邻排列应用拍摄时间期间的原始信息61的拍摄时间期间的图像65a和信息65b。接着,在处理t2,图像打印程序创建拍摄时间期间的打印信息以致打印信息62覆盖拍摄时间期间的原始信息61以便合并。接着,在处理t3,根据拍摄时间期间的打印信息,图像打印程序在图像65a上执行用于打印的自动校正处理。作为上述的结果,从输出设备(打印机)105输出如图15所示的打印版面65的印刷品。此外,印刷品的图像是由图像校正程序校正的图像,并且在其上执行考虑到该校正的用于打印的自动校正处理。
作为执行该处理的结果,当将与图像一起打印拍摄时间期间的信息时,能从图像校正程序侧控制打印时间期间的自动校正结果,其中将要打印的拍摄时间期间的信息保持原样,由此能获得最佳印刷品。
此外,尽管在第一实施例中,当请求图像时,共享存储器中的数据分配如图12所示,但在本实施例中,数据如图16所示进行分配。当与图12的例子相比时,如图16所示的首部大小为32字节,因为在首部部分中包括各为4字节的“打印信息偏移量”和“打印信息数据大小”。
在本实施例的程序间通信方法中,在图像校正程序侧,可以设置为禁止用于打印的自动校正处理;以及还能设置为在根据图像校正内容进行重写拍摄时间期间的信息的情况下,执行用于打印的自动校正处理。这里,在本实施例的程序间通信方法中,除了传送图像数据和拍摄时间期间的信息外,还在程序间传送用于打印的校正信息(在下文中称为“打印信息”)。可选地,还可以使用将全分辨率信息用作将在程序间传送的另外信息的结构。该全分辨率信息的传送源于请求,因此,如果不期望随意改变形成当前图像时的大小,则期望按原样发回该信息。
<第三实施例>
在第一实施例中,未提及当用于在程序间传送大量数据的共享存储器的大小小于将传送的数据的大小时的处理。在第三实施例的程序间通信方法中,一种用于重新分配共享存储器的结构能够用来处理这种情形。更详细地说,在第三实施例中,通过使用在第一实施例中总是为0的状态码,执行共享存储器重新分配处理。当共享存储器不足时,通过图17所示的过程重新分配共享存储器。
图17表示重新分配用于在本发明的第三实施例中的程序间通信方法的共享存储器的处理。如图17所示,最初,在步骤S1701,传送数据方的程序(在下文中,简称为“程序”)分配新的共享存储区。将共享存储器的标识名设置成24字节或更小。此外,标识名以空字符结束。即,标识名的结尾总是0x00。接着,过程进入步骤S1702,其中程序将0xFFFFFFFF存储在旧区的最初始4字节(状态码)中。通常,在该代码之后,紧接着是图12和图16所示的数据,并且当状态码为0xFFFFFFFF时,存储新的共享存储器的标识名。接着,处理进入步骤S1703,其中程序分配新的共享存储器的存储区以及记录标识名。接着,处理进入步骤S1704,其中程序关闭旧共享存储器的存储区。作为上述结果,完成重新分配共享存储器的处理。在上述共享存储器重新分配处理后,程序把将传送的数据存储在新的共享存储器中。
现在,将描述读取侧(数据传送到的一侧)上的程序(在下文中称为“读取侧程序)的处理。当将读取共享存储器的数据时,在第一和第二实施例中,不特别检验状态码。然而,在本实施例中,检验状态码以确认是否分配新的共享存储器。
图18是表示在读取侧程序中启动使用新的共享存储器的处理的流程图。
最初,在步骤S1801,读取侧程序检验共享存储器的状态码。当状态码为0(步骤S1801为“是”)时,这表示没有重新分配新的共享存储器,并且读取侧程序结束启用新的共享存储器的处理。当状态码为0xFFFFFFFF(步骤S1801为“否”)时,过程进入步骤S1802,其中读取侧程序获得新的共享存储器的标识名。
在上述步骤S1802的具体处理中,读取侧程序从共享存储器的开始处读取第五和随后的字节,并且获得新的共享存储器的标识名。接着,在步骤S1803,读取侧程序关闭旧共享存储器。接着,在步骤S1804,读取侧程序打开新的共享存储器。作为上述的结果,完成在读取侧程序中启用新的共享存储器的处理。
如果OS为Windows,当从引用其的所有程序关闭共享存储器时,从该系统删除共享存储器的存储区。作为执行如上所述的这种处理的结果,可以重新分配共享存储器。
<其他应用例子>
使用根据上述实施例的程序间通信方法可以将程序间通信处理本地化。所以,能够以程序间通信模块的形式封装用于程序间通信的处理。因此,能在程序开发员意识不到有关程序间通信的处理的情况下,实现程序间通信,并且能够降低开发成本。
作为上述实施例中程序间通信方法的另一应用例子,现在描述作为模块形成上述程序间通信处理的技术概述。
在根据上述实施例的程序间通信方法中,仅调换了图7所示的命令。这里,下面将给出除了图7所示的命令中的DECODE命令外的命令能够自动响应情况的描述。
关于当接收SEND_MESSAGE_ID命令时返回的值,当接收这一命令时,确定通信消息ID。同样也应用于当接收SEND_WINDOW_HANDLE命令时,应当返回的窗口句柄的值。因此,这两个命令能在用于处理通信消息ID的例行程序开始时,自动响应。
接着,在接收之后,确定END_PROCESS和END_PARENT命令的处理。在END_PROCESS命令的情况下,只需要通过初始化用于过程间通信的信息,以断开通信。在END_PARENT命令的情况下,只启动程序结束处理。在OS为Windows的情况下,当将WM_CLOSE消息发送到程序的根窗口时,启动程序结束处理。因此,用于这一部分的处理与SEND_MESSAGE_ID命令和SEND_WINDOW_HANDLE命令类似,能够自动响应。
此外,对于初始化阶段51的过程,由于在程序的启动时间选项传送所需信息,通过分析启动时间选项,可以确定关于是否由另一程序启动该程序。此外,由于在结束分析时能获得通信方的窗口句柄和通信消息ID,因此仅需要通知程序的窗口句柄和通信消息ID。
关于文件的列表的共享,由于在如上所述建立通信路径时传送共享存储器的标识名,文件名的共享成为可能,而使程序开发员意识不到使用的共享存储器。
因此如所述,在这一程序间通信方法中,能够对程序开发员隐蔽通信所需的大部分。作为对程序开发员隐蔽通信方的结果,能共用通信定时,并且能实现平滑的程序间通信。因此,例如,当如在上述实施例中所述,在程序间传送图像数据时,使用该程序间通信方法,本地化通信处理的优点变得更加突出。
在上述实施例中,将用于实现图5、图8至图11、图13至图15以及图17至图19所示的每个处理的程序读入主存储器102,并且CPU101执行该程序,从而实现其功能。上述实施例不限于这一例子,并且每个处理的全部或部分功能可以通过硬件实现。
上述辅助存储器103可以由下述装置构成:磁光盘单元、诸如闪速存储器的非易失存储器、诸如CD-ROM的只读记录介质、除随机存储器(RAM)外的易失性存储器或由它们的组合形成的计算机可读可写记录介质。
此外,可以用下述方式执行处理:将用于实现用于执行图5、图8至图11、图13至图15、图17至图19所示的各种处理的功能的程序记录在计算机可读记录介质上,将记录在这一记录介质上的程序读入计算机,并且由计算机执行该程序。所用短语“计算机系统”在此包括OS和诸如外围设备的硬件。
短语“计算机可读记录介质”是指便携式介质,诸如软盘、磁光盘、ROM或CD-ROM以及诸如包含在计算机系统中的硬盘的存储设备。此外,短语“计算机可读记录介质”包括存储器,诸如易失性存储器(RAM),当经网络例如互联网或诸如电话线的通信线路传送程序时,在用作服务器或客户机的计算机系统内,易失性存储器(RAM)将程序保留一段确定的时间。
可以经传输介质,或传输介质中的传输波,将上述程序从在其存储设备中存储该程序的计算机系统传送到另一计算机系统。这里,对于传送程序的短语“传输介质”是指具有传输信息功能的介质,如网络(通信网络),例如互联网和诸如电话线的通信线路。
上述程序也可以实现部分上述功能。此外,程序可以是所谓的差别文件(差别程序),通过它、通过结合已经存储在计算机系统中的程序,能实现上述功能。
此外,程序产品,诸如其中记录了上述程序的计算机可读记录介质,也能够作为本发明的实施例。上述程序、记录介质、传输介质和程序产品均包括在本发明的范围内。
因此,在根据本发明的程序间通信装置、程序间通信方法、计算机可读记录介质和程序中,在第一程序和第二程序间建立通信路径。建立由第一程序和第二程序共享的共享存储器的存储区。通过使用所建立的通信路径,将用于指定中间对象的指定信息和用于请求处理由指定信息指定的中间对象的请求信息,从第一程序通知给第二程序。第二程序在由所通知的指定信息指定的中间对象上执行对应于请求信息的处理。此时,在存储器中的处理之后通过存储中间对象体的数据和附加信息,从第二程序向第一程序传送处理之后的中间对象体的数据和处理之后的附加信息。因此,当第一程序和第二程序以协作方式处理一个中间对象时,由于下述特征,能够通过更少处理负荷,实现程序间通信:
(1)限制两个程序间的通信路径;
(2)经共享存储器传送通常具有大的数据大小的中间对象体的数据以及附加信息。
即,由于限制通信路径,所以不产生额外的通信管理处理。此外,由于具有大数据大小的数据由共享存储器共享,所以在每次每个程序处理数据时省略了象传统情况中那样在没有共享存储器时将数据移动到每个程序所分配的存储区的过程。
尽管已经参考当前认为的优选实施例描述了本发明,但是应理解到本发明不限于所公开的实施例。相反,本发明意图覆盖包括在所附加权利要求书的实质和范围内的各种改进和等同配置。下述权利要求书的范围符合最宽的解释以便包含所有这些改进和等同结构和功能。

Claims (19)

1.一种程序间通信装置,用于在能以协作方式处理公用中间对象的第一程序和第二程序间执行程序间通信,该程序间通信装置包括:
通信路径建立装置,用于在第一程序和第二程序间建立通信路径;
共享存储器分配装置,用于分配由第一程序和第二程序共享的共享存储器的存储区;
通知装置,用于通过使用由通信路径建立装置建立的通信路径,将用于指定中间对象的指定信息和用于请求处理由指定信息指定的中间对象的的请求信息,从第一程序通知到第二程序;以及
传送装置,用于当第二程序在由通知装置通知的指定信息指定的中间对象上,执行对应于请求信息的处理时,通过将处理之后中间对象体的数据和附加到中间对象上的附加信息存储在由共享存储器分配装置分配的共享存储器中,将处理后的中间对象体的数据从第二程序传送到第一程序。
2.根据权利要求1所述的程序间通信装置,其中,第一程序和第二程序在能并发地执行多个程序的计算机中工作。
3.根据权利要求1所述的程序间通信装置,其中,通信路径建立装置使用窗口标识信息和用于指定一个在用于控制第一程序和第二程序的窗口的视窗系统中的窗口处理功能的消息标识符。
4.根据权利要求3所述的程序间通信装置,其中,第一程序启动第二程序,并且通信路径建立装置传送启动时间参数,该启动时间参数至少包括作为第一程序的窗口中的窗口标识信息的第一窗口标识信息,和作为第一程序的窗口中的消息标识符的第一消息标识符。
5.根据权利要求4所述的程序间通信装置,其中,当启动时间参数传送到第二程序时,通信路径建立装置根据启动时间参数,将通信路径信息传送到指定为传输目的地的第一程序,通信路径信息至少包括作为第二程序的窗口中的窗口标识信息的第二窗口标识信息和作为第二程序的窗口中的消息标识符的第二消息标识符。
6.根据权利要求4所述的程序间通信装置,其中,
在共享存储器中,基于存储器标识信息,能指定由存储区分配装置分配的存储区;以及
通信路径建立装置使得存储器标识信息包括到启动时间参数和通信路径信息中。
7.根据权利要求3所述的程序间通信装置,进一步包括窗口控制装置,用于基于由通信路径建立装置使用的窗口标识信息和消息标识符,将第一程序的窗口的显示位置和大小控制为与第二程序的窗口相同的显示位置和大小。
8.根据权利要求7所述的程序间通信装置,其中,窗口控制装置在与第一程序相同的显示位置和相同的大小显示第二程序的窗口,其后,控制第一程序的窗口为非显示状态。
9.根据权利要求8所述的程序间通信装置,进一步包括状态控制装置,用于以下述方式进行控制:当窗口控制装置执行将显示从第一程序的窗口改变成第二程序的窗口的处理时,紧接在启动第二程序之前,忽略到第一程序的输入信号,并且用于在第一程序和第二程序间建立协作后,重新设置忽略第一程序输入信号的状态。
10.根据权利要求1所述的程序间通信装置,其中,当中间对象包含图像数据时,通知装置将包括图像数据的分辨率、色彩深度和色彩空间标识信息中的一个或多个的组合的请求信息,从第一程序通知到第二程序。
11.根据权利要求10所述的程序间通信装置,其中,当第二程序是用于校正或处理图像数据的图像处理程序,并且请求信息包含图像数据的分辨率、色彩深度和色彩空间标识信息中的一个或多个的组合时,第二程序在由指定信息指定的中间对象上,执行包括在请求信息中的多个请求中的仅对应于可执行请求的处理。
12.根据权利要求11所述的程序间通信装置,其中,当存在未在第二程序的处理中执行的未执行请求时,尽管事实上在请求信息中进行了请求,第一程序在由第二程序处理的中间对象上,执行对应于未执行请求的部分或全部处理。
13.根据权利要求1所述的程序间通信装置,其中,当中间对象包含图像数据时,由传送装置存储在共享存储器中的附加信息包括拍摄时间期间的信息,该信息是关于图像数据的拍摄的信息和/或用于在打印图像数据时校正图像数据的打印信息。
14.根据权利要求13所述的程序间通信装置,进一步包括校正装置,当第一程序是用于允许打印设备打印图像数据的图像打印程序时,用于从共享存储器读取由第二程序处理的图像数据,以及用于通过使用拍摄时间期间的信息和/或打印信息校正图像数据,并且至少拍摄时间期间的信息和/或打印信息包含在附加信息中。
15.根据权利要求1所述的程序间通信装置,进一步包括重新分配装置,当数据的大小大于共享存储器的存储大小时,其中该数据由中间对象的数据和附加信息组合而成,用于分配用作新的共享存储器的存储区,以及用于将中间对象体的数据和附加信息重新分配到新的共享存储器。
16.根据权利要求1所述的程序间通信装置,其中,在第一程序和第二程序中实现通信路径建立装置、共享存储器分配装置、通知装置、传送装置的一些或全部。
17.一种程序间通信方法,用于在能以协作方式处理公用中间对象的第一程序和第二程序间执行程序间通信,该程序间通信方法包括:
建立第一程序和第二程序之间的通信路径;
分配由第一程序和第二程序共享的共享存储器的存储区;
通过通信路径,将用于指定中间对象的指定信息和用于请求处理由指定信息指定的中间对象的请求信息,从第一程序传达给第二程序;以及
当第二程序在由指定信息指定的中间对象上执行对应于请求信息的处理时,通过将处理之后的中间对象体的数据和在处理之后的附加到中间对象上的附加信息存储在共享存储器中,将中间对象体的数据从第二程序传送到第一程序。
18.一种计算机可读记录介质,在其上记录了用于与程序间通信装置一起使用的程序,程序间通信装置用于在能以协作方式处理公用中间对象的第一程序和第二程序间执行程序间通信,该程序允许程序间通信装置执行:
在第一程序和第二程序间建立通信路径的第一步骤;
分配由第一程序和第二程序共享的共享存储器的存储区的第二步骤;
通过使用在第一步骤中建立的通信路径,将用于指定中间对象的指定信息和用于请求处理由指定信息指定的中间对象的请求信息,从第一程序传达给第二程序的第三步骤;以及
当第二程序在由第三步骤中通知的指定信息指定的中间对象上执行对应于请求信息的处理时,通过将处理之后的中间对象体的数据和在处理之后附加到中间对象上的附加信息存储在第二步骤中分配的共享存储器中,将中间对象体的数据从第二程序传送到第一程序的第四步骤。
19.一种用于与程序间通信装置一起使用的程序,程序间通信装置用于在能以协作方式处理公用中间对象的第一程序和第二程序间执行程序间通信,该程序允许程序间通信装置执行:
在第一程序和第二程序间建立一对通信路径的第一步骤;
分配由第一程序和第二程序共享的共享存储器的存储区的第二步骤;
通过使用在第一步骤中建立的通信路径,将用于指定中间对象的指定信息和用于请求处理由指定信息指定的中间对象的请求信息,从第一程序传达给第二程序的第三步骤;以及
当第二程序在由第三步骤中通知的指定信息指定的中间对象上执行对应于请求信息的处理时,通过将处理后的中间对象体的数据和在处理之后附加到中间对象上的附加信息存储在第二步骤中分配的共享存储器中,将中间对象体的数据从第二程序传送到第一程序的第四步骤。
CNB2004100709387A 2003-07-16 2004-07-16 程序间通信装置和方法 Expired - Fee Related CN1329826C (zh)

Applications Claiming Priority (4)

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

Publications (2)

Publication Number Publication Date
CN1577283A true CN1577283A (zh) 2005-02-09
CN1329826C CN1329826C (zh) 2007-08-01

Family

ID=34067397

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100709387A Expired - Fee Related CN1329826C (zh) 2003-07-16 2004-07-16 程序间通信装置和方法

Country Status (3)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102523481A (zh) * 2011-12-09 2012-06-27 成都东方盛行电子有限责任公司 一种节目播出系统用数据交换缓存的方法

Families Citing this family (14)

* 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 情報処理方法およびプログラム、情報処理装置
JP4415961B2 (ja) * 2006-03-15 2010-02-17 ブラザー工業株式会社 リムーバブルメディア装置およびデータ制御プログラム
JP4702123B2 (ja) * 2006-03-15 2011-06-15 ブラザー工業株式会社 表示制御装置、表示制御プログラム、画像記憶装置、通信プログラム、画像表示システム、および通信方法
JP5226997B2 (ja) * 2007-10-01 2013-07-03 株式会社日立製作所 操作支援プログラム
JP5361358B2 (ja) * 2008-12-11 2013-12-04 キヤノン株式会社 情報処理装置およびその制御方法、並びにプログラム
JP5839653B2 (ja) * 2011-03-31 2016-01-06 ブラザー工業株式会社 画像処理プログラム、情報処理端末装置および情報処理端末装置の制御方法
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 腾讯科技(深圳)有限公司 覆盖率测试方法及覆盖率测试装置
JP6800620B2 (ja) * 2016-06-06 2020-12-16 キヤノン株式会社 情報処理装置、制御方法、及びプログラム
US10459911B2 (en) 2016-09-27 2019-10-29 Bank Of America Corporation System and method for inter-program file control communication
KR101716861B1 (ko) * 2016-10-04 2017-03-15 (주)볼트마이크로 영상데이터 관리 장치 및 방법

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
US5301268A (en) * 1990-10-10 1994-04-05 Fuji Xerox Co., Ltd. Apparatus for transferring information between different window systems
JPH04251338A (ja) * 1990-10-10 1992-09-07 Fuji Xerox Co Ltd プロセス間通信の制御方式
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
EP0961968A1 (en) * 1996-11-27 1999-12-08 Sony Europa B.V. Method and system for generating software code
US20030079046A1 (en) * 1996-11-27 2003-04-24 Sony Europa B.V. Data communication method using typed continuation
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 (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102523481A (zh) * 2011-12-09 2012-06-27 成都东方盛行电子有限责任公司 一种节目播出系统用数据交换缓存的方法

Also Published As

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

Similar Documents

Publication Publication Date Title
US7266761B2 (en) Special API interface for interfacing an application with a TWAIN module, negotiating and presenting a user interface for inserting an image into a document
US7209249B2 (en) Method of and apparatus for image formation, and computer product
US7616215B2 (en) System and method for applying color management on captured images
JP4861883B2 (ja) 画像形成装置及びアプリケーション実行方法
US8472052B2 (en) Image reader converting image data into a data format corresponding to an application program, image reading system with the reader and image reading method for the system
US20070046996A1 (en) Image forming apparatus, control method for image forming apparatus, image forming system, and storage medium
CN1577283A (zh) 程序间通信装置和方法、计算机可读记录介质及程序
US8479095B2 (en) Workflow executing device, preview creating method
US8863036B2 (en) Information processing apparatus, display control method, and storage medium
US20100265529A1 (en) Control for display of multiple versions of a printable document for locked print
US20090158281A1 (en) Information processing apparatus, information processing method, and storage medium
JP2010109887A (ja) ドキュメント処理装置およびその制御方法、ドキュメント管理システムおよび該システムにおけるデータ処理方法並びにコンピュータプログラム
US20060203257A1 (en) System and method for managing output path with context preservation
CN1570778A (zh) 图像形成设备和功能键分配方法
US20050179961A1 (en) Method system and apparatus for scriptable multifunction device controller
EP3012753A1 (en) Acquisition of folder information from external services
US20120013631A1 (en) Color management system
JP2010102707A (ja) 情報処理装置、情報処理装置の制御方法、プログラムおよび記録媒体
JP2006018640A (ja) 情報入力装置及び情報入力制御プログラム
US10853002B2 (en) Filling blank areas on a page with print data for printing
JP2015233268A (ja) 情報処理装置、情報処理装置の制御方法、及び、プログラム
CN1497423A (zh) 数据处理设备
US20120154858A1 (en) Information processing apparatus and method of controlling the same
JP2004259250A (ja) 多機能サーバ装置
US20080205794A1 (en) Migration for old image database

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20070801

Termination date: 20160716