一种用于windows程序的单点登录方法

文档序号:169011 发布日期:2021-10-29 浏览:33次 >En<

阅读说明:本技术 一种用于windows程序的单点登录方法 (Single sign-on method for windows program ) 是由 常聪阳 范渊 吴永越 郑学新 刘韬 于 2021-07-12 设计创作,主要内容包括:本发明提出了一种用于windows程序的单点登录方法,本发明通过直接模拟人工的操作,实现人工行为能进行登陆的程序,通过本方法进行登陆的。本发明借助操作系统底层的能力,提供了密码管理与程序登陆之间矛盾的解决方法,解决了特殊场景下的密码使用问题,也提升了全场景的程序登陆效率。(The invention provides a single sign-on method for windows programs. The invention provides a method for solving the contradiction between password management and program login by means of the bottom capability of the operating system, solves the password use problem in a special scene, and also improves the program login efficiency in a whole scene.)

一种用于windows程序的单点登录方法

技术领域

本发明属于计算机私密账号信息管理技术领域,具体地说,涉及一种用于windows程序的单点登录方法。

背景技术

在一些场景中,密码管理人员与程序登陆人员是不同的角色,管理人员负责保管密码,并且在需要时提供给程序登陆人员使用。程序登陆人员需要登陆信息进行程序登陆,但是有不能告知程序登陆人员密码,这是传统的程序登陆人员知晓并使用登陆信息的方法不能满足的需求。

现有的人工直接填写账号密码的方式,流程繁琐,每次启动都要手动的去输入整套的登陆信息。而且一些权限分立,需要密码管理的场景无法满足。

发明内容

本发明基于现有技术的上述问题,提出了一种用于windows程序的单点登录方法,本发明通过直接模拟人工的操作,实现人工行为能进行登陆的程序,通过本方法进行登陆的。本发明借助操作系统底层的能力,提供了密码管理与程序登陆之间矛盾的解决方法,解决了特殊场景下的密码使用问题,也提升了全场景的程序登陆效率。

本发明具体实现内容如下:

本发明提出了一种用于windows程序的单点登录方法,用于在windows程序中进行单点登录,首先构建单点登录辅助程序,在所述单点登录辅助程序中设置登录信息录入模块、登录信息使用模块和程序属性获取模块,然后基于单点登录辅助程序在windows程序中进行单点登录,具体步骤为:

步骤1:打开待进行单点登录的程序,然后使用程序属性获取模块获取鼠标在待进行登录录入的程序上的属性信息;构建鼠标当前位置所对应的窗口的属性结构表;所述属性结构表包括

步骤2:使用登录信息录入模块,基于步骤1获取的属性结构表,在待进行单点登录的程序上进行账号的登录操作,将登录操作信息进行记录并保存在登录信息录入模块中;

步骤3:当在windows程序上对待进行单点登录的程序进行单点登录时,通过登录信息使用模块拉取保存在登录信息录入模块中的登录操作信息,通过登录操作信息进行单点登录。

为了更好地实现本发明,进一步地,所述步骤1具体包括以下步骤:

步骤1.1:使用程序属性获取模块获取当前鼠标位置;

步骤1.2:点击鼠标的获取窗口功能,将鼠标放置在待进行单点登录的程序上,通过程序属性获取模块来获取当前鼠标位置的窗口属性;

步骤1.3:根据步骤1.2获取到的鼠标位置的窗口属性,通过程序属性获取模块获取当前鼠标位置的控件属性。

为了更好地实现本发明,进一步地,所述步骤1.1的具体操作为:通过程序属性获取模块来调用windows程序的win32API接口的GetCursorPos方法来获取鼠标的当前位置,所述鼠标的当前位置以XY二维坐标轴的形式进行表示;

所述步骤1.2的具体操作为:首先,使用程序属性获取模块来调用windows程序的win32API接口的GetDesktopWindow方法来获取桌面窗口的ID;然后,通过桌面窗口ID调用Win32API接口中的EnumWindowsProc方法,通过EnumWindowsProc方法来遍历所有的桌面窗口,依次获取每一个桌面窗口的ID;接着,根据窗口ID,调用Win32API接口中的GetWindowPlacement方法,通过GetWindowPlacement方法来获取当前桌面窗口的上下左右坐标属性;当通过EnumWindowsProc方法来遍历到鼠标的当前位置位于当前桌面窗口内时,停止遍历;最后,通过GetWindowText方法获取遍历到的当前桌面窗口的标题,通过GetClassName方法获取遍历到的当前桌面窗口的类名,然后构建总体属性结构表。

为了更好地实现本发明,进一步地,所述步骤1.3的具体操作为:对步骤1.2中遍历到的包含鼠标的当前位置的当前桌面窗口采用EnumWindowsProc方法进行子窗口的遍历;直到找到当前桌面窗口中包含了鼠标的当前位置的子窗口,然后找到遍历到的包含了鼠标当前位置的子窗口的子窗口ID;然后,通过GetWindowText方法获取遍历到的子窗口的标题,通过GetClassName方法获取遍历到的子窗口的类名;最后建立子窗口的属性结构表。

为了更好地实现本发明,进一步地,所述步骤2具体包括以下步骤:

步骤2.1:使用程序属性获取模块,获取鼠标在待进行单点登录的程序上进行账号的登录操作的每一个步骤所点击的控件的属性,生成属性结构表,并生成用于录入登录数据的登录数据表;

步骤2.2:使用登录信息录入模块获取登录信息的输入框内的信息,并记录下输入框对应的属性,将输入框的属性和输入框内的内容对应填入登录数据表中;所述输入框内的信息包括账户、密码、登录地址;

步骤2.3:采用登录信息录入模块记录登录需要的操作步骤,并与输入框的属性和输入框的内容进行对应。

为了更好地实现本发明,进一步地,所述步骤3具体包括以下步骤:

步骤3.1:用户打开待进行单点登录的程序;

步骤3.2:通过登录信息使用模块对对应的待进行单点登录的程序的数据列表进行展示;

步骤3.3:用户选择登录信息录入模块中保存的对应的登录信息数据;

步骤3.4:使用登录信息使用模块进行登录信息数据的解析;

步骤3.5:将经过解析后的登录信息数据用于执行输入登录信息的相关步骤;

步骤3.6:完成单点登录操作。

为了更好地实现本发明,进一步地,所述步骤3.4的具体操作为:通过登录信息使用模块获取登录数据表中的信息内容;然后执行打开登录界面操作,根据不同的情况进行下列操作:

如果需要进行的操作为点击操作:通过登录信息使用模块读取属性结构表中的值,并计算需要点击的坐标位置;然后使用SetCursorPos方法将鼠标移动到计算出的坐标位置;最后使用Mouse_event方法模拟鼠标点击;

如果需要进行的操作为发送文本的操作:通过登录信息使用模块首先根据属性获取文件句柄,然后使用EnumWindowsProc方法遍历所有窗口,找到符合属性的窗口后,使用SendMessage向符合属性的窗口发送文本。

为了更好地实现本发明,进一步地,所述步骤3.5的操作为:通过登录信息使用模块读取登录数据表中进行登录步骤输入的相关信息,输入登录信息界面的操作根据情况具体如下:

如果需要进行的操作为点击操作:通过登录信息使用模块读取属性结构表中的值,并计算需要点击的坐标位置;然后使用SetCursorPos方法将鼠标移动到计算出的坐标位置;最后使用Mouse_event方法模拟鼠标点击;

如果需要进行的操作为发送文本的操作:通过登录信息使用模块首先根据属性获取文件句柄,然后使用EnumWindowsProc方法遍历所有窗口,找到符合属性的窗口后,使用SendMessage向符合属性的窗口发送文本。

为了更好地实现本发明,进一步地,所述步骤3.6的具体操作为:通过登录信息使用模块读取登录数据表中进行发起登录的的相关信息,发起登录的操作根据情况具体如下:

如果需要进行的操作为点击操作:通过登录信息使用模块读取属性结构表中的值,并计算需要点击的坐标位置;然后使用SetCursorPos方法将鼠标移动到计算出的坐标位置;最后使用Mouse_event方法模拟鼠标点击;

