原创

QC浏览器增加自动登录功能

前言

我之前开源了一个QC浏览器,用.Net做的,C#语言编写的,前段时间实在受不了每天登录(因为QC浏览器不支持自动登录,每次要输入密码也是够了),然后就想搞一个自动登录的功能。

分析

分析了下,因为ALM-Client是另外启动一个线程。我外壳虽然套了C#的Form但是里面的内容不太好获取,苦思冥想之下,决定用SendMessage来做。具体方式很简单。

程序初始化的时候,从配置文件中读入用户,密码。

步骤

传递给一个helpApi类,这个类专门用来执行登录操作。

help类里面有一个执行调用的方法SetUsernameAndPwd()

这个方法启动了一个线程(对应的方法CallToChilThread1)

这个方法通过FindWindow找到名称为"Sharep ALM Browser"的窗口

然后循环100次。(为什么100次,如果没找到对应的窗口,则休眠1秒,总花费时间100秒)

循环里面通过EnumChildWindows找到对应的登录窗口,

找登录窗口的方式是这样的:遍历EnumChildWindows找到的所有子窗口,如果某个窗口里面的标签包含:Login Name:"的话,则代表是登录窗口,否则休眠1秒。

依次类推密码

这些都找到后,需要找到校验的按钮,以及登录的按钮

找到校验按钮前就会把用户名跟密码设置进去,这里要注意一点,就是设置用户密码使用了SendMessage的方法,所以需要一个SetFocus的消息。

之后延迟1秒,找到认证框,并且点击。

点击使用keybd_event的事件,具体看代码就行了。

找到登录按钮也是一样的方式。

最后

目前QC浏览器的功能我本人已经使用了很久。基本没有什么太大的问题。

后续的开发打算搁置,等闲下来的时候再进行调整(比如添加一个导出的窗口,方便导出QC单)

如果有什么问题,请与我沟通,或者直接在github上提交issue。我有空的 时候会去看看。

温馨提示:
本文最后更新于 2021年01月26日,已超过 741 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我
正文到此结束
该篇文章的评论功能已被站长关闭
本文目录