一种对文件/文件夹进行操作的方法及装置与流程

文档序号:12648585阅读:306来源:国知局
一种对文件/文件夹进行操作的方法及装置与流程
本发明涉及计算机技术领域,尤其涉及一种对文件/文件夹进行操作的方法及装置。

背景技术:
应用软件产品在运行过程中常常需要对文件/文件夹进行操作,比如创建一些临时文件/文件夹,以用于存储应用软件产品在运行过程中产生的临时文件等,而在应用软件产品运行完成后需要删除这些临时产生的文件/文件夹。目前,通常的做法是通过调用操作系统提供的系统API接口对文件/或文件夹进行操作。在应用软件产品开发时,通过操作系统提供的API接口对系统中的文件/文件夹执行创建、复制、移动、删除等操作。例如,以Windows操作系统为例,文件操作相关的系统API包括:CreateFile,WriteFile,ReadFile,CopyFile,MoveFile,DeleteFile等,而文件夹操作相关系统API包括:CreateDirectory,RemoveDirectory等。但是,本领域的技术人员可以理解,目前绝大多数系统都安装有杀毒软件等安全防护工具,而安全防护工具的其中一个功能就是对系统中的文件或文件夹进行保护,防止恶意程序对其进行修改、删除,或者阻止恶意程序在操作系统中创建文件/文件夹等。如果所开发的软件产品在安装有杀毒软件等安全防护工具的系统下运行,且对安全防护工具所保护的文件/文件夹进行操作时,安全防护工具可能会对调用系统API的应用程序进行拦截,更有可能直接拦截该应用程序的启动。可见,通过调用操作系统提供的系统API对文件/文件夹操作存在一定的风险,即在安装有杀毒软件等安全防护工具的系统中无法运行,造成软件产品无法运行。