如果需要进行的操作为发送文本的操作:通过登录信息使用模块首先根据属性获取文件句柄,然后使用EnumWindowsProc方法遍历所有窗口,找到符合属性的窗口后,使用SendMessage向符合属性的窗口发送文本。

本发明与现有技术相比具有以下优点及有益效果:

现有的单点登录的技术中,基本为软件层面的单点登录,是依托软件提供的单点登录的方法,但在实际应用中,总会出现有软件不可使用的情况,依旧需要进行人工操作;而本发明依托于最底层的操作系统的能力,可以兼容所有windows操作系统软件。在全部登陆场景,特别是有密码管理,权限分立要求的场景能够显著的满足场景要求并显著提高效率。除满足登陆场景外也满足绝大多数的程序进行登陆。

附图说明

图1为本发明程序属性获取模块的工作流程示意图;

图2为本发明登录信息录入模块的工作流程示意图;

图3为本发明登录信息使用模块的工作流程示意图。

具体实施方式

为了更清楚地说明本发明实施例的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,应当理解,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例,因此不应被看作是对保护范围的限定。基于本发明中的实施例,本领域普通技术工作人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“设置”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;也可以是直接相连,也可以是通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。

实施例1:

本实施例提出了一种用于windows程序的单点登录方法,用于在windows程序中进行单点登录,如图1、图2、图3所示,首先构建单点登录辅助程序,在所述单点登录辅助程序中设置登录信息录入模块、登录信息使用模块和程序属性获取模块,然后基于单点登录辅助程序在windows程序中进行单点登录,具体步骤为:

步骤1:打开待进行单点登录的程序,然后使用程序属性获取模块获取鼠标在待进行登录录入的程序上的属性信息;构建鼠标当前位置所对应的窗口的属性结构表;所述属性结构表包括

步骤2:使用登录信息录入模块,基于步骤1获取的属性结构表,在待进行单点登录的程序上进行账号的登录操作,将登录操作信息进行记录并保存在登录信息录入模块中;

步骤3:当在windows程序上对待进行单点登录的程序进行单点登录时,通过登录信息使用模块拉取保存在登录信息录入模块中的登录操作信息,通过登录操作信息进行单点登录。

工作原理:Windows平台系统调用中提供了非常多的系统调用,其中一些系统调用可以获取窗口收到的消息,窗口本身的属性,以及窗口内控件的属性,而这些窗口的属性是唯一的,更换不同版本的windows系统,更换windows系统的版本,窗口属性都不会发生改变。这是该方法重要的技术背景与理论基础。

实施例2:

本实施例在上述实施例1的基础上,进一步的,如图1所示,关于程序属性获取模块的工作流程具体为:

1.用户打开某个需要进行登陆录入的程序后,使用该模块获取当前鼠标的位置

该模块会使用Win32API中的GetCursorPos方法,通过该方法会获取到鼠标当前位置该位置会以二维坐标系坐标(X轴Y轴)的方式进行表示。

2.用户点击鼠标的获取窗口功能后,鼠标放置在程序上后,模块通过系统调用可以获取当前鼠标位置的窗口的属性

该模块会使用Win32API中的GetDesktopWindow方法,该方法会获得桌面窗口的ID

通过桌面窗口ID调用Win32API中的EnumWindowsProc方法,该方法会遍历所有的桌面窗口,依次获取每一个窗口的ID,

根据窗口ID,调用Win32API中的GetWindowPlacement方法,该方法会获取当前窗口的上下左右坐标属性。

如果该窗口在当前的鼠标位置内,则停止执行EnumWindowsProc方法,找到了鼠标所在的窗口ID

可以通过GetWindowText方法获取窗口标题

通过GetClassName方法获取窗口类名;

总体属性如属性结构表所示。

3.用户点击鼠标的获取控件窗口后,将鼠标放置在程序的控件上时,模块通过系统调用可以获取当前鼠标位置的控件属性。

应用窗口ID在上面的步骤2中已经拿到,

该模块会调用EnumWindowsProc方法,该方法会遍历该应用窗口的所有子窗口。

如果有子窗口属性符合当前的鼠标位置内,则停止执行EnumWindowsProc方法,然后找到了鼠标所在的子窗口ID

可以通过GetWindowText方法获取窗口标题;

通过GetClassName方法获取窗口类名。

