CN111813566B - 跨进程的拖拽方法、装置、设备及计算机可读存储介质 - Google Patents
跨进程的拖拽方法、装置、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN111813566B CN111813566B CN201910363702.9A CN201910363702A CN111813566B CN 111813566 B CN111813566 B CN 111813566B CN 201910363702 A CN201910363702 A CN 201910363702A CN 111813566 B CN111813566 B CN 111813566B
- Authority
- CN
- China
- Prior art keywords
- component
- dragging
- drag
- container
- configuration information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本申请实施例提供了一种跨进程的拖拽方法、装置、设备及计算机可读存储介质,该方法包括:获取拖拽物组件和拖拽容器组件,拖拽物组件处于第一进程内,拖拽容器组件处于第二进程内;根据拖拽物组件的第一配置信息,将拖拽物组件的第二配置信息通过进程间通信IPC发送给拖拽容器组件类;当拖拽物组件拖动到拖拽容器组件上方时,通过拖拽容器组件查询拖拽容器组件类接收的第二配置信息,将拖拽物组件放进拖拽容器组件内,以实现第一进程和第二进程之间的跨进程拖拽。该方法实现组件的跨进程拖拽,能够在拖拽过程中读取拖拽开始时设置的信息。
Description
技术领域
本申请涉及计算机技术领域,具体而言,本申请涉及一种跨进程的拖拽方法、装置、设备及计算机可读存储介质。
背景技术
原生的拖拽通过原生HTML5(万维网联盟(W3C)制定的最新版本的HTML语言标准)拖拽API(Application Programming Interface,应用程序编程接口)来实现。
现有技术的缺点在于拖拽过程的表现形式不能统一定制化,在每个需要使用到拖拽功能的地方都需要重新书写布局样式;在拖拽过程中无法获取拖拽开始时存储的数据,原生拖拽的API由于W3C出于安全防护的规定,dataTransfer这个对象在拖拽过程中的无法获取到最开始设置的数据。而在原生的API中,仅能通过该对象来存取数据;事件分发不能定制化,HTML5标签自带的事件也就是这些发出消息的名称与触发时机都是规定好的,只能去监听它规定好的那些事件消息;无法实现跨进程或者多窗口之间的拖拽,原生的拖拽仅能在单个页面或者窗口中进行拖拽。
发明内容
本申请针对现有的方式的缺点,提出一种跨进程的拖拽方法、装置、设备及计算机可读存储介质,用以解决如何实现组件的跨进程拖拽,能够在拖拽过程中读取拖拽开始时设置的信息的问题。
第一方面,本申请提供了一种跨进程的拖拽方法,包括:
获取拖拽物组件和拖拽容器组件,拖拽物组件处于第一进程内,拖拽容器组件处于第二进程内;
根据拖拽物组件的第一配置信息,将拖拽物组件的第二配置信息通过进程间通信IPC发送给拖拽容器组件类;
当拖拽物组件拖动到拖拽容器组件上方时,通过拖拽容器组件查询拖拽容器组件类接收的第二配置信息,将拖拽物组件放进拖拽容器组件内,以实现第一进程和第二进程之间的跨进程拖拽。
第二方面,本申请提供了一种跨进程的拖拽装置,包括:
第一处理模块,用于获取拖拽物组件和拖拽容器组件,拖拽物组件处于第一进程内,拖拽容器组件处于第二进程内;
第二处理模块,用于根据拖拽物组件的第一配置信息,将拖拽物组件的第二配置信息通过进程间通信IPC发送给拖拽容器组件类;
第三处理模块,用于当拖拽物组件拖动到拖拽容器组件上方时,通过拖拽容器组件查询拖拽容器组件类接收的第二配置信息,将拖拽物组件放进拖拽容器组件内,以实现第一进程和第二进程之间的跨进程拖拽。
第三方面,本申请提供了一种电子设备,包括:处理器、存储器和总线;
总线,用于连接处理器和存储器;
存储器,用于存储操作指令;
处理器,用于通过调用操作指令,执行本申请第一方面的跨进程的拖拽方法。
第四方面,本申请提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被用于执行本申请第一方面的跨进程的拖拽方法。
本申请实施例提供的技术方案,至少具有如下有益效果:
获取拖拽物组件和拖拽容器组件,拖拽物组件处于第一进程内,拖拽容器组件处于第二进程内;根据拖拽物组件的第一配置信息,将拖拽物组件的第二配置信息通过进程间通信IPC发送给拖拽容器组件类;当拖拽物组件拖动到拖拽容器组件上方时,通过拖拽容器组件查询拖拽容器组件类接收的第二配置信息,将拖拽物组件放进拖拽容器组件内,以实现第一进程和第二进程之间的跨进程拖拽。如此,实现拖拽物组件和拖拽容器组件的跨进程拖拽,能够在拖拽物组件拖拽过程中将拖拽物组件的第二配置信息通过IPC发送给拖拽容器组件类,拖拽容器组件查询到拖拽容器组件类接收的第二配置信息,从而实现拖拽容器组件读取拖拽开始时拖拽物组件设置的信息。
本申请附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的一种跨进程的拖拽方法的流程示意图;
图2为本申请实施例提供的另一种跨进程的拖拽方法的流程示意图;
图3为本申请实施例提供的一种跨进程的拖拽装置的结构示意图;
图4为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
实施例一
本申请实施例中提供了一种跨进程的拖拽方法,该方法的流程示意图如图1所示,该方法包括:
S101,获取拖拽物组件和拖拽容器组件,拖拽物组件处于第一进程内,拖拽容器组件处于第二进程内。
S102,根据拖拽物组件的第一配置信息,将拖拽物组件的第二配置信息通过进程间通信IPC发送给拖拽容器组件类。
S103,当拖拽物组件拖动到拖拽容器组件上方时,通过拖拽容器组件查询拖拽容器组件类接收的第二配置信息,将拖拽物组件放进拖拽容器组件内,以实现第一进程和第二进程之间的跨进程拖拽。
需要说明的是,上方就是用户视觉上的上方,例如,两张图片叠在一起,一张图片在另一张图片的上方。拖拽物组件拖动实质上是鼠标在移动,此时鼠标显示的效果是可以自定义更改,例如,显示成拖拽物一样的视觉效果。
本申请实施例中,获取拖拽物组件和拖拽容器组件,拖拽物组件处于第一进程内,拖拽容器组件处于第二进程内;根据拖拽物组件的第一配置信息,将拖拽物组件的第二配置信息通过进程间通信IPC发送给拖拽容器组件类;当拖拽物组件拖动到拖拽容器组件上方时,通过拖拽容器组件查询拖拽容器组件类接收的第二配置信息,将拖拽物组件放进拖拽容器组件内,以实现第一进程和第二进程之间的跨进程拖拽。如此,实现拖拽物组件和拖拽容器组件的跨进程拖拽,能够在拖拽物组件拖拽过程中将拖拽物组件的第二配置信息通过IPC发送给拖拽容器组件类,拖拽容器组件查询到拖拽容器组件类接收的第二配置信息,从而实现拖拽容器组件读取拖拽开始时拖拽物组件设置的信息。
可选地,获取拖拽物组件和拖拽容器组件,包括:
构建拖拽物组件类和所述拖拽容器组件类;
将拖拽物组件类实例化,得到拖拽物组件;
将拖拽容器组件类实例化,得到拖拽容器组件。
可选地,拖拽物组件类包括属性、生命周期函数和方法函数。拖拽容器组件类包括属性、生命周期函数、方法函数、注册全局监听函数和静态只读属性。
可选地,根据拖拽物组件的第一配置信息,将拖拽物组件的第二配置信息通过进程间通信IPC发送给拖拽容器组件类,包括:
当第一配置信息为预设判断值时,确定拖拽物组件能够被拖动,第一配置信息用于表征拖拽物组件是否能够被拖动以及拖拽之后需要显示的效果信息;
当拖拽物组件能够被拖动时,拖拽物组件将第二配置信息通过IPC发送给拖拽容器组件类,第二配置信息包括拖拽物组件的类型和数据传输dataTransfer对象中的数据,拖拽容器组件类包括各拖拽容器组件所共有的属性。
可选地,通过拖拽容器组件查询拖拽容器组件类接收的第二配置信息,将拖拽物组件放进拖拽容器组件内,包括:
通过拖拽容器组件查询拖拽容器组件类接收的第二配置信息,判断拖拽容器组件与拖拽物组件是否匹配;
当拖拽容器组件与拖拽物组件是匹配时,将拖拽物组件放进拖拽容器组件内。
可选地,在将拖拽物组件放进拖拽容器组件内之前,还包括:
当拖拽容器组件允许拖拽物组件放进拖拽容器组件内时,拖拽容器组件显示对应的预设显示状态。
可选地,利用Web Components技术标准来定义了两个可在原生浏览器中使用的组件,在组件的实现过程中通过HTML5的拖放API实现原生拖放事件的监听,并在此基础上做一些起始拖拽过程中的信息存储。通过这种自定义组件的形式,统一了拖拽过程中的具体效果表现形式,封装了一些常用的类型与拖拽过程的表现形式,以达到更加易用方便的目的。同时借助系统自身的IPC交互接口,将拖拽信息存储在窗口隐藏后不被销毁的进程中,能在任意的窗口读取实现跨进程拖拽。组件是面向开发者的,开发者可以通过使用定义好的这两个拖拽基础组件来扩展出更多的功能。同时内部使用Shadow DOM方式可以保证组件的内部样式不会轻易被外部所更改或影响到。由于拖拽本身有拖拽容器和拖拽物的区别,因而分别设计实现了拖拽容器(ui-drag-area)和拖拽物(ui-drag-item)两个基础组件。组件的实现方面是利用了Web Components,Web Components标准使开发者能够将HTML页面的功能封装为custom elements(自定义标签)。可以通过CustomElementRegistry.define()方法来注册一个custom element,该方法接受以下参数:
一个DOMString,用于表示所创建的元素的名称。其中,custom element的名称中必须要有短横线。
一个类对象,用于定义元素的行为。
一个包含extends属性的配置对象,是可选参数。它指定了所创建的元素继承自哪个内置元素,可以继承任何内置元素。
可选地,创建的元素名称可以根据需求结合规范来定义,这里命名为ui-drag-item与ui-drag-area,定义之后便可以在文档中的任何位置使用这些新的标签,并且这些标签的表现形式都是一致的。这个定义的过程本身只是调用一些接口,传入的参数是对应的用于定义元素的行为的类对象,类对象定义了整个自定义标签的具体行为。
可选地,拖拽物DragItem组件类的实现。具体地,创建一个继承于window.HTMLElement(所有的HTML元素的基础类)的类,命名为DragItem。为这个新建类添加type(拖拽物组件类型)、additional(拓展信息,存储一些其他需求数据)属性,设置好对应的get、set函数(在javascript的语法中,类内部可以使用get、set关键字,用于定义某个属性的存值函数和取值函数,拦截该属性的存取行为),分别对应该组件在文档流中的type、additional属性,主要用于使用者来配置当前拖拽物的中信息等,这些数据之后会在开始拖拽的时候被发送到主进程的信息中心。在connectedCallback(webcomponent的生命周期函数,当该组件首次被插入页面时,将被调用)函数中,处理一些属性的初始化是事件的绑定。对于属性的初始化处理主要是获取当前组件的draggable属性是否被设置,未设置默认这个元素是不允许拖拽的,相当于是一个开关。之后是监听该元素的dragstart和dragend事件(原生的HTML5API),绑定好对应的处理函数。分别实现了两个类的私有方法函数onDragStart与onDragEnd来处理。对拖拽组件而言比较重要的处理是在onDragStart方法上,在这里会去获取当前元素所被设置的type与additional(可以根据需要再自行添加)会连同dataTransfer中的数据一同通过IPC消息通知DragArea组件类,这样使用该组件的过程中就可以直接用与原生HTML5一样方法的存储数据。而DragArea组件类将会在收到对应消息后用变量来缓存该数据。onDragEnd的实现主要是发出一个IPC消息,通知DragArea组件当前拖拽已经停止,而DragArea组件类将会在收到对应消息后置空之前缓存拖拽数据的变量。最后在disconnectedCallback(webcomponent生命周期函数,当改组件从页面中删除时,被调用)函数中调用removeEventListener(HTML5移除事件监听函数的API)移除这两个绑定事件,以免闭包造成的内存泄漏。
可选地,拖拽容器DragArea组件类的实现。先创建一个继承于window.HTMLElement的类,命名为DragArea。为这个新建类添加type、additional、dropable(是否允许拖拽)、hoving(标识是否有拖拽物经过)属性,并设置好对应的get、set函数规则。type与DragItem是同类的数据,拖拽容器组件会在拖拽过程中比对自身设置的type与当前拖拽物组件的type属性是否匹配,来决定是否要响应这次的拖拽操作。对于使用者来说就是一个可以设置允许拖拽的资源类型入口。
可选地,对于拖拽数据的存储,需要定义一个全局变量DragInfo来存储,同时监听IPC对应的消息函数来更改这个全局变量,这里监听的IPC消息就是DragItem在开始拖拽与结束拖拽时,发送过来的消息,在接受到开始拖拽的消息后需要把数据存储在DragInfo中。在接受到停止拖拽消息后,则需要把DragInfo中的数据清空。同时DragArea需要添加一个名为currentDragInfo的静态只读属性,在对应的get函数返回拖拽数据DragInfo。属性设置为静态的目的是为了能在类不实例化的情况下也能正常访问到拖拽数据。这也是之后跨进程拖拽时,去获取拖拽数据的位置。之后需要在插入页面后,通过connectedCallback函数监听dragover、dragleave、drop这三个事件,监听的处理函数对于类自身的方法onDragOver,onDragLeave,onDrop。dragover事件会在拖拽物组件经过当前拖拽容器组件上方时每几百毫秒触发一次函数,在onDragOver函数中首先要做的处理是调用event.preventDefault()来阻止默认事件,否则将无法拖拽。之后就是设hoving为true,对当前拖拽物组件数据(即之前开始拖拽时缓存的DragInfo变量)与拖拽容器组件本身设置的type进行进行比对,根据是否匹配来更改类的属性dropable。通过这个属性与hoving的变化,用户可以知道当前的拖拽物是否匹配,从而去更改一些不同的显示效果,例如,拖拽容器组件加一层红色的框来告诉用户当前拖拽物组件不允许拖拽,容器本身加一层绿色的框来表示允许拖拽。通常在这个事件里,调用原生的事件将无法获取到当前拖拽物信息,而在使用这个组件后可利用上文提到过的直接调用静态属性currentDragInfo来获取。drop、dropleave事件分别会在拖拽物放置到拖拽容器后、与拖拽物离开拖拽容器后触发,对于的onDrop、onDropLeave函数主要时做一些状态的更改收尾工作,例如,hoving需要在离开拖拽容器后改为false。在之后就是和DragItem类一样,在disconnectedCallback函数中移除以上三个事件监听函数。
可选地,在一个项目里,这种拖拽的生成规则通常是一整套统一的,有了这样一套拖拽物组件和拖拽容器组件,就可以通过更加便捷的方式来编写一个效果类似的功能。拖拽物组件的显示也一样,可以指定自己的一套规则来快速的通过简单配置就生成不同的显示效果。同时在拖拽进行中可以随时按照需要向外发出事件消息,这些事件都是可以在组件上绑定监听函数来接收到,这也是自定义事件分发机制。例如,整个拖拽过程都可以是自动化的,由组件原来的生成规则来,而如果想在拖拽容器组件接收到拖拽物组件后收到一个名为“confirm”的消息以便处理之后的一些逻辑。就可以在拖拽容器的实现类里面,处理完拖拽物数据后通过HTML5接口dispatchEvent将定义的名为confirm的事件(有自定义事件接口)派发出去。
本申请实施例中提供了另一种跨进程的拖拽方法,该方法的流程示意图如图2所示,该方法包括:
S201,开始拖动拖拽物组件。
具体地,拖拽物组件在代码实现上已经对自身绑定了dragstart事件监听函数(使用HTML5的接口),在用户开始拖动时,事件将会触发从而调用之前绑定的函数。
S202,判断拖拽物组件设置的第一配置信息是否为真值。
具体地,在之前绑定的函数内,判断拖拽物组件设置的第一配置信息,即dragable属性是否为真值。如果为真值,则转到S203处理;如果为假值,不允许拖拽则,则转到S210处理。
S203,拖拽物组件将第二配置信息通过IPC广播出去,拖拽容器组件类收到第二配置信息,缓存第二配置信息。
具体地,拖拽物组件将自身的类型、其他用户通过addition属性配置进来的数据以及dataTransfer对象中的数据一起通过IPC消息广播出去。所以有需要传递给拖拽容器组件的信息内容都可以通过这个配置设置进去。
S204,拖动拖拽物组件到拖拽容器组件上方。
可选地,当拖拽物组件被拖拽到拖拽容器组件上方后的每一次移动都会触发之前在拖拽容器组件上绑定的dragover事件监听函数,移动过程中平均每几百毫秒触发一次事件调用函数。
S205,拖拽容器组件通过拖拽容器组件类查询第二配置信息,判断拖拽物组件是否与当前拖拽容器组件配置的类型匹配,当匹配时,则转到S206处理,当不匹配时,则转到S207处理。
具体地,在这个事件调用函数内,拖拽容器组件会通过拖拽容器组件类查询在收到发送拖拽用户数据的IPC消息后缓存的数据。根据数据中存有的当前拖拽物信息和容器自身配置的一些允许类型进行比对,判断当前拖拽物组件是否是允许被拖拽进这个拖拽容器组件内的。并将这个结果的真假值记录在自身的属性dragable上。
S206,显示允许拖拽的显示效果。
S207,显示不允许拖拽的显示效果,则转到S210处理。
可选地,对组件编写样式(用来定义网页标签的显示效果)时,可以针对这个标签在这个属性不同状态来编写不同的显示效果。对于这个显示效果,组件通常会制定一套统一的规则,例如,允许拖拽外框就显示成绿色,不允许拖拽外框显示为红色。当然在组件的使用上,可以继续为组件编写这些不同的样式,会覆盖原有的效果达到扩展的目的。关于拖拽容器组件类,拖拽容器组件本质上可以理解为拖拽容器组件类实例化的一个对象,这个类是所有拖拽容器组件的祖先,所有实例化的拖拽容器组件继承了拖拽容器组件类的所有公开方法属性,同时因为不同的属性配置实例化后的效果又有些不同。各拖拽容器组件的祖先都是同一个,这个拖拽容器组件类在计算机内存中只有一个,而拖拽容器组件可以有很多个。拖拽容器组件类的设计上,在监听IPC消息后,存储下来的数据并不在每个拖拽容器组件都可以继承的公开属性上,而是存在拖拽容器组件类的属性上,拖拽容器组件类的实例对象将无法直接访问,各拖拽容器组件可以通过访问拖拽容器组件类来访问到这个属性值。拖拽容器组件不需要关心拖拽数据的变化更新,拖拽容器组件只需要知道在拖拽容器组件需要查阅这个数据的时候,可以去拖拽容器组件类查询就可以了。
S208,将拖拽物组件放下到拖拽容器组件内。
可选地,在拖拽物组件放下到拖拽容器组件内时,将会触发绑定在当前这个拖拽容器组件上的drop事件监听函数。
S209,拖拽容器组件处理拖拽完成的生成效果。
具体地,在drop事件监听函数函数上,定义了一系列根据不同拖拽物数据生成不同显示效果的规则处理。可选地,拖拽的拖拽物组件是图片,传递过来的数据中类型值是图片,并且记录了这个图片的地址,拖拽容器组件就会去读取这个图片地址的图像数据,最后显示在拖拽容器组件里。
S210,流程结束。
应用本申请实施例,至少具有如下有益效果:
实现拖拽物组件和拖拽容器组件的跨进程拖拽,能够在拖拽物组件拖拽过程中将拖拽物组件的第二配置信息通过IPC发送给拖拽容器组件类,拖拽容器组件查询到拖拽容器组件类接收的第二配置信息,从而实现拖拽容器组件读取拖拽开始时拖拽物组件设置的信息。
实施例二
基于相同的发明构思,本申请实施例还提供了一种跨进程的拖拽装置,该装置的结构示意图如图3所示,跨进程的拖拽装置30,包括第一处理模块301、第二处理模块302和第三处理模块303。
第一处理模块301,用于获取拖拽物组件和拖拽容器组件,拖拽物组件处于第一进程内,拖拽容器组件处于第二进程内;
第二处理模块302,用于根据拖拽物组件的第一配置信息,将拖拽物组件的第二配置信息通过进程间通信IPC发送给拖拽容器组件类;
第三处理模块303,用于当拖拽物组件拖动到拖拽容器组件上方时,通过拖拽容器组件查询拖拽容器组件类接收的第二配置信息,将拖拽物组件放进拖拽容器组件内,以实现第一进程和第二进程之间的跨进程拖拽。
第一处理模块301,具体用于构建拖拽物组件类和所述拖拽容器组件类;将拖拽物组件类实例化,得到拖拽物组件;将拖拽容器组件类实例化,得到拖拽容器组件。
可选地,第二处理模块302,具体用于当第一配置信息为预设判断值时,确定拖拽物组件能够被拖动,第一配置信息用于表征拖拽物组件是否能够被拖动以及拖拽之后需要显示的效果信息;当拖拽物组件能够被拖动时,拖拽物组件将第二配置信息通过IPC发送给拖拽容器组件类,第二配置信息包括拖拽物组件的类型和数据传输dataTransfer对象中的数据,拖拽容器组件类包括各拖拽容器组件所共有的属性。
可选地,第三处理模块303,具体用于通过拖拽容器组件查询拖拽容器组件类接收的第二配置信息,判断拖拽容器组件与拖拽物组件是否匹配;当拖拽容器组件与拖拽物组件是匹配时,将拖拽物组件放进拖拽容器组件内。
可选地,第三处理模块303,具体用于当拖拽容器组件允许拖拽物组件放进拖拽容器组件内时,拖拽容器组件显示对应的预设显示状态。
应用本申请实施例,至少具有如下有益效果:
获取拖拽物组件和拖拽容器组件,拖拽物组件处于第一进程内,拖拽容器组件处于第二进程内;根据拖拽物组件的第一配置信息,将拖拽物组件的第二配置信息通过进程间通信IPC发送给拖拽容器组件类;当拖拽物组件拖动到拖拽容器组件上方时,通过拖拽容器组件查询拖拽容器组件类接收的第二配置信息,将拖拽物组件放进拖拽容器组件内,以实现第一进程和第二进程之间的跨进程拖拽。如此,实现拖拽物组件和拖拽容器组件的跨进程拖拽,能够在拖拽物组件拖拽过程中将拖拽物组件的第二配置信息通过IPC发送给拖拽容器组件类,拖拽容器组件查询到拖拽容器组件类接收的第二配置信息,从而实现拖拽容器组件读取拖拽开始时拖拽物组件设置的信息。
本申请实施例提供的跨进程的拖拽装置中未详述的内容,可参照上述实施例一提供的跨进程的拖拽方法,本申请实施例提供的跨进程的拖拽装置能够达到的有益效果与上述实施例一提供的跨进程的拖拽方法相同,在此不再赘述。
实施例三
基于相同的发明构思,本申请实施例还提供了另一种电子设备,该电子设备的结构示意图如图4所示,该电子设备6000包括至少一个处理器6001、存储器6002和总线6003,至少一个处理器6001均与存储6002电连接;存储器6002被配置用于存储有至少一个计算机可执行指令,处理器6001被配置用于执行该至少一个计算机可执行指令,从而执行如本申请实施例一中任意一个实施例或任意一种可选实施方式提供的任意一种跨进程的拖拽方法的步骤。
进一步,处理器6001可以是FPGA(Field-Programmable Gate Array,现场可编程门阵列)或者其它具有逻辑处理能力的器件,如MCU(Microcontroller Unit,微控制单元)、CPU(Central Process Unit,中央处理器)。
应用本申请实施例,至少具有如下有益效果:
获取拖拽物组件和拖拽容器组件,拖拽物组件处于第一进程内,拖拽容器组件处于第二进程内;根据拖拽物组件的第一配置信息,将拖拽物组件的第二配置信息通过进程间通信IPC发送给拖拽容器组件类;当拖拽物组件拖动到拖拽容器组件上方时,通过拖拽容器组件查询拖拽容器组件类接收的第二配置信息,将拖拽物组件放进拖拽容器组件内,以实现第一进程和第二进程之间的跨进程拖拽。如此,实现拖拽物组件和拖拽容器组件的跨进程拖拽,能够在拖拽物组件拖拽过程中将拖拽物组件的第二配置信息通过IPC发送给拖拽容器组件类,拖拽容器组件查询到拖拽容器组件类接收的第二配置信息,从而实现拖拽容器组件读取拖拽开始时拖拽物组件设置的信息。
实施例四
基于相同的发明构思,本申请实施例还提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序用于被处理器执行时实现本申请实施例一中任意一个实施例或任意一种跨进程的拖拽方法的步骤。
本申请实施例提供的计算机可读存储介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、CD-ROM、和磁光盘)、ROM(Read-Only Memory,只读存储器)、RAM(RandomAccess Memory,随即存储器)、EPROM(Erasable Programmable Read-Only Memory,可擦写可编程只读存储器)、EEPROM(Electrically Erasable Programmable Read-Only Memory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,可读存储介质包括由设备(例如,计算机)以能够读的形式存储或传输信息的任何介质。
应用本申请实施例,至少具有如下有益效果:
获取拖拽物组件和拖拽容器组件,拖拽物组件处于第一进程内,拖拽容器组件处于第二进程内;根据拖拽物组件的第一配置信息,将拖拽物组件的第二配置信息通过进程间通信IPC发送给拖拽容器组件类;当拖拽物组件拖动到拖拽容器组件上方时,通过拖拽容器组件查询拖拽容器组件类接收的第二配置信息,将拖拽物组件放进拖拽容器组件内,以实现第一进程和第二进程之间的跨进程拖拽。如此,实现拖拽物组件和拖拽容器组件的跨进程拖拽,能够在拖拽物组件拖拽过程中将拖拽物组件的第二配置信息通过IPC发送给拖拽容器组件类,拖拽容器组件查询到拖拽容器组件类接收的第二配置信息,从而实现拖拽容器组件读取拖拽开始时拖拽物组件设置的信息。
本技术领域技术人员可以理解,可以用计算机程序指令来实现这些结构图和/或框图和/或流图中的每个框以及这些结构图和/或框图和/或流图中的框的组合。本技术领域技术人员可以理解,可以将这些计算机程序指令提供给通用计算机、专业计算机或其他可编程数据处理方法的处理器来实现,从而通过计算机或其他可编程数据处理方法的处理器来执行本申请公开的结构图和/或框图和/或流图的框或多个框中指定的方案。
本技术领域技术人员可以理解,本申请中已经讨论过的各种操作、方法、流程中的步骤、措施、方案可以被交替、更改、组合或删除。进一步地,具有本申请中已经讨论过的各种操作、方法、流程中的其他步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。进一步地,现有技术中的具有与本申请中公开的各种操作、方法、流程中的步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。
以上所述仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种跨进程的拖拽方法,其特征在于,包括:
获取拖拽物组件和拖拽容器组件,所述拖拽物组件处于第一进程内,所述拖拽容器组件处于第二进程内;
根据所述拖拽物组件的第一配置信息,将所述拖拽物组件的第二配置信息通过进程间通信IPC发送给拖拽容器组件类;
当所述拖拽物组件拖动到所述拖拽容器组件上方时,通过所述拖拽容器组件查询所述拖拽容器组件类接收的所述第二配置信息,将所述拖拽物组件放进所述拖拽容器组件内,以实现所述第一进程和所述第二进程之间的跨进程拖拽;
所述根据所述拖拽物组件的第一配置信息,将所述拖拽物组件的第二配置信息通过进程间通信IPC发送给拖拽容器组件类,包括:
当所述第一配置信息为预设判断值时,确定所述拖拽物组件能够被拖动,所述第一配置信息用于表征所述拖拽物组件是否能够被拖动以及拖拽之后需要显示的效果信息;
当所述拖拽物组件能够被拖动时,所述拖拽物组件将所述第二配置信息通过IPC发送给所述拖拽容器组件类,所述第二配置信息包括所述拖拽物组件的类型和数据传输dataTransfer对象中的数据。
2.根据权利要求1所述的方法,其特征在于,所述获取拖拽物组件和拖拽容器组件,包括:
构建拖拽物组件类和所述拖拽容器组件类;
将所述拖拽物组件类实例化,得到所述拖拽物组件;
将所述拖拽容器组件类实例化,得到所述拖拽容器组件。
3.根据权利要求1或2所述的方法,其特征在于,所述拖拽容器组件类包括各拖拽容器组件所共有的属性。
4.根据权利要求3所述的方法,其特征在于,所述通过所述拖拽容器组件查询所述拖拽容器组件类接收的第二配置信息,将所述拖拽物组件放进所述拖拽容器组件内,包括:
通过所述拖拽容器组件查询所述拖拽容器组件类接收的第二配置信息,判断所述拖拽容器组件与所述拖拽物组件是否匹配;
当所述拖拽容器组件与所述拖拽物组件是匹配时,将所述拖拽物组件放进所述拖拽容器组件内。
5.根据权利要求4所述的方法,其特征在于,在所述将所述拖拽物组件放进所述拖拽容器组件内之前,还包括:
当所述拖拽容器组件允许所述拖拽物组件放进所述拖拽容器组件内时,所述拖拽容器组件显示对应的预设显示状态。
6.一种跨进程的拖拽装置,其特征在于,包括:
第一处理模块,用于获取拖拽物组件和拖拽容器组件,所述拖拽物组件处于第一进程内,所述拖拽容器组件处于第二进程内;
第二处理模块,用于根据所述拖拽物组件的第一配置信息,将所述拖拽物组件的第二配置信息通过进程间通信IPC发送给拖拽容器组件类;
第三处理模块,用于当所述拖拽物组件拖动到所述拖拽容器组件上方时,通过所述拖拽容器组件查询所述拖拽容器组件类接收的所述第二配置信息,将所述拖拽物组件放进所述拖拽容器组件内,以实现所述第一进程和所述第二进程之间的跨进程拖拽;
所述第二处理模块,用于当所述第一配置信息为预设判断值时,确定所述拖拽物组件能够被拖动,所述第一配置信息用于表征所述拖拽物组件是否能够被拖动以及拖拽之后需要显示的效果信息;当所述拖拽物组件能够被拖动时,所述拖拽物组件将所述第二配置信息通过IPC发送给所述拖拽容器组件类,所述第二配置信息包括所述拖拽物组件的类型和数据传输dataTransfer对象中的数据。
7.根据权利要求6所述的装置,其特征在于,包括:
所述第一处理模块,用于构建拖拽物组件类和所述拖拽容器组件类;将所述拖拽物组件类实例化,得到所述拖拽物组件;将所述拖拽容器组件类实例化,得到所述拖拽容器组件。
8.根据权利要求6或7所述的装置,其特征在于,所述拖拽容器组件类包括各拖拽容器组件所共有的属性。
9.一种电子设备,其特征在于,包括:处理器、存储器;
所述存储器,用于存储计算机程序;
所述处理器,用于通过调用所述计算机程序,执行上述权利要求1-5中任一项所述的跨进程的拖拽方法。
10.一种计算机可读存储介质,其特征在于,存储有计算机程序,所述计算机程序用于被处理器执行时实现如权利要求1-5中任一项所述的跨进程的拖拽方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910363702.9A CN111813566B (zh) | 2019-04-30 | 2019-04-30 | 跨进程的拖拽方法、装置、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910363702.9A CN111813566B (zh) | 2019-04-30 | 2019-04-30 | 跨进程的拖拽方法、装置、设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111813566A CN111813566A (zh) | 2020-10-23 |
CN111813566B true CN111813566B (zh) | 2023-01-31 |
Family
ID=72844139
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910363702.9A Active CN111813566B (zh) | 2019-04-30 | 2019-04-30 | 跨进程的拖拽方法、装置、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111813566B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102566983A (zh) * | 2010-12-07 | 2012-07-11 | 腾讯科技(深圳)有限公司 | 基于Windows系统的对象拖拽实现方法及其系统 |
CN106775334A (zh) * | 2016-11-14 | 2017-05-31 | 北京奇虎科技有限公司 | 移动终端上的文件调用方法、装置及移动终端 |
CN109542648A (zh) * | 2018-11-23 | 2019-03-29 | 凌云光技术集团有限责任公司 | 一种跨进程通信的方法及装置 |
CN109684219A (zh) * | 2018-12-26 | 2019-04-26 | 百度在线网络技术(北京)有限公司 | 系统性能测试方法、装置及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9740390B2 (en) * | 2013-03-11 | 2017-08-22 | Spikes, Inc. | Dynamic clip analysis |
-
2019
- 2019-04-30 CN CN201910363702.9A patent/CN111813566B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102566983A (zh) * | 2010-12-07 | 2012-07-11 | 腾讯科技(深圳)有限公司 | 基于Windows系统的对象拖拽实现方法及其系统 |
CN106775334A (zh) * | 2016-11-14 | 2017-05-31 | 北京奇虎科技有限公司 | 移动终端上的文件调用方法、装置及移动终端 |
CN109542648A (zh) * | 2018-11-23 | 2019-03-29 | 凌云光技术集团有限责任公司 | 一种跨进程通信的方法及装置 |
CN109684219A (zh) * | 2018-12-26 | 2019-04-26 | 百度在线网络技术(北京)有限公司 | 系统性能测试方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111813566A (zh) | 2020-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11755346B2 (en) | Method and apparatus for user interface modification | |
CN106933629B (zh) | 加载浏览器插件图标的方法及浏览器 | |
US20210349963A1 (en) | Configuration of content site user interaction monitoring in data networks | |
CN111984902A (zh) | 可视化页面配置方法、系统、计算机设备和存储介质 | |
CN112631591B (zh) | 表元素联动方法、装置、设备与计算机可读存储介质 | |
CN108304234B (zh) | 一种页面展示方法及装置 | |
CN113641338B (zh) | 一种动态生成视图组件的方法及装置 | |
CN111090823A (zh) | 一种页面应用的集成平台以及应用访问方法、装置和设备 | |
CN111367518A (zh) | 页面布局方法、装置、计算设备及计算机存储介质 | |
CN115309516A (zh) | 一种应用生命周期的检测方法、装置及计算机设备 | |
CN111783019A (zh) | 浏览器子页面创建方法、装置、计算机设备和存储介质 | |
CN112287255B (zh) | 页面构建方法及装置、计算设备、计算机可读存储介质 | |
CN111813566B (zh) | 跨进程的拖拽方法、装置、设备及计算机可读存储介质 | |
CN112783494A (zh) | 一种骨架屏自动生成方法、应用程序页面更新方法及装置 | |
CN103902727A (zh) | 网络搜索方法和装置 | |
CN112632917B (zh) | 在线文档处理方法、装置、电子设备以及存储介质 | |
CN111399836A (zh) | 修改页面属性的方法及装置 | |
CN109684156A (zh) | 基于混合模式应用的监控方法、装置、终端及存储介质 | |
CN112486378B (zh) | 图形生成方法、装置、终端及存储介质 | |
CN111198899B (zh) | 应用程序中实体渲染的开发系统及方法 | |
CN113407183A (zh) | 界面生成方法、装置、设备及存储介质 | |
CN108459858B (zh) | 一种应用程序的功能调整方法、装置、设备及存储介质 | |
CN113568692B (zh) | 多语言显示方法、装置、电子设备及存储介质 | |
CN116954937A (zh) | 小程序中的文件处理方法、装置、设备及可读存储介质 | |
CN115600032A (zh) | 提示框兼容方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |