如何用外挂实现程序自动登录
来源:互联网 发布:js array 排序 编辑:程序博客网 时间:2024/05/10 06:21
前些公司的产品需要做一个自动登录的功能,就像外挂一样,把所有的心得写出来,所有的自动登录的软件的原理基本差不多.希望能起到抛砖引玉的作用.
下面就是要登录的对话框
为了避免公司版本,所以在此去除了公司的信息及LOGO,上面就是一个用户名和密码对话框,点击确定,登录
这个对话框是为C++开发的. 我们的自动登录工具是用DELPHI开发的
下面是我们自动登录的软件的对话框
现在简单介绍下主界面上的各功能的意思:
----------------------------------------文件框----------------------------------------
Login User
自动登录软件的用户名
Login Password
自动登录软件的密码
其他文本框内容跟自动登录无关,不作介绍
----------------------------------------按扭----------------------------------------
Start:启动要登录的主程序(由于主程序是以服务形式存在的,实际上就是启动服务)
Stop:退出已经登录的主程序(停止服务)
思路:
打开主程序,找到用户和密码的TEXT的句柄,输入值,再点击确定按扭,就这么简单
开始动手:
1.首先我们要找到登录窗体的句柄,在DELPHI中这是很简单的,我们可以用获取主窗口标题的方法得到
var
hwndLogin: integer;
hwndLogin := findWindow(nil, 'Welocme Login'); //得到登录窗体的句柄
if hwndLogin > 0 then
begin
EnumChildWindows(hwndLogin, @EnumChildProc, 0); //枚举窗体中的控件
//Wait the Mian Form.
end
else
begin
showmessage('can not find login window,please confirm');
end;
@EnumChildProc 是一个方法
function EnumChildProc(hwnd: HWND; lParam: LPARAM): BOOL; stdcall;
var
WndClassName: array[0..254] of Char;
WndCaption: array[0..254] of Char;
Buf: array[0..254] of Char;
begin
GetClassName(hwnd, WndClassName, 254);
GetWindowText(hwnd, WndCaption, 254);
//此类名可以用Microsoft Visual Studio 6.0 ToolsSpy++工具来获得
//注意在这里文本框的类名是"Edit", 而不是"TEXT"
if trim(string(WndClassName)) = 'Edit' then
begin
if times = 1 then
begin
times := 2;
strPcopy(Buf, username);
//这里就是把用户用sendmessage输入用户名文本框
SendMessage(hwnd, WM_SETTEXT, 254, Integer(@Buf));
end
else
begin
strPcopy(Buf, password);
//这里就是把用户用sendmessage输入密码文本框
SendMessage(hwnd, WM_SETTEXT, 254, Integer(@Buf));
end;
end;
//找到按扭点击OK,进入
if trim(string(WndCaption)) = '&OK' then
begin
SendMessage(hwnd, BM_CLICK, 0, 0);
end;
Result := True;
end;
hwndLogin: integer;
hwndLogin := findWindow(nil, 'Welocme Login'); //得到登录窗体的句柄
if hwndLogin > 0 then
begin
EnumChildWindows(hwndLogin, @EnumChildProc, 0); //枚举窗体中的控件
//Wait the Mian Form.
end
else
begin
showmessage('can not find login window,please confirm');
end;
@EnumChildProc 是一个方法
function EnumChildProc(hwnd: HWND; lParam: LPARAM): BOOL; stdcall;
var
WndClassName: array[0..254] of Char;
WndCaption: array[0..254] of Char;
Buf: array[0..254] of Char;
begin
GetClassName(hwnd, WndClassName, 254);
GetWindowText(hwnd, WndCaption, 254);
//此类名可以用Microsoft Visual Studio 6.0 ToolsSpy++工具来获得
//注意在这里文本框的类名是"Edit", 而不是"TEXT"
if trim(string(WndClassName)) = 'Edit' then
begin
if times = 1 then
begin
times := 2;
strPcopy(Buf, username);
//这里就是把用户用sendmessage输入用户名文本框
SendMessage(hwnd, WM_SETTEXT, 254, Integer(@Buf));
end
else
begin
strPcopy(Buf, password);
//这里就是把用户用sendmessage输入密码文本框
SendMessage(hwnd, WM_SETTEXT, 254, Integer(@Buf));
end;
end;
//找到按扭点击OK,进入
if trim(string(WndCaption)) = '&OK' then
begin
SendMessage(hwnd, BM_CLICK, 0, 0);
end;
Result := True;
end;
- 如何用外挂实现程序自动登录
- 如何用shell脚本实现自动telnet
- 如何用VisualSVN实现自动发送email
- 如何用shell脚本实现自动telnet
- Win10如何用微软账户自动登录电脑
- 如何用java程序实现短信群发
- 如何用VB开发游戏外挂
- 如何用VB开发游戏外挂
- 如何用Delphi做外挂初级版
- 如何用c#制作QQ农场外挂
- 如何用java图形化界面实现一个登录窗口
- BNF范式 如何用C++实现自动推导
- 如何用ABAP实现自动发送外部邮件
- 如何用VB实现Excel文件的自动合并
- 如何用VB实现Excel文件的自动合并
- 如何用ABAP实现自动发送外部邮件
- 如何用ABAP实现自动发送外部邮件
- 配置-如何用ABAP实现自动发送外部邮件
- CascadingDropDown控件
- AJAX 核心内容精髓
- VS2005透过Internet访问VSS2005的设置步骤
- struts连接MySql数据源的写法-Struts Tutorials
- VS2005发布、生成网站时如何设置固定的dll文件名?
- 如何用外挂实现程序自动登录
- 国学经典阅读书目
- 在UNIX上使用CDROM
- 请慎重选择国外软件
- 拼图游戏随机排列生成算法
- VC中的DoDataExchange
- url重写实现任意二级域名或多级域名
- .net 传值
- Eclipse中一直building workspace...的问题