得到的属性结构表如下表1所示:

表1属性结构表

通过上下左右坐标可以通过简单的加减乘除计算出该窗口在显示器的相对位置以及该窗口的中心位置。

本实施例的其他部分与上述实施例1相同,故不再赘述。

实施例3:

本实施例在上述实施例1-2任一项的基础上,为了更好地实现本发明,进一步地,如图2所示,登录信息录入模块的具体处理流程为:

1.用户(在有密码管理需求的场景该用户是具有得知密码权限的人)打开软件,记录打开登陆界面的步骤并录入该模块,

用户使用该模块时会使用到属性获取模块,获取从软件界面打开软件登陆界面步骤中每个步骤所点击的控件的属性,属性同表1:属性结构表,数据录入如表2:登陆数据录入表所示。

2.用户在登陆界面输入信息,并记录输入框属性以及对应的登陆信息并录入该模块。

用户在每一个输入框输入的信息都会记录,用户使用属性获取模块,获取登陆信息输入框的信息,并且获取输入框的属性,记录该输入框的属性以及对应文本,数据录入如表2:登陆数据录入表所示。

重复步骤2,依次录入账户,密码,登陆地址等输入项的属性与文本。

3.用户进行发起登陆的流程,记录步骤并录入模块。

用户登陆信息输入后还需要进行点击登陆的操作,用户记录登陆需要的步并进行记录相关操作。数据录入如表2:登陆数据录入表所示。

4.模块记录本次全部录入信息,与客户端管理并保存。

表2登陆录入数据表

本实施例的其他部分与上述实施例1-2任一项相同,故不再赘述。

实施例4:

本实施例在上述实施例1-3任一项的基础上,为了更好地实现本发明,进一步地,如图3所示,所述登录信息使用模块的具体处理流程为:

1.用户打开需进行登陆的程序。

2.该模块会展示给用户该用户可以使用的客户端以及对应信息的列表;

表2:登陆信息录入表的软件与账户相同的一系列步骤的集合为该列表中的一项。用户可以选择其中一项进行单点登陆。

3.用户选择某条客户端与登录信息条目;

4.模块解析并执行打开登陆信息的相关步骤;

该模块会拿到表2登陆信息录入表中打开登陆界面步骤的相关信息;

打开登陆界面步骤有一个或多个操作,具体为:

如果该操作为点击操作,模块会读取属性中的值计算需要点击的坐标位置,使用SetCursorPos将鼠标移动到计算出的左边位置,然后使用Mouse_event模拟鼠标点击。

如果该操作为发送文本的操作,会首先根据属性获取文件句柄,使用EnumWindowsProc遍历所有窗口,找到符合属性的窗口后,向该窗口使用SendMessage发送文本。

5.模块解析并执行输入登陆信息的相关步骤

该模块会拿到表2登陆信息录入表中输入登陆信息步骤的相关信息。

输入登陆信息界面步骤有一个或多个操作,具体为:

如果该操作为点击操作,模块会读取属性中的值计算需要点击的坐标位置,使用SetCursorPos将鼠标移动到计算出的左边位置,然后使用Mouse_event模拟鼠标点击。

如果该操作为发送文本的操作,会首先根据属性获取文件句柄,使用EnumWindowsProc遍历所有窗口,找到符合属性的窗口后,向该窗口使用SendMessage发送文本。

6.模块解析并执行发起登陆的相关步骤

该模块会拿到表2登陆信息录入表中发起登陆步骤的相关信息。

发起登陆界面步骤有一个或多个操作,具体为:

如果该操作为点击操作,模块会读取属性中的值计算需要点击的坐标位置,使用SetCursorPos将鼠标移动到计算出的左边位置,然后使用Mouse_event模拟鼠标点击。

如果该操作为发送文本的操作,会首先根据属性获取文件句柄,使用EnumWindowsProc遍历所有窗口,找到符合属性的窗口后,向该窗口使用SendMessage发送文本。

本实施例的其他部分与上述实施例1-3任一项相同,故不再赘述。

以上所述,仅是本发明的较佳实施例,并非对本发明做任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化,均落入本发明的保护范围之内。

14页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种离线设备的安全认证方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类