技术实现要素:
为解决现有技术中存在的上述问题,本发明提供了一种文件/文件夹的操作方法及装置,以便能够有效地对文件/文件夹进行操作。根据本发明的一方面,其提供了一种对文件/文件夹进行操作的方法,该方法包括:启动文件浏览界面窗口;在文件浏览界面窗口中获取文件/文件夹的操作坐标;在文件浏览界面窗口中根据所述操作坐标进行文件/文件夹操作。可选地,通过模拟用户在图形用户界面中的操作来启动文件浏览界面窗口、对文件/文件夹进行操作。可选地,所述模拟用户在图形用户界面中的操作包括:在文件浏览界面窗口中根据所述操作坐标模拟键盘和/或鼠标进行文件/文件夹操作。可选地,所述在文件浏览界面窗口中获取文件/文件夹的操作坐标包括获取文件/文件夹在文件浏览界面窗口中的坐标,或获取文件浏览界面窗口中的空白位置处坐标。可选地,所述启动文件浏览界面窗口,包括:获取所述文件/文件夹的上级路径;根据所述路径通过系统接口启动文件浏览界面窗口;可选地,获取文件/文件夹在文件浏览界面窗口中的操作坐标具体包括:获取文件浏览界面窗口的窗口句柄;根据所述窗口句柄获取该文件浏览界面窗口中所有文件/文件夹的属性信息;根据所述文件浏览界面窗口中所有文件/文件夹的属性信息和所述文件/文件夹的名称,获得所述文件/文件夹在所述文件浏览界面中的相对位置;根据所述文件/文件夹在所述文件浏览界面中的相对位置获得所述文件/文件夹的操作坐标。可选地,所述文件/文件夹操作包括以下操作中的一个或多个:剪切、删除、新建、复制、粘贴、重命名或拖拽操作。可选地,若所述文件/文件夹操作为文件/文件夹剪切、删除、新建、复制、粘贴或重命名操作,则对文件/文件夹操作具体包括:获取系统的所有顶级窗口句柄列表;在所述操作坐标上模拟右键操作;在预定时间内再次获取系统的所有顶级窗口列表;根据两次获取的所有顶级窗口列表的差集获取弹出菜单的窗口句柄;根据所述弹出菜单的窗口句柄获得所述弹出菜单的菜单句柄;根据所述弹出菜单的菜单句柄获取所述弹出菜单上相应操作的菜单项,进行相应操作。可选地,若所述文件/文件夹操作为拖拽操作,则对文件/文件夹操作具体包括:启动目的窗口;获取目的窗口句柄,并使目的窗口最大化;根据所述文件/文件夹的操作坐标,模拟鼠标操作,将文件/文件夹移动到目的窗口的空白处,并释放鼠标。根据本发明另一方面,其提供了一种对文件/文件夹进行操作的装置,包括:启动模块,用于启动文件浏览界面窗口;获取模块,用于在文件浏览界面窗口中获取文件/文件夹的操作坐标;操作模块,用于在文件浏览界面窗口中根据所述操作坐标进行文件/文件夹操作。可选地,所述启动模块通过模拟用户在图形用户界面中的操作来启动文件浏览界面窗口,所述操作模块也通过模拟用户在图形用户界面中的操作对文件/文件夹进行操作。可选地,所述模拟用户在图形用户界面中的操作包括:在文件浏览界面窗口中根据所述操作坐标模拟键盘和/或鼠标进行文件/文件夹操作。可选地,所述在文件浏览界面窗口中获取文件/文件夹的操作坐标包括获取文件/文件夹在文件浏览界面窗口中的坐标,或获取文件浏览界面窗口中的空白位置处坐标。可选地,所述启动模块包括:路径获取模块,用于获取所述文件/文件夹的上级路径;启动窗口模块,用于根据所述路径通过系统接口启动文件浏览界面窗口;可选地,获取文件/文件夹在文件浏览界面窗口中的操作坐标具体包括:获取文件浏览界面窗口的窗口句柄;根据所述窗口句柄获取该文件浏览界面窗口中所有文件/文件夹的属性信息;根据所述文件浏览界面窗口中所有文件/文件夹的属性信息和所述文件/文件夹的名称,获得所述文件/文件夹在所述文件浏览界面中的相对位置;根据所述文件/文件夹在所述文件浏览界面中的相对位置获得所述文件/文件夹的操作坐标。可选地,所述文件/文件夹操作包括以下操作中的一个或多个:剪切、删除、新建、复制、粘贴、重命名或拖拽操作。可选地,若所述文件/文件夹操作为文件/文件夹剪切、删除、新建、复制、粘贴或重命名操作,则所述操作模块对文件/文件夹操作具体包括:获取系统的所有顶级窗口句柄列表;在所述操作坐标上模拟右键操作;在预定时间内再次获取系统的所有顶级窗口列表;根据两次获取的所有顶级窗口列表的差集获取弹出菜单的窗口句柄;根据所述弹出菜单的窗口句柄获得所述弹出菜单的菜单句柄;根据所述弹出菜单的菜单句柄获取所述弹出菜单上相应操作的菜单项,进行相应操作。可选地,若所述操作为拖拽操作,则所述操作模块对文件/文件夹操作具体包括:启动目的窗口;获取目的窗口句柄,并使目的窗口最大化;根据所述文件/文件夹的操作坐标,模拟鼠标操作,将文件/文件夹移动到目的窗口的空白处,并释放鼠标。本发明提出的上述方案通过模拟用户在图形化用户界面中的操作启动文件浏览界面窗口,并模拟用户的鼠标和/或键盘动作对文件/文件夹进行操作。其在与各种杀毒软件或者防护软件并存的情况下,能够实现模拟真实用户进行文件/文件夹操作的行为,实现文件/文件夹操作功能的合法性,保证对文件/文件夹的进行安全操作,同时也确保了系统安全性,以及保证了对应受限用户对文件/文件夹操作的模拟过程。本发明提出的上述方案能够忽略平台的差异性,适用于所有对文件/文件夹操作的场景。为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式详细说明。附图说明图1示出了本发明提供的一种对文件/文件夹进行操作的方法流程图;图2示出了在Windows系统中启动的“运行”窗口的图形化示意图;图3示出了在Windows系统下模拟用户手动操作启动文件浏览界面窗口的具体实施方式流程图;图4示出了在Windows系统中用explorer打开文件浏览界面窗口的示意图;图5示出了在Windows系统的文件浏览界面窗口下获取文件/文件夹的操作坐标的具体实施方式流程图;图6示出了在Windows系统中模拟用户在图形化用户界面中通过右键点击对文件/文件夹进行操作的具体实施方式流程图;图7示出了对文件/文件夹进行“新建”操作的具体实施方式流程图;图8示出了在Windows操作系统下对文件/文件夹进行“拖拽”操作的具体实施方式流程图;图9示出了Windows系统下删除文件/文件夹操作时系统弹出的消息提示框;图10示出了Windows操作系统下模拟用户操作对文件/文件夹操作时对系统弹出的消息框的具体处理流程;图11示出了本发明提出的一种对文件/文件夹进行操作的装置的模块化结构图。具体实施方式为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明作进一步的详细说明。图1示出了本发明提供的一种对文件/文件夹进行操作的方法流程图。如图1所示,该方法包括:步骤101:启动文件浏览界面窗口;步骤102:在文件浏览界面窗口中获取文件/文件夹的操作坐标;步骤103:在文件浏览界面窗口中根据所述操作坐标进行文件/文件夹操作。下面以Windows系统为例详细说明本发明提出的对文件/文件夹进行操作的方法所包括的上述各个步骤,本领域技术人员应当理解,该方法不仅限于Windows系统,其还适用于任何其它图形界面操作系统。步骤101:启动文件浏览界面窗口。本发明提出的上述方法,通过操作系统提供的系统入口命令,模拟用户在图形化用户界面中的操作来启动文件浏览界面窗口。首先,在Windows系统中,通过系统提供的API接口模拟用户在图形化用户界面中的手动操作打开“运行”窗口。图2示出了在Windows系统中启动的“运行”窗口的图形化示意图。可以通过调用系统API接口keybd_event输入VK_LWIN+R的键盘虚拟码调出“运行”窗口。其次,在打开的“运行”窗口中,通过系统提供的API接口模拟用户在图形化界面中的手动操作启动文件浏览界面窗口。图3示出了在Windows系统下模拟用户手动操作启动文件浏览界面窗口的具体实施方式流程图。如图3所示,该具体实施方式具体包括:步骤301:获取待操作的文件/文件夹的上级文件路径dirpath;比如待操作的是文件,且该文件路径为C:\Users
ewilyn\Pictures
est\1.png,则其上级为则C:\Users
ewilyn\Pictures
est;步骤302:调用系统API接口“FindWindow&EnumChildWindows”查找窗口“ClassName=Eidt”的输入框的句柄“hedit”,即获得“运行”窗口上的输入框句柄,然后调用系统API接口SendMessage向此输入框句柄hedit发送WM_SETTEXT的消息号,其参数为“explorer”和待操作文件/文件夹的上级路径dirpath,即用于模拟用户操作向所述“运行”窗口上的输入框中输入要打开的文件浏览组件以及所述上级路径;步骤303:调用系统API接口FindWindow&EnumChildWindows查找窗口WindowsName=“确定”的按钮句柄hbtn,即用于获得“运行”窗口上的“确定”按钮,调用系统API接口PostMessage向句柄hbtn发送BN_CLICKED消息,即用于模拟用户操作点击“运行”窗口上的“确认”按钮,打开待操作文件/文件夹所在的文件夹浏览界面;图4示出了在Windows系统中用explorer打开文件浏览界面窗口的示意图。步骤304:在一个超时时间如5s内,轮询调用系统API接口FindWindow,查找窗口ClassName=CabinetWClass或ExploreWClass的窗口句柄,即查找所打开的待操作文件/文件夹所在的文件夹浏览界面句柄。上述模拟用户在图形化界面上的操作启动文件浏览界面窗口的具体实施过程仅是示意性说明具体操作过程,而不仅限于上述一种方式,本领域技术人员应当理解,还可以通过其他方式模拟用户的操作,就如上述方法步骤303中,还可以直接调用系统API接口模拟用户按下回车键来打开待操作文件/文件夹所在的文件夹浏览界面等。另外,上述具体实施方式仅以Windows系统为例加以说明,但不仅限于Windows系统,其它图形化界面操作系统上的文件/文件夹操作也同样适用本发明提出的上述方案。步骤102:在文件浏览界面窗口中获取文件/文件夹的操作坐标。可选地,该步骤可以通过调用系统API获取文件浏览界面窗口的句柄,并根据所述文件浏览界面窗口的句柄获取待操作文件/文件夹的上级路径的属性信息,从而得到该路径下的所有文件和/或文件夹名称,并从中找到待操作的文件/文件夹,进而获取其操作坐标。图5示出了在Windows系统的文件浏览界面窗口下获取文件/文件夹的操作坐标的具体实施方式流程图。如图5所示,获取文件/文件夹的操作坐标的具体实施方式流程如下:步骤501:调用系统API接口FindWindow&EnumChildWindows查找获得所启动的文件浏览界面窗口的句柄hwnd,通过调用系统API接口AccessibleObjectFromWindow,参数为所述文件浏览界面窗口句柄hwnd,获取待操作文件/文件夹的上级路径的IAccessible对象objroot;步骤502:调用系统API接口AccessibleObjectFromWindow,参数为所述文件浏览界面窗口界面hwnd和所述待操作文件/文件夹的上级路径的IAccessible对象objroot,获取所述文件浏览界面窗口hwnd中所有子文件/文件夹对象childobj,调用IAccessible对象的成员函数accRole和accName获取所有子文件/文件夹对象childobj的属性信息,所述属性信息包括文件/文件夹名称等,遍历所有属性信息中的文件/文件夹名称,匹配查找是否存在与待操作文件/文件夹一致的文件/文件夹名称;步骤503:若找到匹配的文件/文件夹名称,则调用系统函数accLocation获取所匹配得到的子文件/文件夹对象childobj的位置信息location;步骤504:根据所获得的子文件/文件夹对象childobj的位置信息location,计算出其绝对坐标pos,即获取该子文件/文件夹显示在文件浏览器界面中的图标的中心点坐标,其计算公式如下:location=(left,top,width,hight)pos=((left+width,top+hight/2))。上述模拟用户在图形化界面上的操作获取文件/文件夹操作坐标的具体实施过程仅是示意性说明具体操作过程,而不仅限于上述一种方式,本领域技术人员应当理解,还可以通过其他方式获取文件/文件夹的操作坐标。步骤103:在文件浏览界面窗口中根据所述操作坐标进行文件/文件夹操作。可选地,该步骤也可以通过模拟用户在图形化界面中的操作来实现,具体操作根据其操作的不同手段具有不同的实现过程。比如对于文件/文件夹在图形用户界面中的操作包括:打开、剪切、删除、新建、复制、粘贴、重命名或拖拽等,而这些操作有些可以通过对待操作文件/文件夹进行右键点击,并从点击弹出的菜单执行相应操作,比如打开、剪切、删除、新建、复制、粘贴、重命名等,而有些则需要通过其他方式,如拖拽操作等,对于能够右键点击执行的菜单,具体地可以首先在待操作文件/文件夹的图标位置坐标处模拟用户鼠标右键点击操作,并获得右键点击弹出的菜单,进而遍历所述弹出菜单中的菜单项,并点击相匹配的菜单项来完成操作。而对于拖拽操作则可以在文件浏览界面下打开拖拽的目标路径,打开的具体方式参见步骤101,然后模拟用户鼠标拖拽操作将待操作文件/文件夹拖拽至该目标路径对应的文件浏览界面中。图6示出了在Windows系统中模拟用户在图形化用户界面中通过右键点击对文件/文件夹进行操作的具体实施方式流程图。如图6所示,其包括:步骤601:通过调用系统API接口EnumChildWindows获取系统中当前所有顶级窗口句柄列表,即为第一窗口句柄列表hwndlist1;步骤602:通过调用系统API接口mouse_event传递MOUSEEVENTF_RIGHTDOWN&MOUSEEVENTF_RIGHTUP参数,并在所获得的待操作文件/文件夹的操作坐标处模拟鼠标右键操作;步骤603:在一个超时时间内(默认5s),循环调用系统API接口EnumChildWindows获得一份系统中当前所有的顶级窗口句柄,记为第二窗口句柄列表hwndlist2;步骤604:计算第二窗口句柄列表hwndlist2与第一窗口句柄列表hwndlist1的差集,在所述差集中查找ClassName=#32768的句柄,即弹出菜单项的窗口句柄hwnd;步骤605:通过调用系统API接口GetMenu将所述弹出菜单项的窗口句柄hwnd转换为菜单句柄hmenu;步骤606:根据该菜单句柄hmenu调用系统API接口GetMenuItemCount获取该菜单中所有菜单项的数量,并调用系统API接口GetMenuItemInfo遍历每一个菜单项,获取其文字信息获取,并根据所述文字信息匹配所要进行的操作,获取匹配得到的菜单项的坐标(x,y),并模拟鼠标点击操作,完成相应的操作。上述模拟用户在图形化界面上的对文件/文件夹进行的具体实施过程仅是示意性说明具体操作过程,而不仅限于上述一种方式,本领域技术人员应当理解,还可以通过其他方式对文件/文件夹的进行相应的操作,如通过模拟用户键盘操作或者模拟鼠标和键盘的结合操作等。下面在Windows操作系统下,以几个主要的文件/文件夹操作为例来详细说明本发明的步骤103。图7示出了对文件/文件夹进行“新建”操作的具体实施方式流程图。如图7所示,假设前面的步骤中文件/文件夹的操作坐标选择在其上级路径对应的文件浏览界面的空白位置处,则其包括:步骤701:通过调用系统API接口EnumChildWindows获取系统中当前所有顶级窗口句柄列表hwndlist1;步骤702:通过调用系统API接口mouse_event传递参数MOUSEEVENTF_RIGHTDOWN&MOUSEEVENTF_RIGHTUP,在待操作文件/文件夹的上级路径所在文件浏览界面的空白位置处,模拟鼠标右键操作;步骤703:在一个超时时间内(默认5s),循环调用系统API接口EnumChildWindows获得一份系统中当前所有的顶级窗口句柄,记为第二窗口句柄列表hwndlist2;步骤:704:计算第二窗口句柄列表hwndlist2与第一窗口句柄列表hwndlist1的差集,在所述差集中查找ClassName=#32768的句柄,即弹出菜单项的窗口句柄hwnd;步骤705:通过调用系统API接口GetMenu将所述弹出菜单项的窗口句柄hwnd转换为菜单句柄hmenu;步骤706:根据该菜单句柄hmenu调用系统API接口GetMenuItemCount获取该菜单中所有菜单项的数量,并调用系统API接口GetMenuItemInfo遍历每一个菜单项,获取其文字信息为“新建”的菜单项,并返回该菜单项所在的位置坐标(x,y),模拟用户将鼠标光标放置在该位置坐标(x,y),并根据上面介绍的步骤查找弹出菜单,如此递归继续查找到文字信息为“文件夹”的菜单项或其他相应菜单项;步骤707:在所找到的菜单项对应的位置坐标处,模拟用户鼠标点击操作,以执行文件/文件夹的新建操作。虽然上面仅给出了“新建”操作的具体流程,但是本领域技术人员根据上述流程能够直接、毫无疑义地得出其它相应操作的具体流程。有些操作可能不仅限于上面给出的几个步骤,如删除操作,其会在点击删除菜单项后弹出一系统提示框。图8示出了在Windows操作系统下对文件/文件夹进行“拖拽”操作的具体实施方式流程图。如图8所示,其包括:步骤801:打开拖拽操作的目的窗口,其步骤同启动“运行”窗口并在“运行”窗口中打开文件浏览界面窗口;步骤802:通过调用系统API接口EnumChildWindows获取所述目的窗口句柄desthwnd,并调用系统API接口PostMessage向所述目的窗口柄desthwnd发送SC_MAXIMIZE消息,使目的窗口最大化;步骤803:调用系统API接口MoveWindow向待操作文件/文件夹的文件浏览界面窗句柄hwnd发送rect参数,使该窗口显示为固定大小尺寸rect;步骤804:调用系统API接口SetCursorPos使鼠标移动到待操作文件/文件夹的操作坐标pos处;步骤805:通过调用系统API接口mouse_event传递参数MOUSEEVENTF_LEFTDOWN,模拟鼠标拖拽文件/文件夹移动到目的窗口句柄desthwnd的空白处,调用系统API接口mouse_event传递参数MOUSEEVENTF_LEFTUP释放鼠标,完成模拟用户在图形化用户界面下的拖拽操作。对于其他操作如打开、剪切、删除、复制、粘贴、重命名等操作,与新建操作类似,所不同的是,定位相应操作的菜单项时,选择“打开”、“剪切”、“删除”、“复制”、“粘贴”、“重命名”等选项,另外,对于重命名操作,模拟用户的鼠标操作点击相应菜单项后,再模拟用户的键盘操作输入相应的文件/文件夹的新名称。图9示出了Windows系统下删除文件/文件夹操作时系统弹出的消息提示框。其是在点击相应菜单项后,系统用于提示用户是否继续下一步操作的提示框。因此对于删除操作,在模拟用户的鼠标操作点击相应菜单项之后还需要进一步处理。图10示出了Windows操作系统下模拟用户操作对文件/文件夹操作时对系统弹出的消息框的具体处理流程。如图9所示,其包括:步骤1001:在一个超时时间内(默认5s),循环调用系统API接口EnumChildWindows获得一份系统中当前所有的顶级窗口句柄,记为第三窗口句柄列表hwndlist3;步骤1002:计算该第三窗口句柄列表hwndlist3与之前点击相应鼠标弹出该系统提示框之前获得的第二窗口句柄列表hwndlist2的差集,在所述差集中查找ClassName=#32770的句柄,即系统提示框的窗口句柄hwnd;步骤1003:根据系统提示框的窗口句柄hwnd,调用系统API接口FindWindow&EnumChildWindows查找系统提示框的窗口中WindowsName=“是”或“否”的按钮句柄hbtn,调用系统API接口PostMessage向该按钮句柄hbtn发送BN_CLICKED消息,选择“是”或“否”按钮。当然,本领域技术人员应当理解,上述步骤也可以通过模拟用户键盘操作来完成,如在弹出系统提示框后模拟键盘回车操作选择“是”,或者模拟“tab”键选择“否”再回车等。本领域技术人员应当理解,上面仅示例性的介绍了本发明所提出的文件/文件夹的操作方法的一部分具体实施方式,其中仅涵盖了对文件/文件夹的一部分操作方式,而其他对文件/文件夹的具体操作都可以沿用上述方法,对其进行扩展或变形,只要是通过模拟用户在图形化用户界面中的操作对文件/文件夹进行相应的操作均涵盖在本发明的保护范围之内。从上述具体实施方式可以看出,本发明提出的上述方案中全部流程均模拟用户在图形化用户界面中的操作对文件/文件夹进行操作,而不是调用系统提供的文件/文件夹操作函数,比如CreateFile,WriteFile,ReadFile,CopyFile,MoveFile,DeleteFile,CreateDirectory,RemoveDirectory等函数对文件/文件夹进行操作。其能够完美的在防护软件监控的系统环境下,实现对文件/文件夹的安全操作,同时避免了自己的执行程序不会被防护软件误报导致功能失效等情况,本方法不只限于对杀毒软件或者防护软件的环境,同时也适用于各种操作系统的正常环境,能够保证最大的兼容性。需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。图11示出了本发明提出的一种对文件/文件夹进行操作的装置的模块化结构图。如图11所示,该装置包括:启动模块1101,用于启动文件浏览界面窗口;获取模块1102,用于在文件浏览界面窗口中获取文件/文件夹的操作坐标;操作模块1103,用于在文件浏览界面窗口中根据所述操作坐标进行文件/文件夹操作。下面依然以Windows系统为例详细说明本发明提出对文件/文件夹进行操作的装置所包括的上述各个模块,本领域技术人员应当知道,该装置不仅限于Windows系统,其还适用于其它任何图形化界面系统。启动模块,其用于启动文件浏览界面窗口。本发明提出的上述装置,通过操作系统提供的系统入口命令,模拟用户在图形化用户界面中的操作来启动文件浏览界面窗口。首先,在Windows系统中,所述启动模块通过系统提供的API接口模拟用户在图形化用户界面中的手动操作打开“运行”窗口。具体地,启动模块可以通过调用系统API接口keybd_event输入VK_LWIN+R的键盘虚拟码调出“运行”窗口。其次,在打开的“运行”窗口中,启动模块通过系统提供的API接口模拟用户在图形化界面中的手动操作启动文件浏览界面窗口。启动模块在Windows系统下模拟用户手动操作启动文件浏览界面窗口的具体实施方式包括:获取待操作的文件/文件夹的上级文件路径dirpath;比如待操作的是文件,且该文件路径为C:\Users
ewilyn\Pictures
est\1.png,则其上级为则C:\Users
ewilyn\Pictures
est;调用系统API接口“FindWindow&EnumChildWindows”查找窗口“ClassName=Eidt”的输入框的句柄“hedit”,即获得“运行”窗口上的输入框句柄,然后调用系统API接口SendMessage向此输入框句柄hedit发送WM_SETTEXT的消息号,其参数为“explorer”和待操作文件/文件夹的上级路径dirpath,即用于模拟用户操作向所述“运行”窗口上的输入框中输入要打开的文件浏览组件以及所述上级路径;调用系统API接口FindWindow&EnumChildWindows查找窗口WindowsName=“确定”的按钮句柄hbtn,即用于获得“运行”窗口上的“确定”按钮,调用系统API接口PostMessage向句柄hbtn发送BN_CLICKED消息,即用于模拟用户操作点击“运行”窗口上的“确认”按钮,打开待操作文件/文件夹所在的文件夹浏览界面;图4示出了在Windows系统中用explorer打开文件浏览界面窗口的示意图。在一个超时时间如5s内,轮询调用系统API接口FindWindow,查找窗口ClassName=CabinetWClass或ExploreWClass的窗口句柄,即查找所打开的待操作文件/文件夹所在的文件夹浏览界面句柄。上述模拟用户在图形化界面上的操作启动文件浏览界面窗口的具体实施过程仅是示意性说明具体操作过程,而不仅限于上述一种方式,本领域技术人员应当理解,还可以通过其他方式模拟用户的操作,如还可以直接调用系统API接口模拟用户按下回车键来打开待操作文件/文件夹所在的文件夹浏览界面等。另外,上述具体实施方式仅以Windows系统为例加以说明,但不仅限于Windows系统,其它图形化界面操作系统上的文件/文件夹操作也同样适用本发明提出的上述方案。获取模块,用于在文件浏览界面窗口中获取文件/文件夹的操作坐标。可选地,该获取模块可以通过调用系统API获取文件浏览界面窗口的句柄,并根据所述文件浏览界面窗口的句柄获取待操作文件/文件夹的上级路径的属性信息,从而得到该路径下的所有文件和/或文件夹名称,并从中找到待操作的文件/文件夹,进而获取其操作坐标。获取模块在Windows系统的文件浏览界面窗口下获取文件/文件夹的操作坐标的具体实施方式如下:调用系统API接口FindWindow&EnumChildWindows查找获得所启动的文件浏览界面窗口的句柄hwnd,通过调用系统API接口AccessibleObjectFromWindow,参数为所述文件浏览界面窗口句柄hwnd,获取待操作文件/文件夹的上级路径的IAccessible对象objroot;调用系统API接口AccessibleObjectFromWindow,参数为所述文件浏览界面窗口界面hwnd和所述待操作文件/文件夹的上级路径的IAccessible对象objroot,获取所述文件浏览界面窗口hwnd中所有子文件/文件夹对象childobj,调用IAccessible对象的成员函数accRole和accName获取所有子文件/文件夹对象childobj的属性信息,所述属性信息包括文件/文件夹名称等,遍历所有属性信息中的文件/文件夹名称,匹配查找是否存在与待操作文件/文件夹一致的文件/文件夹名称;若找到匹配的文件/文件夹名称,则调用系统函数accLocation获取所匹配得到的子文件/文件夹对象childobj的位置信息location;根据所获得的子文件/文件夹对象childobj的位置信息location,计算出其绝对坐标pos,即获取该子文件/文件夹显示在文件浏览器界面中的图标的中心点坐标,其计算公式如下:location=(left,top,width,hight)pos=((left+width,top+hight/2))。上述模拟用户在图形化界面上的操作获取文件/文件夹操作坐标的具体实施过程仅是示意性说明具体操作过程,而不仅限于上述一种方式,本领域技术人员应当理解,还可以通过其他方式获取文件/文件夹的操作坐标。操作模块,用于在文件浏览界面窗口中根据所述操作坐标进行文件/文件夹操作。可选地,该模块也可以通过模拟用户在图形化界面中的操作来实现,具体操作根据其操作的不同手段可以有不同的实现过程。比如对于文件/文件夹在图形用户界面中的操作包括:打开、剪切、删除、新建、复制、粘贴、重命名或拖拽等,而这些操作有些可以通过对待操作文件/文件夹进行右键点击,并从点击弹出的菜单执行相应操作,比如打开、剪切、删除、新建、复制、粘贴、重命名等,而有些则需要通过其他方式,如拖拽操作等,对于能够右键点击执行的菜单,具体地可以首先在待操作文件/文件夹的图标位置坐标处模拟用户鼠标右键点击操作,并获得右键点击弹出的菜单,进而遍历所述弹出菜单中的菜单项,并点击相匹配的菜单项来完成操作。而对于拖拽操作则可以在文件浏览界面下打开拖拽的目标路径,打开的具体方式对启动模块的介绍,然后模拟用户鼠标拖拽操作将待操作文件/文件夹拖拽至该目标路径对应的文件浏览界面中。操作模块在Windows系统中模拟用户在图形化用户界面中通过右键点击对文件/文件夹进行操作的具体实施过程如下:通过调用系统API接口EnumChildWindows获取系统中当前所有顶级窗口句柄列表,即为第一窗口句柄列表hwndlist1;通过调用系统API接口mouse_event传递MOUSEEVENTF_RIGHTDOWN&MOUSEEVENTF_RIGHTUP参数,并在所获得的待操作文件/文件夹的操作坐标处模拟鼠标右键操作;在一个超时时间内(默认5s),循环调用系统API接口EnumChildWindows获得一份系统中当前所有的顶级窗口句柄,记为第二窗口句柄列表hwndlist2;计算第二窗口句柄列表hwndlist2与第一窗口句柄列表hwndlist1的差集,在所述差集中查找ClassName=#32768的句柄,即弹出菜单项的窗口句柄hwnd;通过调用系统API接口GetMenu将所述弹出菜单项的窗口句柄hwnd转换为菜单句柄hmenu;根据该菜单句柄hmenu调用系统API接口GetMenuItemCount获取该菜单中所有菜单项的数量,并调用系统API接口GetMenuItemInfo遍历每一个菜单项,获取其文字信息获取,并根据所述文字信息匹配所要进行的操作,获取匹配得到的菜单项的坐标(x,y),并模拟鼠标点击操作,完成相应的操作。上述模拟用户在图形化界面上的对文件/文件夹进行的具体实施过程仅是示意性说明具体操作过程,而不仅限于上述一种方式,本领域技术人员应当理解,还可以通过其他方式对文件/文件夹的进行相应的操作,如通过模拟用户键盘操作或者模拟鼠标和键盘的结合操作等。下面在Windows操作系统下,以几个主要的文件/文件夹操作为例来详细说明本发明中的操作模块。操作模块对文件/文件夹进行新建操作的具体实施过程中,假设前面的步骤中文件/文件夹的操作坐标选择在其上级路径对应的文件浏览界面的空白位置处,则其具体如下:通过调用系统API接口EnumChildWindows获取系统中当前所有顶级窗口句柄列表hwndlist1;通过调用系统API接口mouse_event传递参数MOUSEEVENTF_RIGHTDOWN&MOUSEEVENTF_RIGHTUP,在待操作文件/文件夹的上级路径所在文件浏览界面的空白位置处,模拟鼠标右键操作;在一个超时时间内(默认5s),循环调用系统API接口EnumChildWindows获得一份系统中当前所有的顶级窗口句柄,记为第二窗口句柄列表hwndlist2;计算第二窗口句柄列表hwndlist2与第一窗口句柄列表hwndlist1的差集,在所述差集中查找ClassName=#32768的句柄,即弹出菜单项的窗口句柄hwnd;通过调用系统API接口GetMenu将所述弹出菜单项的窗口句柄hwnd转换为菜单句柄hmenu;根据该菜单句柄hmenu调用系统API接口GetMenuItemCount获取该菜单中所有菜单项的数量,并调用系统API接口GetMenuItemInfo遍历每一个菜单项,获取其文字信息为“新建”的菜单项,并返回该菜单项所在的位置坐标(x,y),模拟用户将鼠标光标放置在该位置坐标(x,y),并根据上面介绍的步骤查找弹出菜单,如此递归继续查找到文字信息为“文件夹”的菜单项或其他相应菜单项;在所找到的菜单项对应的位置坐标处,模拟用户鼠标点击操作,以执行文件/文件夹的新建操作。虽然上面仅给出了“新建”操作的具体流程,但是本领域技术人员根据上述流程能够直接、毫无疑义地得出其它相应操作的具体流程。有些操作可能不仅限于上面给出的几个步骤,如删除操作,其会在点击删除菜单项后弹出一系统提示框。操作模块在Windows操作系统下对文件/文件夹进行“拖拽”操作的具体实施方式如下:打开拖拽操作的目的窗口,其步骤同启动“运行”窗口并在“运行”窗口中打开文件浏览界面窗口;通过调用系统API接口EnumChildWindows获取所述目的窗口句柄desthwnd,并调用系统API接口PostMessage向所述目的窗口柄desthwnd发送SC_MAXIMIZE消息,使目的窗口最大化;调用系统API接口MoveWindow向待操作文件/文件夹的文件浏览界面窗句柄hwnd发送rect参数,使该窗口显示为固定大小尺寸rect;调用系统API接口SetCursorPos使鼠标移动到待操作文件/文件夹的操作坐标pos处;通过调用系统API接口mouse_event传递参数MOUSEEVENTF_LEFTDOWN,模拟鼠标拖拽文件/文件夹移动到目的窗口句柄desthwnd的空白处,调用系统API接口mouse_event传递参数MOUSEEVENTF_LEFTUP释放鼠标,完成模拟用户在图形化用户界面下的拖拽操作。对于其他操作如打开、剪切、删除、复制、粘贴、重命名等操作,与新建操作类似,所不同的是,定位相应操作的菜单项时,选择“打开”、“剪切”、“删除”、“复制”、“粘贴”、“重命名”等选项,另外,对于重命名操作,模拟用户的鼠标操作点击相应菜单项后,再模拟用户的键盘操作输入相应的文件/文件夹的新名称。操作模块在Windows操作系统下模拟用户操作对文件/文件夹操作时对系统弹出的消息框的具体操作流程如下:在一个超时时间内(默认5s),循环调用系统API接口EnumChildWindows获得一份系统中当前所有的顶级窗口句柄,记为第三窗口句柄列表hwndlist3;计算该第三窗口句柄列表hwndlist3与之前点击相应鼠标弹出该系统提示框之前获得的第二窗口句柄列表hwndlist2的差集,在所述差集中查找ClassName=#32770的句柄,即系统提示框的窗口句柄hwnd;根据系统提示框的窗口句柄hwnd,调用系统API接口FindWindow&EnumChildWindows查找系统提示框的窗口中WindowsName=“是”或“否”的按钮句柄hbtn,调用系统API接口PostMessage向该按钮句柄hbtn发送BN_CLICKED消息,选择“是”或“否”按钮。当然,本领域技术人员应当理解,上述步骤也可以通过模拟用户键盘操作来完成,如在弹出系统提示框后模拟键盘回车操作选择“是”,或者模拟“tab”键选择“否”再回车等。本领域技术人员应当理解,上面仅示例性的介绍了本发明所提出的文件/文件夹的操作装置的一部分具体实施方式,其中仅涵盖了对文件/文件夹的一部分操作方式,而其他对文件/文件夹的具体操作都可以沿用上述方法,对其进行扩展或变形,只要是通过模拟用户在图形化用户界面中的操作对文件/文件夹进行相应的操作均涵盖在本发明的保护范围之内。从上述具体实施方式可以看出,本发明提出的上述方案中全部流程均模拟用户在图形化用户界面中的操作对文件/文件夹进行操作,而不是调用系统提供的文件/文件夹操作函数,比如CreateFile,WriteFile,ReadFile,CopyFile,MoveFile,DeleteFile,CreateDirectory,RemoveDirectory等函数对文件/文件夹进行操作。其能够完美的在防护软件监控的系统环境下,实现对文件/文件夹的安全操作,同时避免了自己的执行程序不会被防护软件误报导致功能失效等情况,本发明不只限于对杀毒软件或者防护软件的环境,同时也适用于各种操作系统的正常环境,能够保证最大的兼容性。c11、其中,所述启动模块通过模拟用户在图形用户界面中的操作来启动文件浏览界面窗口,所述操作模块也通过模拟用户在图形用户界面中的操作对文件/文件夹进行操作。c12、其中,所述模拟用户在图形用户界面中的操作包括:在文件浏览界面窗口中根据所述操作坐标模拟键盘和/或鼠标进行文件/文件夹操作。c13、其中,所述在文件浏览界面窗口中获取文件/文件夹的操作坐标包括获取文件/文件夹在文件浏览界面窗口中的坐标,或获取文件浏览界面窗口中的空白位置处坐标。c14、其中,所述启动模块包括:路径获取模块,用于获取所述文件/文件夹的上级路径;启动窗口模块,用于根据所述路径通过系统接口启动文件浏览界面窗口;c15、其中,获取文件/文件夹在文件浏览界面窗口中的操作坐标具体包括:获取文件浏览界面窗口的窗口句柄;根据所述窗口句柄获取该文件浏览界面窗口中所有文件/文件夹的属性信息;根据所述文件浏览界面窗口中所有文件/文件夹的属性信息和所述文件/文件夹的名称,获得所述文件/文件夹在所述文件浏览界面中的相对位置;根据所述文件/文件夹在所述文件浏览界面中的相对位置获得所述文件/文件夹的操作坐标。c16、其中,所述文件/文件夹操作包括以下操作中的一个或多个:打开、剪切、删除、新建、复制、粘贴、重命名或拖拽操作。c17、其中,若所述文件/文件夹操作为文件/文件夹打开、剪切、删除、新建、复制、粘贴或重命名操作,则所述操作模块对文件/文件夹操作具体包括:获取系统的所有顶级窗口句柄列表;在所述操作坐标上模拟右键操作;在预定时间内再次获取系统的所有顶级窗口列表;根据两次获取的所有顶级窗口列表的差集获取弹出菜单的窗口句柄;根据所述弹出菜单的窗口句柄获得所述弹出菜单的菜单句柄;根据所述弹出菜单的菜单句柄获取所述弹出菜单上相应操作的菜单项,进行相应操作。c18、若所述操作为拖拽操作,则所述操作模块对文件/文件夹操作具体包括:启动目的窗口;获取目的窗口句柄,并使目的窗口最大化;根据所述文件/文件夹的操作坐标,模拟鼠标操作,将文件/文件夹移动到目的窗口的空白处,并释放鼠标。由于所述装置实施例基本相应于前述图1所示的方法实施例,故本实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此就不赘述了。本发明提出的上述方案可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1